uo_saletask_will.sru 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324
  1. $PBExportHeader$uo_saletask_will.sru
  2. forward
  3. global type uo_saletask_will from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_saletask_will from nonvisualobject
  7. end type
  8. global uo_saletask_will uo_saletask_will
  9. type variables
  10. long uo_billid
  11. end variables
  12. forward prototypes
  13. public function integer save (s_saletask_will arg_s_will, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  14. public function integer del (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  15. public function integer getinfo (long arg_taskid, ref s_saletask_will arg_s_will, ref string arg_msg)
  16. public function integer caudit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer updatebegin (long arg_taskid, ref string arg_msg)
  18. public function integer stopbill (long arg_taskid, ref string arg_msg, boolean arg_ifcommit)
  19. public function integer add_dscrp (long arg_taskid, string arg_newdescppart, ref string arg_msg)
  20. public function integer audit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit, long arg_taskid_sale, ref string arg_taskcode_ref)
  21. end prototypes
  22. public function integer save (s_saletask_will arg_s_will, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
  23. Long cnt = 0
  24. DateTime server_dt
  25. Long ll_billid,it_mxbt,ll_i,i
  26. String ls_sccode,ls_billcode
  27. IF IsNull(arg_s_will.scid) THEN arg_s_will.scid = 0
  28. IF IsNull(arg_s_will.taskid) THEN arg_s_will.taskid = 0
  29. IF IsNull(arg_s_will.cusid) THEN arg_s_will.cusid = 0
  30. IF IsNull(arg_s_will.typeid) THEN arg_s_will.typeid = 0
  31. IF IsNull(arg_s_will.relcode) THEN arg_s_will.relcode = ''
  32. IF IsNull(arg_s_will.assign_emp) THEN arg_s_will.assign_emp = ''
  33. IF IsNull(arg_s_will.upname) THEN arg_s_will.upname = ''
  34. IF IsNull(arg_s_will.dscrp) THEN arg_s_will.dscrp = ''
  35. IF IsNull(arg_s_will.moneyid) THEN arg_s_will.moneyid = 0
  36. IF IsNull(arg_s_will.mrate) THEN arg_s_will.mrate = 0
  37. IF IsNull(arg_s_will.cus_address) THEN arg_s_will.cus_address = ''
  38. IF IsNull(arg_s_will.rel_rep) THEN arg_s_will.rel_rep = ''
  39. IF IsNull(arg_s_will.cus_tele) THEN arg_s_will.cus_tele = ''
  40. IF IsNull(arg_s_will.cus_fax) THEN arg_s_will.cus_fax = ''
  41. IF IsNull(arg_s_will.freight) THEN arg_s_will.freight = ''
  42. IF IsNull(arg_s_will.freight_tele) THEN arg_s_will.freight_tele = ''
  43. IF IsNull(arg_s_will.station_address) THEN arg_s_will.station_address = ''
  44. IF IsNull(arg_s_will.banktypeid) THEN arg_s_will.banktypeid = 0
  45. IF IsNull(arg_s_will.damt) THEN arg_s_will.damt = 0
  46. IF IsNull(arg_s_will.paytype) THEN arg_s_will.paytype = ''
  47. IF IsNull(arg_s_will.dscrp2) THEN arg_s_will.dscrp2 = ''
  48. IF IsNull(arg_s_will.dscrp3) THEN arg_s_will.dscrp3 = ''
  49. SELECT Top 1 getdate() Into :server_dt From u_user;
  50. IF sqlca.SQLCode <> 0 THEN
  51. rslt = 0
  52. arg_msg = "查询操作失败,日期 "
  53. GOTO ext
  54. END IF
  55. if arg_s_will.cusid = 0 then
  56. rslt = 0
  57. arg_msg = '请选择客户'
  58. goto ext
  59. end if
  60. cnt = 0
  61. SELECT count(*) INTO :cnt
  62. FROM cw_banktype
  63. Where banktypeid = :arg_s_will.banktypeid;
  64. IF sqlca.SQLCode <> 0 THEN
  65. arg_msg = '查询结算方式失败'
  66. rslt = 0
  67. GOTO ext
  68. END IF
  69. IF cnt = 0 THEN
  70. arg_msg = '结算方式不存在'
  71. rslt = 0
  72. GOTO ext
  73. END IF
  74. cnt = 0
  75. SELECT count(*) INTO :cnt
  76. FROM cw_currency
  77. Where moneyid = :arg_s_will.moneyid;
  78. IF sqlca.SQLCode <> 0 THEN
  79. arg_msg = '查询币种失败'
  80. rslt = 0
  81. GOTO ext
  82. END IF
  83. IF cnt = 0 THEN
  84. arg_msg = '币种资料不存在'
  85. rslt = 0
  86. GOTO ext
  87. END IF
  88. IF arg_s_will.mrate = 0 THEN
  89. arg_msg = '币种汇率错误'
  90. rslt = 0
  91. GOTO ext
  92. END IF
  93. IF f_moneyid_rate_check(arg_s_will.moneyid,arg_s_will.mrate,arg_msg) = 0 THEN
  94. rslt = 0
  95. GOTO ext
  96. END IF
  97. it_mxbt = UpperBound(arg_s_will.arg_s_mx)
  98. FOR ll_i = 1 To it_mxbt
  99. IF arg_s_will.arg_s_mx[ll_i].mtrlid = 0 THEN
  100. rslt = 0
  101. arg_msg = '第'+String(ll_i)+'行,请选择一个常规产品'
  102. GOTO ext
  103. END IF
  104. IF arg_s_will.arg_s_mx[ll_i].saleqty <= 0 THEN
  105. rslt = 0
  106. arg_msg = '第'+String(ll_i)+'行,请录入数量'
  107. GOTO ext
  108. END IF
  109. NEXT
  110. IF arg_s_will.taskid = 0 THEN
  111. ll_billid = f_sys_scidentity(0,"u_saletask_will","taskid",arg_msg,True,id_sqlca)
  112. IF ll_billid <= 0 THEN
  113. rslt = 0
  114. GOTO ext
  115. END IF
  116. IF f_get_sccode(arg_s_will.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
  117. rslt = 0
  118. GOTO ext
  119. END IF
  120. ls_billcode = getid(arg_s_will.scid,ls_sccode + 'XW',Date(server_dt),False,sqlca)
  121. IF ls_billcode = "err" THEN
  122. rslt = 0
  123. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  124. GOTO ext
  125. END IF
  126. INSERT INTO u_saletask_will
  127. (scid,
  128. taskid,
  129. taskcode,
  130. cusid,
  131. taskdate,
  132. typeid,
  133. relcode,
  134. assign_emp,
  135. upname,
  136. dscrp,
  137. opemp,
  138. opdate,
  139. moneyid,
  140. mrate,
  141. cus_address,
  142. rel_rep,
  143. cus_tele,
  144. cus_fax,
  145. freight,
  146. freight_tele,
  147. station_address,
  148. banktypeid,
  149. damt,
  150. paytype,
  151. dscrp2,
  152. dscrp3)
  153. VALUES (:arg_s_will.scid,
  154. :ll_billid,
  155. :ls_billcode,
  156. :arg_s_will.cusid,
  157. :arg_s_will.taskdate,
  158. :arg_s_will.typeid,
  159. :arg_s_will.relcode,
  160. :arg_s_will.assign_emp,
  161. :arg_s_will.upname,
  162. :arg_s_will.dscrp,
  163. :arg_opemp,
  164. getdate(),
  165. :arg_s_will.moneyid,
  166. :arg_s_will.mrate,
  167. :arg_s_will.cus_address,
  168. :arg_s_will.rel_rep,
  169. :arg_s_will.cus_tele,
  170. :arg_s_will.cus_fax,
  171. :arg_s_will.freight,
  172. :arg_s_will.freight_tele,
  173. :arg_s_will.station_address,
  174. :arg_s_will.banktypeid,
  175. :arg_s_will.damt,
  176. :arg_s_will.paytype,
  177. :arg_s_will.dscrp2,
  178. :arg_s_will.dscrp3);
  179. IF sqlca.SQLCode <> 0 THEN
  180. rslt = 0
  181. arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
  182. GOTO ext
  183. END IF
  184. uo_billid = ll_billid
  185. ELSE
  186. UPDATE u_saletask_will
  187. SET cusid = :arg_s_will.cusid,
  188. taskdate = :arg_s_will.taskdate,
  189. typeid = :arg_s_will.typeid,
  190. relcode = :arg_s_will.relcode,
  191. assign_emp = :arg_s_will.assign_emp,
  192. upname = :arg_s_will.upname,
  193. dscrp = :arg_s_will.dscrp,
  194. modemp = :arg_opemp,
  195. moddate = getdate(),
  196. moneyid = :arg_s_will.moneyid,
  197. mrate = :arg_s_will.mrate,
  198. cus_address = :arg_s_will.cus_address,
  199. rel_rep = :arg_s_will.rel_rep,
  200. cus_tele = :arg_s_will.cus_tele,
  201. cus_fax = :arg_s_will.cus_fax,
  202. freight = :arg_s_will.freight,
  203. freight_tele = :arg_s_will.freight_tele,
  204. station_address = :arg_s_will.station_address,
  205. banktypeid = :arg_s_will.banktypeid,
  206. damt = :arg_s_will.damt,
  207. paytype = :arg_s_will.paytype,
  208. dscrp2 = :arg_s_will.dscrp2,
  209. dscrp3 = :arg_s_will.dscrp3;
  210. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
  211. rslt = 0
  212. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  213. GOTO ext
  214. END IF
  215. DELETE FROM u_saletaskmx_will
  216. Where taskid = :arg_s_will.taskid;
  217. IF sqlca.SQLCode <> 0 THEN
  218. rslt = 0
  219. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  220. GOTO ext
  221. END IF
  222. uo_billid = arg_s_will.taskid
  223. END IF
  224. FOR ll_i = 1 To it_mxbt
  225. INSERT INTO u_saletaskmx_will
  226. (scid,
  227. taskid,
  228. printid,
  229. kind,
  230. mtrlid,
  231. saleqty,
  232. status,
  233. woodcode,
  234. pcode,
  235. enprice,
  236. mxdscrp,
  237. modeinfo,
  238. color,
  239. userinfo,
  240. requiredate,
  241. outtypestr,
  242. packcnt,
  243. net_weight,
  244. gross_weight,
  245. cubage,
  246. mtrlname_new)
  247. VALUES (:arg_s_will.scid,
  248. :uo_billid,
  249. :arg_s_will.arg_s_mx[ll_i].printid,
  250. :arg_s_will.arg_s_mx[ll_i].kind,
  251. :arg_s_will.arg_s_mx[ll_i].mtrlid,
  252. :arg_s_will.arg_s_mx[ll_i].saleqty,
  253. :arg_s_will.arg_s_mx[ll_i].status,
  254. :arg_s_will.arg_s_mx[ll_i].woodcode,
  255. :arg_s_will.arg_s_mx[ll_i].pcode,
  256. :arg_s_will.arg_s_mx[ll_i].enprice,
  257. :arg_s_will.arg_s_mx[ll_i].mxdscrp,
  258. :arg_s_will.arg_s_mx[ll_i].modeinfo,
  259. :arg_s_will.arg_s_mx[ll_i].color,
  260. :arg_s_will.arg_s_mx[ll_i].userinfo,
  261. :arg_s_will.arg_s_mx[ll_i].requiredate,
  262. :arg_s_will.arg_s_mx[ll_i].outtypestr,
  263. :arg_s_will.arg_s_mx[ll_i].packcnt,
  264. :arg_s_will.arg_s_mx[ll_i].net_weight,
  265. :arg_s_will.arg_s_mx[ll_i].gross_weight,
  266. :arg_s_will.arg_s_mx[ll_i].cubage,
  267. :arg_s_will.arg_s_mx[ll_i].mtrlname_new);
  268. IF sqlca.SQLCode <> 0 THEN
  269. uo_billid = arg_s_will.taskid
  270. rslt = 0
  271. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  272. GOTO ext
  273. END IF
  274. NEXT
  275. ext:
  276. IF rslt = 0 THEN
  277. ROLLBACK;
  278. ELSEIF arg_ifcommit And rslt = 1 THEN
  279. COMMIT;
  280. END IF
  281. RETURN rslt
  282. end function
  283. public function integer del (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  284. Int li_flag
  285. IF arg_taskid <= 0 THEN
  286. rslt = 0
  287. ARG_MSG = '错误单据唯一码'
  288. GOTO ext
  289. END IF
  290. SELECT flag
  291. INTO :li_flag
  292. FROM u_saletask_will
  293. Where taskid = :arg_taskid;
  294. IF sqlca.SQLCode <> 0 THEN
  295. rslt = 0
  296. ARG_MSG = '查询单据审核状态失败,'+sqlca.SQLErrText
  297. GOTO ext
  298. END IF
  299. IF li_flag <> 0 THEN
  300. rslt = 0
  301. ARG_MSG = '单据不是待审核状态,不能删除'
  302. GOTO ext
  303. END IF
  304. DELETE From u_saletask_will Where taskid = :arg_taskid;
  305. IF sqlca.SQLCode <> 0 THEN
  306. rslt = 0
  307. ARG_MSG = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  308. GOTO ext
  309. END IF
  310. DELETE From u_saletaskmx_will Where taskid = :arg_taskid ;
  311. IF sqlca.SQLCode <> 0 THEN
  312. rslt = 0
  313. ARG_MSG = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  314. GOTO ext
  315. END IF
  316. ext:
  317. IF rslt = 0 THEN
  318. ROLLBACK;
  319. ELSEIF rslt = 1 And arg_ifcommit THEN
  320. COMMIT;
  321. END IF
  322. RETURN rslt
  323. end function
  324. public function integer getinfo (long arg_taskid, ref s_saletask_will arg_s_will, ref string arg_msg);Int rslt = 1
  325. Long i = 1,ll_i
  326. s_saletaskmx_will s_mx_arr[]
  327. IF arg_taskid <= 0 THEN
  328. rslt = 0
  329. ARG_MSG = '错误单据唯一码'
  330. GOTO ext
  331. END IF
  332. SELECT scid,
  333. taskcode,
  334. flag,
  335. cusid,
  336. taskdate,
  337. typeid,
  338. relcode,
  339. assign_emp,
  340. upname,
  341. dscrp,
  342. moneyid,
  343. mrate,
  344. cus_address,
  345. rel_rep,
  346. cus_tele,
  347. cus_fax,
  348. freight,
  349. freight_tele,
  350. station_address,
  351. banktypeid,
  352. damt,
  353. paytype,
  354. dscrp2,
  355. dscrp3
  356. INTO :arg_s_will.scid,
  357. :arg_s_will.taskcode,
  358. :arg_s_will.flag,
  359. :arg_s_will.cusid,
  360. :arg_s_will.taskdate,
  361. :arg_s_will.typeid,
  362. :arg_s_will.relcode,
  363. :arg_s_will.assign_emp,
  364. :arg_s_will.upname,
  365. :arg_s_will.dscrp,
  366. :arg_s_will.moneyid,
  367. :arg_s_will.mrate,
  368. :arg_s_will.cus_address,
  369. :arg_s_will.rel_rep,
  370. :arg_s_will.cus_tele,
  371. :arg_s_will.cus_fax,
  372. :arg_s_will.freight,
  373. :arg_s_will.freight_tele,
  374. :arg_s_will.station_address,
  375. :arg_s_will.banktypeid,
  376. :arg_s_will.damt,
  377. :arg_s_will.paytype,
  378. :arg_s_will.dscrp2,
  379. :arg_s_will.dscrp3
  380. FROM u_saletask_will
  381. Where taskid = :arg_taskid;
  382. IF sqlca.SQLCode <> 0 THEN
  383. rslt = 0
  384. ARG_MSG = '查询单据内容失败(错误单据唯一码)'
  385. GOTO ext
  386. END IF
  387. DECLARE cur_mx CURSOR FOR
  388. SELECT u_saletaskmx_will.printid,
  389. u_saletaskmx_will.kind,
  390. u_saletaskmx_will.mtrlid,
  391. u_mtrldef.mtrlname,
  392. u_saletaskmx_will.saleqty,
  393. u_saletaskmx_will.status,
  394. u_saletaskmx_will.woodcode,
  395. u_saletaskmx_will.pcode,
  396. u_saletaskmx_will.enprice,
  397. u_saletaskmx_will.mxdscrp,
  398. u_saletaskmx_will.mtrlid_new,
  399. u_mtrldef_new.mtrlcode,
  400. u_saletaskmx_will.requiredate,
  401. u_mtrldef.mtrlcode,
  402. u_saletaskmx_will.outtypestr,
  403. u_saletaskmx_will.packcnt,
  404. u_saletaskmx_will.net_weight,
  405. u_saletaskmx_will.gross_weight,
  406. u_saletaskmx_will.cubage,
  407. u_saletaskmx_will.mtrlname_new
  408. FROM u_saletaskmx_will INNER JOIN
  409. u_mtrldef ON u_saletaskmx_will.mtrlid = u_mtrldef.mtrlid LEFT OUTER JOIN
  410. u_mtrldef u_mtrldef_new ON u_saletaskmx_will.mtrlid_new = u_mtrldef_new.mtrlid
  411. WHERE u_saletaskmx_will.taskid = :arg_taskid
  412. Order By u_saletaskmx_will.printid;
  413. OPEN cur_mx;
  414. FETCH cur_mx INTO :s_mx_arr[i].printid,
  415. :s_mx_arr[i].kind,
  416. :s_mx_arr[i].mtrlid,
  417. :s_mx_arr[i].mtrlname,
  418. :s_mx_arr[i].saleqty,
  419. :s_mx_arr[i].status,
  420. :s_mx_arr[i].woodcode,
  421. :s_mx_arr[i].pcode,
  422. :s_mx_arr[i].enprice,
  423. :s_mx_arr[i].mxdscrp,
  424. :s_mx_arr[i].mtrlid_new,
  425. :s_mx_arr[i].mtrlcode_new,
  426. :s_mx_arr[i].requiredate,
  427. :s_mx_arr[i].mtrlcode,
  428. :s_mx_arr[i].outtypestr,
  429. :s_mx_arr[i].packcnt,
  430. :s_mx_arr[i].net_weight,
  431. :s_mx_arr[i].gross_weight,
  432. :s_mx_arr[i].cubage,
  433. :s_mx_arr[i].mtrlname_new;
  434. DO WHILE sqlca.SQLCode = 0
  435. i++
  436. FETCH cur_mx INTO :s_mx_arr[i].printid,
  437. :s_mx_arr[i].kind,
  438. :s_mx_arr[i].mtrlid,
  439. :s_mx_arr[i].mtrlname,
  440. :s_mx_arr[i].saleqty,
  441. :s_mx_arr[i].status,
  442. :s_mx_arr[i].woodcode,
  443. :s_mx_arr[i].pcode,
  444. :s_mx_arr[i].enprice,
  445. :s_mx_arr[i].mxdscrp,
  446. :s_mx_arr[i].mtrlid_new,
  447. :s_mx_arr[i].mtrlcode_new,
  448. :s_mx_arr[i].requiredate,
  449. :s_mx_arr[i].mtrlcode,
  450. :s_mx_arr[i].outtypestr,
  451. :s_mx_arr[i].packcnt,
  452. :s_mx_arr[i].net_weight,
  453. :s_mx_arr[i].gross_weight,
  454. :s_mx_arr[i].cubage,
  455. :s_mx_arr[i].mtrlname_new;
  456. LOOP
  457. FOR ll_i = 1 To i - 1
  458. arg_s_will.arg_s_mx[ll_i].printid = s_mx_arr[ll_i].printid
  459. arg_s_will.arg_s_mx[ll_i].Kind = s_mx_arr[ll_i].Kind
  460. arg_s_will.arg_s_mx[ll_i].mtrlid = s_mx_arr[ll_i].mtrlid
  461. arg_s_will.arg_s_mx[ll_i].mtrlname = s_mx_arr[ll_i].mtrlname
  462. arg_s_will.arg_s_mx[ll_i].saleqty = s_mx_arr[ll_i].saleqty
  463. arg_s_will.arg_s_mx[ll_i].status = s_mx_arr[ll_i].status
  464. arg_s_will.arg_s_mx[ll_i].woodcode = s_mx_arr[ll_i].woodcode
  465. arg_s_will.arg_s_mx[ll_i].pcode = s_mx_arr[ll_i].pcode
  466. arg_s_will.arg_s_mx[ll_i].enprice = s_mx_arr[ll_i].enprice
  467. arg_s_will.arg_s_mx[ll_i].mxdscrp = s_mx_arr[ll_i].mxdscrp
  468. arg_s_will.arg_s_mx[ll_i].mtrlid_new = s_mx_arr[ll_i].mtrlid_new
  469. arg_s_will.arg_s_mx[ll_i].mtrlcode_new = s_mx_arr[ll_i].mtrlcode_new
  470. arg_s_will.arg_s_mx[ll_i].requiredate = s_mx_arr[ll_i].requiredate
  471. arg_s_will.arg_s_mx[ll_i].mtrlcode = s_mx_arr[ll_i].mtrlcode
  472. arg_s_will.arg_s_mx[ll_i].outtypestr = s_mx_arr[ll_i].outtypestr
  473. arg_s_will.arg_s_mx[ll_i].packcnt = s_mx_arr[ll_i].packcnt
  474. arg_s_will.arg_s_mx[ll_i].net_weight = s_mx_arr[ll_i].net_weight
  475. arg_s_will.arg_s_mx[ll_i].gross_weight = s_mx_arr[ll_i].gross_weight
  476. arg_s_will.arg_s_mx[ll_i].cubage = s_mx_arr[ll_i].cubage
  477. arg_s_will.arg_s_mx[ll_i].mtrlname_new = s_mx_arr[ll_i].mtrlname_new
  478. NEXT
  479. ext:
  480. RETURN rslt
  481. end function
  482. public function integer caudit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  483. Long ll_reltaskid,ll_scid,cnt
  484. datetime ldt_null
  485. setnull(ldt_null)
  486. uo_saletask obj_saletask
  487. obj_saletask = Create uo_saletask
  488. obj_saletask.commit_transaction = sqlca
  489. SELECT reltaskid,scid
  490. INTO :ll_reltaskid,:ll_scid
  491. FROM u_saletask_will
  492. Where taskid = :arg_taskid;
  493. IF sqlca.SQLCode <> 0 THEN
  494. rslt = 0
  495. arg_msg = '查询相关销售订单信息失败,'+sqlca.SQLErrText
  496. GOTO ext
  497. END IF
  498. SELECT count(*)
  499. INTO :cnt
  500. FROM u_saletask
  501. WHERE scid = :ll_scid
  502. And taskid = :ll_reltaskid;
  503. IF sqlca.SQLCode <> 0 THEN
  504. rslt = 0
  505. arg_msg = '查询相关销售订单是否存在失败,'+sqlca.SQLErrText
  506. GOTO ext
  507. END IF
  508. IF cnt = 1 THEN
  509. //删除相关销售订单
  510. IF obj_saletask.Cancel(ll_scid,ll_reltaskid,arg_msg,False) = 0 THEN
  511. rslt = 0
  512. arg_msg = '删除相关销售订单失败,'+arg_msg
  513. GOTO ext
  514. END IF
  515. END IF
  516. //更新销售意向单状态及相关销售订单ID
  517. UPDATE u_saletask_will
  518. SET reltaskid = 0,
  519. auditemp = '',
  520. auditdate = :ldt_null,
  521. flag = 0
  522. Where taskid = :arg_taskid;
  523. IF sqlca.SQLCode <> 0 THEN
  524. rslt = 0
  525. arg_msg = '更新相关销售订单ID到销售意向单失败,'+sqlca.SQLErrText
  526. GOTO ext
  527. END IF
  528. ext:
  529. IF rslt = 0 THEN
  530. ROLLBACK;
  531. ELSEIF rslt = 1 And arg_ifcommit THEN
  532. COMMIT;
  533. END IF
  534. destroy obj_saletask
  535. RETURN rslt
  536. end function
  537. public function integer updatebegin (long arg_taskid, ref string arg_msg);Int rslt = 1
  538. Long li_flag
  539. IF arg_taskid <= 0 THEN
  540. rslt = 0
  541. arg_msg = '错误单据唯一码'
  542. GOTO ext
  543. END IF
  544. SELECT flag
  545. INTO :li_flag
  546. FROM u_saletask_will
  547. Where taskid = :arg_taskid;
  548. IF sqlca.SQLCode <> 0 THEN
  549. rslt = 0
  550. arg_msg = '查询单据状态失败,'+sqlca.SQLErrText
  551. GOTO ext
  552. END IF
  553. IF li_flag <> 0 THEN
  554. rslt = 0
  555. arg_msg = '单据不是在待审核状态,不可以修改,请核对'
  556. GOTO ext
  557. END IF
  558. ext:
  559. RETURN rslt
  560. end function
  561. public function integer stopbill (long arg_taskid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  562. Long li_flag
  563. IF arg_taskid <= 0 THEN
  564. rslt = 0
  565. arg_msg = '错误单据唯一码'
  566. GOTO ext
  567. END IF
  568. SELECT flag
  569. INTO :li_flag
  570. FROM u_saletask_will
  571. Where taskid = :arg_taskid;
  572. IF sqlca.SQLCode <> 0 THEN
  573. rslt = 0
  574. arg_msg = '查询单据状态失败,'+sqlca.SQLErrText
  575. GOTO ext
  576. END IF
  577. IF li_flag <> 0 THEN
  578. rslt = 0
  579. arg_msg = '单据不是在待审核状态,不可以终止'
  580. GOTO ext
  581. END IF
  582. UPDATE u_saletask_will
  583. SET flag = 2
  584. Where taskid = :arg_taskid;
  585. IF sqlca.SQLCode <> 0 THEN
  586. rslt = 0
  587. arg_msg = '更新单据状态失败,'+sqlca.SQLErrText
  588. GOTO ext
  589. END IF
  590. ext:
  591. IF rslt = 0 THEN
  592. ROLLBACK;
  593. ELSEIF arg_ifcommit AND rslt = 1 THEN
  594. COMMIT;
  595. END IF
  596. RETURN rslt
  597. end function
  598. public function integer add_dscrp (long arg_taskid, string arg_newdescppart, ref string arg_msg);
  599. Int rslt = 1
  600. Long ll_flag
  601. IF arg_newdescppart = '' THEN
  602. rslt = 0
  603. arG_MSG = "要添加内容为空,操作取消"
  604. GOTO ext
  605. END IF
  606. SELECT flag
  607. INTO :ll_flag
  608. FROM u_saletask_will
  609. Where taskid = :arg_taskid;
  610. IF sqlca.SQLCode <> 0 THEN
  611. rslt = 0
  612. arG_MSG = '查询单据状态失败,'+sqlca.SQLErrText
  613. GOTO ext
  614. END IF
  615. IF ll_flag = 0 THEN
  616. rslt = 0
  617. arG_MSG = "待审核状态下不可用"
  618. GOTO ext
  619. END IF
  620. UPDATE u_saletask_will
  621. SET dscrp = dscrp+' '+:arg_newdescppart
  622. Where taskid = :arg_taskid;
  623. IF sqlca.SQLCode <> 0 THEN
  624. rslt = 0
  625. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+sqlca.SQLErrText
  626. GOTO ext
  627. END IF
  628. ext:
  629. IF rslt = 1 THEN
  630. COMMIT;
  631. ELSE
  632. ROLLBACK;
  633. END IF
  634. Return (rslt)
  635. end function
  636. public function integer audit (long arg_taskid, ref string arg_msg, boolean arg_ifcommit, long arg_taskid_sale, ref string arg_taskcode_ref);Int rslt = 1
  637. Long ll_i,ll_j
  638. String ls_mtrlcode_new
  639. Long ll_mtrlid_new
  640. s_edit_index_tran arg_s_tran
  641. s_mtrldef arg_s_return
  642. String Address, tele, faxno,stat_rep,stat_handtel,stat_address,freight_tele,freight,rep
  643. Long banktypeid,moneyid
  644. String ls_freight_tele
  645. DateTime ld_requiredate
  646. String ls_mtrlcode
  647. Long ll_mtrlid
  648. String pfgroup
  649. Long sonmtrlid,wrkgrpid
  650. String sonpfcode
  651. Int ifreputate,ifover
  652. Decimal updownrate,Sonscale, SonLoss,SonDECLosS,Sonahead
  653. String dscrp
  654. Decimal pfgroupqty
  655. String pfgroupmode,promode,status,woodcode,pcode
  656. Int mtrlkind
  657. String pfklmode
  658. Int dipztype
  659. Decimal scllloss
  660. Int dytype
  661. Decimal advancetime,sclldecloss ,baseqty
  662. String SonLossstr
  663. Decimal buyarg
  664. Int scllqtytype,if_follow
  665. Decimal lasthour
  666. Long modleid
  667. String modlename,wenli,fengbian,paikong,luoji,penyou,azcode
  668. String ls_mtrlcode_pack_new
  669. String pfcode
  670. s_saletask_will s_will
  671. uo_saletask obj_saletask
  672. obj_saletask = Create uo_saletask
  673. obj_saletask.commit_transaction = sqlca
  674. IF getinfo(arg_taskid,s_will,arg_msg) = 0 THEN
  675. rslt = 0
  676. GOTO ext
  677. END IF
  678. IF s_will.flag <> 0 THEN
  679. rslt = 0
  680. arg_msg = '单据不是待审核,不能审核'
  681. GOTO ext
  682. END IF
  683. //生成新的编码
  684. FOR ll_i = 1 To UpperBound(s_will.arg_s_mx)
  685. IF s_will.arg_s_mx[ll_i].Kind = 0 THEN CONTINUE
  686. ls_mtrlcode_new = Trim(s_will.taskcode)+'.'+String(s_will.arg_s_mx[ll_i].printid,'000')
  687. arg_s_tran.a_long = s_will.arg_s_mx[ll_i].mtrlid
  688. arg_s_tran.b_string = ls_mtrlcode_new
  689. IF s_will.arg_s_mx[ll_i].mtrlname_new = '' THEN
  690. arg_s_tran.c_string = s_will.arg_s_mx[ll_i].mtrlname
  691. ELSE
  692. arg_s_tran.c_string = s_will.arg_s_mx[ll_i].mtrlname_new
  693. END IF
  694. arg_s_tran.d_string = s_will.arg_s_mx[ll_i].modeinfo
  695. arg_s_tran.e_string = s_will.arg_s_mx[ll_i].userinfo
  696. arg_s_tran.f_string = s_will.arg_s_mx[ll_i].Color
  697. arg_s_tran.b_long = 1 //仓库
  698. IF s_will.arg_s_mx[ll_i].Kind = 2 THEN
  699. //订制产品不需要复制清单,会根据包件数重组清单
  700. arg_s_tran.c_long = 0 //清单
  701. ELSE
  702. arg_s_tran.c_long = 1
  703. END IF
  704. arg_s_tran.d_long = 1 //工价表
  705. IF f_mtrl_add_copy_with_commit(arg_s_tran,arg_msg,arg_s_return,False) = 0 THEN
  706. rslt = 0
  707. arg_msg = '第'+String(s_will.arg_s_mx[ll_i].printid)+'行,生成非标或订制产品资料失败,'+arg_msg
  708. GOTO ext
  709. END IF
  710. s_will.arg_s_mx[ll_i].mtrlid_new = arg_s_return.mtrlid
  711. //如果是订制类,要根据"包件数"自动生成下级包件编码,并组成新的物料清单
  712. IF s_will.arg_s_mx[ll_i].Kind = 2 THEN
  713. SELECT top 1 u_PrdPF.pfgroup,
  714. u_PrdPF.SonMtrlid,
  715. u_PrdPF.wrkgrpid,
  716. u_PrdPF.sonpfcode,
  717. u_PrdPF.ifreputate,
  718. u_PrdPF.ifover,
  719. u_PrdPF.updownrate,
  720. u_PrdPF.Sonscale,
  721. u_PrdPF.SonLoss,
  722. u_PrdPF.SonDECLosS,
  723. u_PrdPF.Sonahead,
  724. u_PrdPF.dscrp,
  725. u_PrdPF.pfgroupqty,
  726. u_PrdPF.pfgroupmode,
  727. u_PrdPF.promode,
  728. u_PrdPF.status,
  729. u_PrdPF.woodcode,
  730. u_PrdPF.pcode,
  731. u_PrdPF.mtrlkind,
  732. u_PrdPF.pfklmode,
  733. u_PrdPF.dipztype,
  734. u_PrdPF.scllloss,
  735. u_PrdPF.dytype,
  736. u_PrdPF.advancetime,
  737. u_PrdPF.sclldecloss,
  738. u_PrdPF.baseqty,
  739. u_PrdPF.SonLossstr,
  740. u_PrdPF.buyarg,
  741. u_PrdPF.scllqtytype,
  742. u_PrdPF.if_follow,
  743. u_PrdPF.lasthour,
  744. u_PrdPF.modleid,
  745. u_PrdPF.modlename,
  746. u_PrdPF.wenli,
  747. u_PrdPF.fengbian,
  748. u_PrdPF.paikong,
  749. u_PrdPF.luoji,
  750. u_PrdPF.penyou,
  751. u_PrdPF.azcode,
  752. u_PrdPF.pfcode
  753. INTO :pfgroup,
  754. :SonMtrlid,
  755. :wrkgrpid,
  756. :sonpfcode,
  757. :ifreputate,
  758. :ifover,
  759. :updownrate,
  760. :Sonscale,
  761. :SonLoss,
  762. :SonDECLosS,
  763. :Sonahead,
  764. :dscrp,
  765. :pfgroupqty,
  766. :pfgroupmode,
  767. :promode,
  768. :status,
  769. :woodcode,
  770. :pcode,
  771. :mtrlkind,
  772. :pfklmode,
  773. :dipztype,
  774. :scllloss,
  775. :dytype,
  776. :advancetime,
  777. :sclldecloss,
  778. :baseqty,
  779. :SonLossstr,
  780. :buyarg,
  781. :scllqtytype,
  782. :if_follow,
  783. :lasthour,
  784. :modleid,
  785. :modlename,
  786. :wenli,
  787. :fengbian,
  788. :paikong,
  789. :luoji,
  790. :penyou,
  791. :azcode,
  792. :pfcode
  793. FROM u_mtrl_pf INNER JOIN
  794. u_PrdPF ON u_mtrl_pf.Mtrlid = u_PrdPF.mtrlid AND
  795. u_mtrl_pf.pfcode = u_PrdPF.pfcode
  796. WHERE (u_mtrl_pf.Ifdft = 1)
  797. And (u_mtrl_pf.mtrlid = :s_will.arg_s_mx[ll_i].mtrlid);
  798. IF sqlca.SQLCode <> 0 THEN
  799. rslt = 0
  800. arg_msg = '查询常规编码物料清单失败,请检查常规编码是否已设清单,'+sqlca.SQLErrText
  801. GOTO ext
  802. END IF
  803. //生成新的包件编码
  804. FOR ll_j = 1 To s_will.arg_s_mx[ll_i].packcnt
  805. ls_mtrlcode_pack_new = ls_mtrlcode_new+'.'+String(ll_j,'00')
  806. arg_s_tran.a_long = sonmtrlid
  807. arg_s_tran.b_string = ls_mtrlcode_pack_new
  808. IF s_will.arg_s_mx[ll_i].mtrlname_new = '' THEN
  809. arg_s_tran.c_string = s_will.arg_s_mx[ll_i].mtrlname+'.包件'+String(ll_j,'00')
  810. ELSE
  811. arg_s_tran.c_string = s_will.arg_s_mx[ll_i].mtrlname_new+'.包件'+String(ll_j,'00')
  812. END IF
  813. arg_s_tran.e_string = s_will.arg_s_mx[ll_i].userinfo
  814. arg_s_tran.b_long = 1 //仓库
  815. arg_s_tran.c_long = 0 //清单
  816. arg_s_tran.d_long = 1 //工价表
  817. IF f_mtrl_add_copy_with_commit(arg_s_tran,arg_msg,arg_s_return,False) = 0 THEN
  818. rslt = 0
  819. arg_msg = '第'+String(s_will.arg_s_mx[ll_i].printid)+'行,生成第'+String(ll_j)+'个包件资料失败,'+arg_msg
  820. GOTO ext
  821. END IF
  822. // s_will.arg_s_mx[ll_i].mtrlid_new = arg_s_return.mtrlid
  823. INSERT INTO u_PrdPF
  824. (pfgroup,
  825. SonMtrlid,
  826. wrkgrpid,
  827. sonpfcode,
  828. ifreputate,
  829. ifover,
  830. updownrate,
  831. Sonscale,
  832. SonLoss,
  833. SonDECLosS,
  834. Sonahead,
  835. dscrp,
  836. pfgroupqty,
  837. pfgroupmode,
  838. promode,
  839. status,
  840. woodcode,
  841. pcode,
  842. mtrlkind,
  843. pfklmode,
  844. dipztype,
  845. scllloss,
  846. dytype,
  847. advancetime,
  848. sclldecloss,
  849. baseqty,
  850. SonLossstr,
  851. buyarg,
  852. scllqtytype,
  853. if_follow,
  854. lasthour,
  855. modleid,
  856. modlename,
  857. wenli,
  858. fengbian,
  859. paikong,
  860. luoji,
  861. penyou,
  862. azcode,
  863. printid,
  864. mtrlid,
  865. pfcode)
  866. VALUES (:pfgroup,
  867. :arg_s_return.mtrlid,
  868. :wrkgrpid,
  869. :sonpfcode,
  870. :ifreputate,
  871. :ifover,
  872. :updownrate,
  873. :sonscale,
  874. :sonloss,
  875. :sondecloss,
  876. :sonahead,
  877. :dscrp,
  878. :pfgroupqty,
  879. :pfgroupmode,
  880. :promode,
  881. :status,
  882. :woodcode,
  883. :pcode,
  884. :mtrlkind,
  885. :pfklmode,
  886. :dipztype,
  887. :scllloss,
  888. :dytype,
  889. :advancetime,
  890. :sclldecloss,
  891. :baseqty,
  892. :sonlossstr,
  893. :buyarg,
  894. :scllqtytype,
  895. :if_follow,
  896. :lasthour,
  897. :modleid,
  898. :modlename,
  899. :wenli,
  900. :fengbian,
  901. :paikong,
  902. :luoji,
  903. :penyou,
  904. :azcode,
  905. :ll_j,
  906. :s_will.arg_s_mx[ll_i].mtrlid_new,
  907. :pfcode);
  908. IF sqlca.SQLCode <> 0 THEN
  909. rslt = 0
  910. arg_msg = '第'+String(s_will.arg_s_mx[ll_i].printid)+'行,生成清单失败,第'+String(ll_j)+'个包件资料,'+sqlca.SQLErrText
  911. GOTO ext
  912. END IF
  913. NEXT
  914. END IF
  915. NEXT
  916. //SELECT address,
  917. // tele,
  918. // faxno,
  919. // banktypeid,
  920. // moneyid,
  921. // stat_rep,
  922. // stat_handtel,
  923. // stat_address,
  924. // freight_tele,
  925. // freight,
  926. // rep
  927. // INTO :Address,
  928. // :tele,
  929. // :faxno,
  930. // :banktypeid,
  931. // :moneyid,
  932. // :stat_rep,
  933. // :stat_handtel,
  934. // :stat_address,
  935. // :freight_tele,
  936. // :freight,
  937. // :rep
  938. // FROM u_cust
  939. // Where cusid = :s_will.cusid;
  940. //IF sqlca.SQLCode <> 0 THEN
  941. // rslt = 0
  942. // arg_msg = '查询客户信息失败,'+sqlca.SQLErrText
  943. // GOTO ext
  944. //END IF
  945. //
  946. //IF banktypeid = 0 THEN
  947. // //如果客户没有设置默认结算方式,则这个客户最近一次销售订单的结算方式
  948. // SELECT top 1 banktypeid
  949. // INTO :banktypeid
  950. // FROM u_SaleTask
  951. // WHERE cusid = :s_will.cusid
  952. // Order By taskid Desc;
  953. // IF sqlca.SQLCode <> 0 THEN
  954. // //如果客户没有订单,则取第一个结算方式
  955. // SELECT top 1 banktypeid
  956. // INTO :banktypeid
  957. // FROM cw_banktype
  958. // WHERE banktype = 0
  959. // And inuse = 1 ;
  960. // IF sqlca.SQLCode <> 0 THEN
  961. // rslt = 0
  962. // arg_msg = '建立相关销售订单失败,没找到合适的结算方式'
  963. // GOTO ext
  964. // END IF
  965. // END IF
  966. //END IF
  967. //
  968. //IF moneyid = 0 THEN
  969. // //如果客户没有设置默认币种,则这个客户最近一次销售订单的币种
  970. // SELECT top 1 moneyid
  971. // INTO :moneyid
  972. // FROM u_SaleTask
  973. // WHERE cusid = :s_will.cusid
  974. // Order By taskid Desc;
  975. // IF sqlca.SQLCode <> 0 THEN
  976. // //如果客户没有订单,则取本位币
  977. // SELECT top 1 moneyid
  978. // INTO :moneyid
  979. // FROM cw_currency
  980. // Where native = 1;
  981. // IF sqlca.SQLCode <> 0 THEN
  982. // rslt = 0
  983. // arg_msg = '建立相关销售订单失败,没找到合适的币种'
  984. // GOTO ext
  985. // END IF
  986. // END IF
  987. //END IF
  988. //
  989. //
  990. //IF stat_rep <> '' THEN
  991. // ls_freight_tele = stat_rep
  992. //END IF
  993. //
  994. //IF freight_tele <> '' THEN
  995. // IF ls_freight_tele = '' THEN
  996. // ls_freight_tele = freight_tele
  997. // ELSE
  998. // ls_freight_tele = ls_freight_tele + ':' + freight_tele
  999. // END IF
  1000. //END IF
  1001. //
  1002. //IF stat_handtel <> '' THEN
  1003. // IF ls_freight_tele = '' THEN
  1004. // ls_freight_tele = stat_handtel
  1005. // ELSE
  1006. // IF freight_tele = '' THEN
  1007. // ls_freight_tele = ls_freight_tele + ':' + stat_handtel
  1008. // ELSE
  1009. // ls_freight_tele = ls_freight_tele + '/' + stat_handtel
  1010. // END IF
  1011. // END IF
  1012. //END IF
  1013. //生成销售订单
  1014. IF obj_saletask.newbegin(s_will.scid,arg_msg) = 0 THEN
  1015. rslt = 0
  1016. arg_msg = '建立相关销售订单失败,'+arg_msg
  1017. GOTO ext
  1018. END IF
  1019. FOR ll_i = 1 To UpperBound(s_will.arg_s_mx)
  1020. IF ld_requiredate < s_will.arg_s_mx[ll_i].requiredate THEN
  1021. ld_requiredate = s_will.arg_s_mx[ll_i].requiredate
  1022. END IF
  1023. NEXT
  1024. obj_saletask.requiredate = ld_requiredate
  1025. obj_saletask.assign_emp = s_will.assign_emp
  1026. obj_saletask.upname = s_will.upname
  1027. obj_saletask.Kind = 1
  1028. obj_saletask.cusid = s_will.cusid
  1029. obj_saletask.dscrp = s_will.dscrp
  1030. obj_saletask.dscrp2 = s_will.dscrp2
  1031. obj_saletask.taskdate = s_will.taskdate
  1032. obj_saletask.banktypeid = s_will.banktypeid
  1033. obj_saletask.moneyid = s_will.moneyid
  1034. obj_saletask.damt = s_will.damt
  1035. obj_saletask.otheramt = 0
  1036. obj_saletask.relcode = s_will.taskcode
  1037. obj_saletask.paytype = s_will.paytype
  1038. obj_saletask.freight = s_will.freight
  1039. obj_saletask.freight_tele = s_will.freight_tele
  1040. obj_saletask.cus_address = s_will.cus_address
  1041. obj_saletask.cus_tele = s_will.cus_tele
  1042. obj_saletask.cus_fax = s_will.cus_fax
  1043. obj_saletask.mrate = s_will.mrate //f_get_mrate(moneyid)
  1044. obj_saletask.typeid = s_will.typeid
  1045. obj_saletask.rel_rep = s_will.rel_rep
  1046. // obj_saletask.Level = s_will.level
  1047. // obj_saletask.sendTime = s_will.sendTime
  1048. // obj_saletask.sendUser = s_will.sendUser
  1049. // obj_saletask.fiebrelcode = s_will.fiebrelcode
  1050. obj_saletask.dscrp3 = s_will.dscrp3
  1051. // obj_saletask.exchangeid = s_will.exchangeid
  1052. obj_saletask.station_address = s_will.station_address
  1053. FOR ll_i = 1 To UpperBound(s_will.arg_s_mx)
  1054. IF s_will.arg_s_mx[ll_i].Kind = 0 THEN
  1055. ls_mtrlcode = s_will.arg_s_mx[ll_i].mtrlcode
  1056. ll_mtrlid = s_will.arg_s_mx[ll_i].mtrlid
  1057. ELSE
  1058. ls_mtrlcode = s_will.arg_s_mx[ll_i].mtrlcode_new
  1059. ll_mtrlid = s_will.arg_s_mx[ll_i].mtrlid_new
  1060. END IF
  1061. IF obj_saletask.acceptmx(ll_mtrlid,&
  1062. s_will.arg_s_mx[ll_i].saleqty,&
  1063. s_will.arg_s_mx[ll_i].enprice,&
  1064. 1,&
  1065. s_will.arg_s_mx[ll_i].mxdscrp,&
  1066. '',&
  1067. ls_mtrlcode,&
  1068. s_will.arg_s_mx[ll_i].status,&
  1069. s_will.arg_s_mx[ll_i].woodcode,&
  1070. s_will.arg_s_mx[ll_i].pcode,&
  1071. '',&
  1072. ll_i,&
  1073. '',&
  1074. s_will.arg_s_mx[ll_i].requiredate,&
  1075. 0,&
  1076. 0,&
  1077. '',&
  1078. 0,&
  1079. '',&
  1080. 0,&
  1081. 0,&
  1082. '',&
  1083. 0,&
  1084. 0,&
  1085. '',&
  1086. 0,&
  1087. s_will.arg_s_mx[ll_i].net_weight,&
  1088. s_will.arg_s_mx[ll_i].gross_weight,&
  1089. s_will.arg_s_mx[ll_i].cubage,&
  1090. 0,&
  1091. '',&
  1092. arg_msg) = 0 THEN
  1093. rslt = 0
  1094. arg_msg = '第'+String(ll_i)+'行保存订单明细失败,'+arg_msg
  1095. GOTO ext
  1096. END IF
  1097. NEXT
  1098. IF arg_taskid_sale = 0 THEN
  1099. IF obj_saletask.savesubmit(publ_operator,arg_msg,False) = 0 THEN
  1100. rslt = 0
  1101. arg_msg = '保存相关销售订单失败,'+arg_msg
  1102. GOTO ext
  1103. END IF
  1104. ELSE
  1105. IF obj_saletask.uof_add_mx(s_will.scid,arg_taskid_sale,arg_msg,False) = 0 THEN
  1106. rslt = 0
  1107. arg_msg = '补充明细到相关销售订单失败,'+arg_msg
  1108. GOTO ext
  1109. END IF
  1110. END IF
  1111. //更新销售意向单状态及相关销售订单ID
  1112. UPDATE u_saletask_will
  1113. SET reltaskid = :obj_saletask.taskid,
  1114. auditemp = :publ_operator,
  1115. auditdate = getdate(),
  1116. flag = 1
  1117. Where taskid = :arg_taskid;
  1118. IF sqlca.SQLCode <> 0 THEN
  1119. rslt = 0
  1120. arg_msg = '更新相关销售订单ID到销售意向单失败,'+sqlca.SQLErrText
  1121. GOTO ext
  1122. END IF
  1123. arg_taskcode_ref = obj_saletask.taskcode
  1124. ext:
  1125. IF rslt = 0 THEN
  1126. ROLLBACK;
  1127. ELSEIF rslt = 1 And arg_ifcommit THEN
  1128. COMMIT;
  1129. END IF
  1130. Destroy obj_saletask
  1131. RETURN rslt
  1132. end function
  1133. on uo_saletask_will.create
  1134. call super::create
  1135. TriggerEvent( this, "constructor" )
  1136. end on
  1137. on uo_saletask_will.destroy
  1138. TriggerEvent( this, "destructor" )
  1139. call super::destroy
  1140. end on