uo_ddlb_scid.sru 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. $PBExportHeader$uo_ddlb_scid.sru
  2. forward
  3. global type uo_ddlb_scid from dropdownlistbox
  4. end type
  5. end forward
  6. global type uo_ddlb_scid from dropdownlistbox
  7. integer width = 247
  8. integer height = 228
  9. integer taborder = 10
  10. integer textsize = -9
  11. integer weight = 400
  12. fontcharset fontcharset = gb2312charset!
  13. fontpitch fontpitch = variable!
  14. string facename = "宋体"
  15. long textcolor = 33554432
  16. boolean sorted = false
  17. boolean vscrollbar = true
  18. borderstyle borderstyle = stylelowered!
  19. end type
  20. global uo_ddlb_scid uo_ddlb_scid
  21. type variables
  22. long uo_scid
  23. long uo_scid_arr[]
  24. end variables
  25. forward prototypes
  26. public function integer p_update_mtrlware (long arg_mtrlid, string arg_mtrlcode, long arg_storageid, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_addqty, decimal arg_price, decimal arg_planprice, long arg_sptid, integer arg_dxflag, string arg_woodcode, string arg_pcode, ref string arg_msg, string arg_waredscrp, datetime arg_inworkdate, decimal dftsptprice, decimal bootqty)
  27. end prototypes
  28. public function integer p_update_mtrlware (long arg_mtrlid, string arg_mtrlcode, long arg_storageid, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_addqty, decimal arg_price, decimal arg_planprice, long arg_sptid, integer arg_dxflag, string arg_woodcode, string arg_pcode, ref string arg_msg, string arg_waredscrp, datetime arg_inworkdate, decimal dftsptprice, decimal bootqty);Int rslt = 1
  29. //Long ls_newid
  30. //String or_err_part
  31. //Decimal ld_cost
  32. ////-------------------------------------------更新库存
  33. ////仓库调拨单,拆装单生成的进出仓单不更新库存表的最近进出时间 090925
  34. //IF billtype = 12 OR billtype = 15 THEN
  35. // UPDATE u_mtrlware
  36. // SET noallocqty = noallocqty + :arg_qty ,
  37. // noallocaddqty = noallocaddqty + :arg_addqty ,
  38. // wareamt = wareamt + round(:arg_qty * :arg_price,2),
  39. // newprice = :arg_price,
  40. // cost = case noallocqty + :arg_qty when 0 then cost else round((wareamt + round(:arg_qty * :arg_price,10)) / ( noallocqty + :arg_qty ),:sys_option_cost_dec) END
  41. // WHERE ( mtrlid = :arg_mtrlid ) AND
  42. // ( plancode = :arg_plancode ) AND
  43. // ( storageid = :arg_storageid ) AND
  44. // ( scid = :scid ) AND
  45. // ( status = :arg_status ) AND
  46. // ( sptid = :arg_sptid) AND
  47. // ( dxflag = :arg_dxflag) AND
  48. // ( woodcode = :arg_woodcode) AND
  49. // ( pcode = :arg_pcode) USING commit_transaction ;
  50. //
  51. //ELSE
  52. // UPDATE u_mtrlware
  53. // SET noallocqty = noallocqty + :arg_qty ,
  54. // noallocaddqty = noallocaddqty + :arg_addqty ,
  55. // wareamt = wareamt + Round(:arg_qty * :arg_price,2),
  56. // waredate = getdate(),
  57. // newprice = :arg_price,
  58. // cost = CASE noallocqty + :arg_qty when 0 THEN cost ELSE Round((wareamt + Round(:arg_qty * :arg_price,10)) / ( noallocqty + :arg_qty ),:sys_option_cost_dec) END,
  59. // waredscrp = :arg_waredscrp,
  60. // inworkdate = :arg_inworkdate
  61. // WHERE ( mtrlid = :arg_mtrlid ) AND
  62. // ( plancode = :arg_plancode ) AND
  63. // ( storageid = :arg_storageid ) AND
  64. // ( scid = :scid ) AND
  65. // ( status = :arg_status ) AND
  66. // ( sptid = :arg_sptid) AND
  67. // ( dxflag = :arg_dxflag) AND
  68. // ( woodcode = :arg_woodcode) AND
  69. // ( pcode = :arg_pcode) USING commit_transaction ;
  70. //
  71. //END IF
  72. //
  73. //
  74. //
  75. //IF commit_transaction.SQLCode = 0 THEN
  76. // IF commit_transaction.SQLNRows = 0 THEN
  77. // ///////////////////////////
  78. // ls_newid = f_sys_scidentity(scid,"u_mtrlware","mtrlwareid",arg_msg,FALSE,commit_transaction)
  79. // IF ls_newid <= 0 THEN
  80. // rslt = 0
  81. // GOTO ext
  82. // END IF
  83. // ///////////////////////////
  84. // ld_cost = Round(arg_price,sys_option_cost_dec)
  85. // INSERT INTO u_mtrlware
  86. // ( scid,
  87. // mtrlwareid,
  88. // mtrlid,
  89. // storageid,
  90. // plancode,
  91. // status,
  92. // noallocqty,
  93. // noallocaddqty,
  94. // allocqty,
  95. // wareamt,
  96. // planprice,
  97. // sptid,
  98. // dxflag,
  99. // woodcode,
  100. // pcode,
  101. // cost,
  102. // newprice,
  103. // waredscrp ,
  104. // inworkdate)
  105. // VALUES (
  106. // :scid,
  107. // :ls_newid,
  108. // :arg_mtrlid,
  109. // :arg_storageid,
  110. // :arg_plancode,
  111. // :arg_status,
  112. // :arg_qty,
  113. // :arg_addqty,
  114. // 0,
  115. // round(:arg_price * :arg_qty,2),
  116. // :arg_planprice,
  117. // :arg_sptid,
  118. // :arg_dxflag,
  119. // :arg_woodcode,
  120. // :arg_pcode,
  121. // :ld_cost,
  122. // :arg_price,
  123. // :arg_waredscrp,
  124. // :arg_inworkdate) USING commit_transaction ;
  125. // IF commit_transaction.SQLCode <> 0 THEN
  126. // rslt = 0
  127. // arg_msg = "因网络或其它原因导致编码["+arg_mtrlcode+"]库存建立操作失败"+"~n"+commit_transaction.SQLErrText
  128. // GOTO ext
  129. // END IF
  130. //
  131. // END IF
  132. //ELSE
  133. // or_err_part = 'create rule'
  134. // String ls_str
  135. // rslt = 0
  136. // IF commit_transaction.SQLCode = 513 OR Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 THEN
  137. // ls_str = commit_transaction.SQLErrText
  138. //
  139. // IF Pos(Lower(commit_transaction.SQLErrText),"noallocqty") > 0 THEN
  140. // arg_msg = "编码["+arg_mtrlcode+"]同仓库内同批号没有足够的库存支持冲减"
  141. // ELSEIF Pos(Lower(commit_transaction.SQLErrText),"noallocaddqty") > 0 THEN
  142. // arg_msg = "编码["+arg_mtrlcode+"]同仓库内同批号没有足够的库存辅数支持冲减"
  143. // END IF
  144. // ELSE
  145. // arg_msg = "因网络或其它原因导致编码["+arg_mtrlcode+"]库存更新操作失败"+"~n"+commit_transaction.SQLErrText
  146. // END IF
  147. // GOTO ext
  148. //END IF
  149. //
  150. ////-----------------------------------更新结存
  151. //Decimal ld_pypkqty,ld_pypkaddqty
  152. //Decimal ld_buyinqty,ld_buyinamt,ld_buyinaddqty
  153. //Decimal ld_cpinqty,ld_cpinamt,ld_cpinaddqty
  154. //Decimal ld_jginqty,ld_jginamt,ld_jginaddqty
  155. //Decimal ld_diinqty,ld_diinamt,ld_diinaddqty
  156. //Decimal ld_mvinqty,ld_mvinamt,ld_mvinaddqty
  157. //Decimal ld_otinqty,ld_otinamt,ld_otinaddqty
  158. //Decimal ld_pyinqty,ld_pyinamt,ld_pyinaddqty
  159. //Decimal ld_recinqty,ld_recinamt,ld_recinaddqty
  160. //Decimal ld_recinqty_th,ld_recinamt_th,ld_recinaddqty_th
  161. //
  162. //CHOOSE CASE billtype
  163. // CASE 1
  164. // ld_buyinqty = arg_qty
  165. // ld_buyinaddqty = arg_addqty
  166. // ld_buyinamt = Round(arg_qty * arg_price,2)
  167. // CASE 3
  168. // ld_cpinqty = arg_qty
  169. // ld_cpinaddqty = arg_addqty
  170. // ld_cpinamt = Round(arg_qty * arg_price,2)
  171. // CASE 4
  172. // ld_jginqty = arg_qty
  173. // ld_jginaddqty = arg_addqty
  174. // ld_jginamt = Round(arg_qty * arg_price,2)
  175. // CASE 8
  176. // ld_otinqty = arg_qty
  177. // ld_otinaddqty = arg_addqty
  178. // ld_otinamt = Round(arg_qty * arg_price,2)
  179. // CASE 9
  180. // ld_pyinqty = arg_qty
  181. // ld_pyinaddqty = arg_addqty
  182. // ld_pyinamt = Round(arg_qty * arg_price,2)
  183. // ld_pypkqty = arg_qty
  184. // ld_pypkaddqty = arg_addqty
  185. // CASE 12
  186. // ld_mvinqty = arg_qty
  187. // ld_mvinaddqty = arg_addqty
  188. // ld_mvinamt = Round(arg_qty * arg_price,2)
  189. // CASE 15
  190. // ld_diinqty = arg_qty
  191. // ld_diinaddqty = arg_addqty
  192. // ld_diinamt = Round(arg_qty * arg_price,2)
  193. // CASE 20
  194. // IF thflag = 1 THEN
  195. // ld_recinqty_th = Abs(arg_qty)
  196. // ld_recinamt_th = Abs(Round(arg_qty * arg_price,2))
  197. // ld_recinaddqty_th = Abs(arg_addqty)
  198. // ld_recinqty = 0
  199. // ld_recinamt = 0
  200. // ld_recinaddqty = 0
  201. // ELSE
  202. // ld_recinqty = arg_qty
  203. // ld_recinaddqty = arg_addqty
  204. // ld_recinamt = Round(arg_qty * arg_price,2)
  205. // ld_recinqty_th = 0
  206. // ld_recinamt_th = 0
  207. // ld_recinaddqty_th = 0
  208. // END IF
  209. //
  210. //END CHOOSE
  211. //
  212. //
  213. //UPDATE u_warebalc
  214. // SET incqty = incqty + :arg_qty ,
  215. // incaddqty = incaddqty + :arg_addqty ,
  216. // incamt = incamt + round(:arg_qty * :arg_price,2),
  217. //
  218. // balcqty = balcqty + :arg_qty,
  219. // balcaddqty = balcaddqty + :arg_addqty,
  220. // balcamt = balcamt + round(:arg_qty * :arg_price,2),
  221. //
  222. // pypk = pypk + :ld_pypkqty,
  223. // pypkaddqty = pypkaddqty + :ld_pypkaddqty,
  224. //
  225. //
  226. // buyinqty = buyinqty + :ld_buyinqty,
  227. // buyinaddqty = buyinaddqty + :ld_buyinaddqty,
  228. // buyinamt = buyinamt + :ld_buyinamt,
  229. //
  230. // cpinqty = cpinqty + :ld_cpinqty,
  231. // cpinaddqty = cpinaddqty + :ld_cpinaddqty,
  232. // cpinamt = cpinamt + :ld_cpinamt,
  233. //
  234. // jginqty = jginqty + :ld_jginqty,
  235. // jginaddqty = jginaddqty + :ld_jginaddqty,
  236. // jginamt = jginamt + :ld_jginamt,
  237. //
  238. // otinqty = otinqty + :ld_otinqty,
  239. // otinaddqty = otinaddqty + :ld_otinaddqty,
  240. // otinamt = otinamt + :ld_otinamt,
  241. //
  242. // mvinqty = mvinqty + :ld_mvinqty,
  243. // mvinaddqty = mvinaddqty + :ld_mvinaddqty,
  244. // mvinamt = mvinamt + :ld_mvinamt,
  245. //
  246. // diinqty = diinqty + :ld_diinqty,
  247. // diinaddqty = diinaddqty + :ld_diinaddqty,
  248. // diinamt = diinamt + :ld_diinamt,
  249. //
  250. // pyinqty = pyinqty + :ld_pyinqty,
  251. // pyinaddqty = pyinaddqty + :ld_pyinaddqty,
  252. // pyinamt = pyinamt + :ld_pyinamt,
  253. //
  254. // recinqty = recinqty+:ld_recinqty,
  255. // recinaddqty = recinaddqty+:ld_recinaddqty,
  256. // recinamt = recinamt+:ld_recinamt,
  257. //
  258. // recinqty_th = recinqty_th+:ld_recinqty_th,
  259. // recinaddqty_th = recinaddqty_th+:ld_recinaddqty_th,
  260. // recinamt_th = recinamt_th+:ld_recinamt_th
  261. //
  262. // WHERE ( mtrlid = :arg_mtrlid ) AND
  263. // ( storageid = :arg_storageid ) AND
  264. // ( balcdateint = 0) AND
  265. // ( status = :arg_status ) AND
  266. // (woodcode = :arg_woodcode) AND
  267. // (pcode = :arg_pcode) AND
  268. // (sptid_cusid = :arg_sptid) USING commit_transaction ;
  269. //IF commit_transaction.SQLCode = 0 THEN
  270. // IF commit_transaction.SQLNRows = 0 THEN
  271. // INSERT INTO u_warebalc
  272. // ( balcdateint,
  273. // sptid_cusid,
  274. // mtrlid,
  275. // storageid,
  276. // bgqty,
  277. // bgamt,
  278. // incqty,
  279. // incaddqty,
  280. // incamt,
  281. // desqty,
  282. // desaddqty,
  283. // desamt,
  284. // balcqty,
  285. // balcaddqty,
  286. // balcamt,
  287. // pypk,
  288. // pypkaddqty,
  289. // status,
  290. // woodcode,
  291. // pcode,
  292. // scid,
  293. // buyinqty,
  294. // buyinaddqty,
  295. // buyinamt,
  296. // cpinqty,
  297. // cpinaddqty,
  298. // cpinamt,
  299. // jginqty,
  300. // jginaddqty,
  301. // jginamt,
  302. // diinqty,
  303. // diinaddqty,
  304. // diinamt,
  305. // mvinqty,
  306. // mvinaddqty,
  307. // mvinamt,
  308. // otinqty,
  309. // otinaddqty,
  310. // otinamt,
  311. // pyinqty,
  312. // pyinaddqty,
  313. // pyinamt,
  314. // recinqty,
  315. // recinaddqty,
  316. // recinamt,
  317. // recinqty_th,
  318. // recinaddqty_th,
  319. // recinamt_th)
  320. // VALUES (
  321. // 0,
  322. // :arg_sptid,
  323. // :arg_mtrlid,
  324. // :arg_storageid,
  325. // 0,
  326. // 0,
  327. // :arg_qty,
  328. // :arg_addqty,
  329. // round(:arg_qty * :arg_price,2),
  330. // 0,
  331. // 0,
  332. // 0,
  333. // :arg_qty,
  334. // :arg_addqty,
  335. // round(:arg_qty * :arg_price,2),
  336. // :ld_pypkqty,
  337. // :ld_pypkaddqty,
  338. // :arg_status,
  339. // :arg_woodcode,
  340. // :arg_pcode,
  341. // :scid,
  342. // :ld_buyinqty,
  343. // :ld_buyinaddqty,
  344. // :ld_buyinamt,
  345. // :ld_cpinqty,
  346. // :ld_cpinaddqty,
  347. // :ld_cpinamt,
  348. // :ld_jginqty,
  349. // :ld_jginaddqty,
  350. // :ld_jginamt,
  351. // :ld_diinqty,
  352. // :ld_diinaddqty,
  353. // :ld_diinamt,
  354. // :ld_mvinqty,
  355. // :ld_mvinaddqty,
  356. // :ld_mvinamt,
  357. // :ld_otinqty,
  358. // :ld_otinaddqty,
  359. // :ld_otinamt,
  360. // :ld_pyinqty,
  361. // :ld_pyinaddqty,
  362. // :ld_pyinamt,
  363. // :ld_recinqty,
  364. // :ld_recinaddqty,
  365. // :ld_recinamt,
  366. // :ld_recinqty_th,
  367. // :ld_recinaddqty_th,
  368. // :ld_recinamt_th
  369. // ) USING commit_transaction ;
  370. // IF commit_transaction.SQLCode <> 0 THEN
  371. // rslt = 0
  372. // arg_msg = "因网络或其它原因导致编码["+arg_mtrlcode+"]结存建立操作失败"+"~n"+commit_transaction.SQLErrText
  373. // GOTO ext
  374. // END IF
  375. // END IF
  376. //ELSE
  377. // rslt = 0
  378. // or_err_part = 'create rule'
  379. // IF commit_transaction.SQLCode = 513 OR Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 THEN
  380. // arg_msg = "编码["+arg_mtrlcode+"]同仓库内同批号没有足够的结存支持冲减"
  381. // ELSE
  382. // arg_msg = "因网络或其它原因导致编码["+arg_mtrlcode+"]结存更新操作失败"+"~n"+commit_transaction.SQLErrText
  383. // END IF
  384. // GOTO ext
  385. //END IF
  386. //
  387. //ext:
  388. //IF rslt = 0 THEN
  389. // ROLLBACK;
  390. //END IF
  391. RETURN rslt
  392. end function
  393. event constructor;Long ls_scid
  394. Long cnt = 0
  395. String ls_scname
  396. long ll_i
  397. string ls_space
  398. int li_spacenum
  399. for ll_i =1 to upperbound(sys_user_scid)
  400. ls_scid = sys_user_scid[ll_i]
  401. SELECT scname
  402. INTO :ls_scname
  403. FROM u_scdef
  404. Where scid = :ls_scid;
  405. if sqlca.sqlcode <> 0 or isnull(ls_scname) then ls_scname = ''
  406. li_spacenum = 50 - len(trim(ls_scname)) - 2 - len(string(ls_scid))
  407. ls_space = fill(' ',li_spacenum)
  408. THIS.AddItem (ls_scname+ls_space+'['+String(ls_scid)+']')
  409. next
  410. THIS.uo_scid = ls_scid
  411. uo_scid_arr[1] = ls_scid
  412. THIS.Text = ls_scname+ls_space+'['+String(ls_scid)+']'
  413. SELECT count(*) INTO :cnt FROM u_scdef ;
  414. IF cnt > 1 THEN
  415. THIS.AddItem ('[全部]')
  416. END IF
  417. end event
  418. event selectionchanged;long ll_scid_arr[]
  419. IF THIS.Text = '[全部]' THEN
  420. uo_scid = -1
  421. ll_scid_arr =sys_user_scid
  422. uo_scid_arr = ll_scid_arr
  423. ELSE
  424. uo_scid = Long(Mid ( THIS.Text,Pos(THIS.Text,'[') + 1,Len(THIS.Text) - Pos(THIS.Text,'[') - 1 ))
  425. ll_scid_arr[1] = uo_scid
  426. uo_scid_arr = ll_scid_arr
  427. END IF
  428. end event
  429. on uo_ddlb_scid.create
  430. end on
  431. on uo_ddlb_scid.destroy
  432. end on