uo_ddlb_sc_wkp.sru 12 KB

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