uo_cusprice_change.sru 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823
  1. $PBExportHeader$uo_cusprice_change.sru
  2. forward
  3. global type uo_cusprice_change from nonvisualobject
  4. end type
  5. type s_cusprice_changemx from structure within uo_cusprice_change
  6. end type
  7. end forward
  8. type s_cusprice_changemx from structure
  9. long mtrlid
  10. string mtrlcode
  11. decimal{10} price
  12. decimal{5} lastprice
  13. string mxdscrp
  14. long printid
  15. string status
  16. string woodcode
  17. string pcode
  18. long pricelistid
  19. end type
  20. global type uo_cusprice_change from nonvisualobject
  21. end type
  22. global uo_cusprice_change uo_cusprice_change
  23. type variables
  24. PUBLIC PROTECTEDWRITE Long billid
  25. PUBLIC PROTECTEDWRITE String billcode
  26. PUBLIC PROTECTEDWRITE DateTime opdate
  27. PUBLIC PROTECTEDWRITE String opemp
  28. PUBLIC PROTECTEDWRITE DateTime moddate
  29. PUBLIC PROTECTEDWRITE String modemp
  30. PUBLIC PROTECTEDWRITE Int flag
  31. PUBLIC PROTECTEDWRITE DateTime auditingdate
  32. PUBLIC PROTECTEDWRITE String auditingrep
  33. Long mtrlid
  34. DateTime billdate
  35. Long pricelistid
  36. String dscrp
  37. String inrep
  38. String relcode
  39. long billtype
  40. datetime workdate
  41. string uo_option_change_status,uo_option_change_woodcode,uo_option_change_pcode
  42. PRIVATE:
  43. Boolean it_newbegin = FALSE
  44. Boolean it_updatebegin = FALSE
  45. Boolean if_getid_ture = TRUE
  46. s_cusprice_changemx changemx[]
  47. Long it_mxbt = 0
  48. end variables
  49. forward prototypes
  50. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
  51. public function integer acceptmx (long arg_printid, long arg_pricelistid, long arg_mtrlid, string arg_mtrlcode, decimal arg_price, string arg_status, string arg_woodcode, string arg_pcode, string arg_mxdscrp, ref string arg_msg)
  52. public function integer p_reset ()
  53. public function integer p_clearmx ()
  54. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  55. public function integer newbegin ()
  56. public function integer getinfo (long arg_billid, ref string arg_msg)
  57. public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
  58. public function integer del (long arg_billid, boolean arg_ifcommit, ref string arg_msg)
  59. public function integer save (ref string arg_msg, boolean arg_ifcommit)
  60. public function integer updatebegin (long arg_billid, ref string arg_msg)
  61. end prototypes
  62. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);Int rslt = 1
  63. arg_newdescppart = Trim(arg_newdescppart)
  64. IF arg_billid <= 0 THEN
  65. rslt = 0
  66. arg_msg = "没有删除对象,操作取消"
  67. GOTO ext
  68. END IF
  69. rslt = p_getinfo(arg_billid,arg_msg)
  70. IF rslt = 0 THEN GOTO ext
  71. IF flag = 0 THEN
  72. rslt = 0
  73. arg_msg = "非审核状态下不可用"
  74. GOTO ext
  75. END IF
  76. UPDATE u_cusprice_change
  77. SET dscrp = dscrp+' '+:arg_newdescppart
  78. Where u_cusprice_change.billid = :billid ;
  79. IF sqlca.SQLCode <> 0 THEN
  80. ROLLBACK ;
  81. rslt = 0
  82. arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.SQLErrText
  83. GOTO ext
  84. END IF
  85. dscrp = dscrp+' '+arg_newdescppart
  86. ext:
  87. IF rslt = 0 THEN
  88. ROLLBACK;
  89. ELSE
  90. COMMIT;
  91. END IF
  92. Return(rslt)
  93. end function
  94. public function integer acceptmx (long arg_printid, long arg_pricelistid, long arg_mtrlid, string arg_mtrlcode, decimal arg_price, string arg_status, string arg_woodcode, string arg_pcode, string arg_mxdscrp, ref string arg_msg);Int rslt = 1
  95. Int li_dftflag
  96. Long cnt
  97. Decimal ld_lastprice
  98. IF uo_option_change_status = '-1000' THEN
  99. rslt = 0
  100. arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
  101. GOTO ext
  102. END IF
  103. IF uo_option_change_woodcode = '-1000' THEN
  104. rslt = 0
  105. arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
  106. GOTO ext
  107. END IF
  108. IF uo_option_change_pcode = '-1000' THEN
  109. rslt = 0
  110. arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
  111. GOTO ext
  112. END IF
  113. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  114. rslt = 0
  115. arg_msg = "非编辑状态不可以使用,操作取消"
  116. GOTO ext
  117. END IF
  118. //清除空值
  119. IF IsNull(arg_printid) THEN arg_printid = 0
  120. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  121. IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
  122. IF IsNull(arg_status) THEN arg_status = ''
  123. IF IsNull(arg_woodcode) THEN arg_woodcode = ''
  124. IF IsNull(arg_pcode) THEN arg_pcode = ''
  125. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  126. IF IsNull(arg_price) THEN arg_price = 0
  127. IF arg_mtrlid = 0 OR arg_price = 0 THEN
  128. rslt = 1
  129. GOTO ext
  130. END IF
  131. IF arg_pricelistid = 0 THEN
  132. arg_msg = '请选择价格表'
  133. rslt = 0
  134. GOTO ext
  135. END IF
  136. SELECT dftflag INTO :li_dftflag
  137. FROM u_sale_price_list
  138. Where pricelistid = :arg_pricelistid;
  139. IF sqlca.SQLCode <> 0 THEN
  140. arg_msg = '查询价格表资料失败,'+sqlca.SQLErrText
  141. rslt = 0
  142. GOTO ext
  143. END IF
  144. if f_check_status(1,arg_status) = 0 then
  145. rslt = 0
  146. arg_msg = "查询操作失败,可能'+uo_option_change_status+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
  147. goto ext
  148. end if
  149. if f_check_status(2,arg_woodcode) = 0 then
  150. rslt = 0
  151. arg_msg = "查询操作失败,可能'+uo_option_change_woodcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
  152. goto ext
  153. end if
  154. if f_check_status(3,arg_pcode) = 0 then
  155. rslt = 0
  156. arg_msg = "查询操作失败,可能'+uo_option_change_pcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
  157. goto ext
  158. end if
  159. IF li_dftflag = 1 THEN
  160. SELECT count(*) INTO :cnt
  161. FROM u_sale_price_mx,u_sale_price_list
  162. WHERE u_sale_price_mx.pricelistid <> :arg_pricelistid
  163. AND u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
  164. AND u_sale_price_mx.mtrlid = :arg_mtrlid
  165. AND u_sale_price_mx.status = :arg_status
  166. AND u_sale_price_mx.woodcode = :arg_woodcode
  167. AND u_sale_price_mx.pcode = :arg_pcode
  168. and u_sale_price_list.dftflag = 1 ;
  169. IF sqlca.SQLCode <> 0 THEN
  170. arg_msg = '查询物料:'+arg_mtrlcode+'是否在其它标准价格表存在失败,'+sqlca.SQLErrText
  171. rslt = 0
  172. GOTO ext
  173. END IF
  174. IF cnt > 0 THEN
  175. arg_msg = '物料:'+arg_mtrlcode+'在其它标准价格表存在,不能在本价格表调价'
  176. rslt = 0
  177. GOTO ext
  178. END IF
  179. END IF
  180. //取上次价
  181. SELECT u_sale_price_mx.price
  182. INTO :ld_lastprice
  183. FROM u_sale_price_mx
  184. WHERE u_sale_price_mx.pricelistid = :arg_pricelistid
  185. AND u_sale_price_mx.mtrlid = :arg_mtrlid
  186. AND u_sale_price_mx.status = :arg_status
  187. AND u_sale_price_mx.pcode = :arg_pcode
  188. AND u_sale_price_mx.woodcode = :arg_woodcode;
  189. IF sqlca.SQLCode = -1 THEN
  190. arg_msg = '查询物料:'+arg_mtrlcode+',上次价格失败,'+sqlca.SQLErrText
  191. rslt = 0
  192. GOTO ext
  193. ELSEIF sqlca.SQLCode = 100 THEN
  194. ld_lastprice = 0
  195. END IF
  196. it_mxbt++
  197. changemx[it_mxbt].mtrlid = arg_mtrlid
  198. changemx[it_mxbt].price = arg_price
  199. changemx[it_mxbt].status = arg_status
  200. changemx[it_mxbt].woodcode = arg_woodcode
  201. changemx[it_mxbt].pcode = arg_pcode
  202. changemx[it_mxbt].lastprice = ld_lastprice
  203. changemx[it_mxbt].mxDscrp = arg_mxdscrp
  204. changemx[it_mxbt].printid = arg_printid
  205. changemx[it_mxbt].pricelistid = arg_pricelistid
  206. ext:
  207. RETURN rslt
  208. end function
  209. public function integer p_reset ();//INT p_RESET()
  210. //清除对象及其明细
  211. billid = 0
  212. billcode = ''
  213. flag = 0
  214. inrep = ''
  215. pricelistid = 0
  216. dscrp = ''
  217. setnull(workdate)
  218. it_newbegin = FALSE
  219. it_updatebegin = FALSE
  220. p_clearmx( )
  221. RETURN 1
  222. end function
  223. public function integer p_clearmx ();//int p_clearmx()
  224. //清除明细
  225. it_mxbt=0
  226. return 1
  227. end function
  228. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  229. IF arg_billid <= 0 THEN
  230. rslt = 0
  231. arG_MSG = "非法调价单唯一码"
  232. GOTO ext
  233. END IF
  234. SELECT
  235. Billcode,
  236. billdate,
  237. pricelistid,
  238. flag,
  239. dscrp,
  240. inrep,
  241. relcode,
  242. mtrlid,
  243. billtype,
  244. workdate
  245. INTO
  246. :Billcode,
  247. :billdate,
  248. :pricelistid,
  249. :flag,
  250. :dscrp,
  251. :inrep,
  252. :relcode,
  253. :mtrlid,
  254. :billtype,
  255. :workdate
  256. FROM u_cusprice_change
  257. Where billid = :arg_billid;
  258. IF sqlca.SQLCode <> 0 THEN
  259. rslt = 0
  260. arG_MSG = "查询操作失败(错误调价单唯一码),调价单"+sqlca.SQLErrText
  261. GOTO ext
  262. END IF
  263. billid = arg_billid
  264. ext:
  265. IF rslt = 0 THEN p_reset()
  266. RETURN rslt
  267. end function
  268. public function integer newbegin ();p_reset()
  269. it_newbegin=TRUE
  270. it_updatebegin=FALSE
  271. return 1
  272. end function
  273. public function integer getinfo (long arg_billid, ref string arg_msg);
  274. Int rslt = 1
  275. Long i = 1,no_mxcheck = 0
  276. IF arg_billid <= 0 THEN
  277. rslt = 0
  278. arg_msg = "非法调价单唯一码"
  279. GOTO ext
  280. END IF
  281. rslt = p_getinfo(arg_billid,arg_msg)
  282. IF rslt = 0 THEN GOTO ext
  283. //用游标读取明细
  284. DECLARE cur_changemx CURSOR FOR
  285. SELECT
  286. u_cusprice_changemx.printid,
  287. u_cusprice_changemx.mtrlid,
  288. u_mtrldef.mtrlcode,
  289. u_cusprice_changemx.price,
  290. u_cusprice_changemx.status,
  291. u_cusprice_changemx.woodcode,
  292. u_cusprice_changemx.pcode,
  293. u_cusprice_changemx.mxDscrp,
  294. u_cusprice_changemx.lastprice,
  295. u_cusprice_changemx.pricelistid
  296. FROM u_cusprice_changemx INNER JOIN
  297. u_mtrldef ON u_cusprice_changemx.mtrlid = u_mtrldef.mtrlid
  298. WHERE u_cusprice_changemx.billid = :arg_billid
  299. ;
  300. OPEN cur_changemx;
  301. FETCH cur_changemx INTO
  302. :changemx[i].printid,
  303. :changemx[i].mtrlid,
  304. :changemx[i].mtrlcode,
  305. :changemx[i].price,
  306. :changemx[i].status,
  307. :changemx[i].woodcode,
  308. :changemx[i].pcode,
  309. :changemx[i].mxDscrp,
  310. :changemx[i].lastprice,
  311. :changemx[i].pricelistid;
  312. DO WHILE sqlca.SQLCode = 0
  313. i++
  314. FETCH cur_changemx INTO
  315. :changemx[i].printid,
  316. :changemx[i].mtrlid,
  317. :changemx[i].mtrlcode,
  318. :changemx[i].price,
  319. :changemx[i].status,
  320. :changemx[i].woodcode,
  321. :changemx[i].pcode,
  322. :changemx[i].mxDscrp,
  323. :changemx[i].lastprice,
  324. :changemx[i].pricelistid;
  325. LOOP
  326. CLOSE cur_changemx;
  327. //检验明细是否读入完整
  328. SELECT count(*) INTO :no_mxcheck
  329. FROM u_cusprice_changemx
  330. Where u_cusprice_changemx.billid = :arg_billid;
  331. IF sqlca.SQLCode <> 0 THEN
  332. rslt = 0
  333. arg_msg = "查询操作失败,调价单明细数量"
  334. GOTO ext
  335. END IF
  336. IF i <> (no_mxcheck+1) THEN
  337. rslt = 0
  338. arg_msg = "查询操作失败,调价单明细"
  339. GOTO ext
  340. END IF
  341. billid = arg_billid
  342. it_mxbt = i - 1
  343. it_newbegin = FALSE
  344. it_updatebegin = FALSE
  345. ext:
  346. IF rslt = 0 THEN p_reset()
  347. RETURN rslt
  348. end function
  349. public function integer auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  350. Long cnt = 0,i
  351. If billid = 0 Then
  352. rslt = 0
  353. arg_msg = "没有审核对象"
  354. Goto ext
  355. End If
  356. If flag = 1 Then
  357. rslt = 0
  358. arg_msg = '该单据已审核,审核前请先执行撤审!'
  359. Goto ext
  360. End If
  361. Update u_cusprice_change
  362. Set flag = 1,
  363. auditingrep = :publ_operator,
  364. Auditingdate = getdate()
  365. Where billid = :billid
  366. And flag = 0 ;
  367. If sqlca.SQLCode <> 0 Then
  368. arg_msg = '审核单据失败,原因,'+sqlca.SQLErrText
  369. rslt = 0
  370. Goto ext
  371. ElseIf sqlca.SQLNRows = 0 Then
  372. arg_msg = '单据正在审核,请重新检查'
  373. rslt = 0
  374. Goto ext
  375. End If
  376. Long ll_pricelistid
  377. Long ll_mtrlid
  378. For i = 1 To it_mxbt
  379. If billtype = 0 Then
  380. ll_pricelistid = pricelistid
  381. ll_mtrlid = changemx[i].mtrlid
  382. Else
  383. ll_pricelistid = changemx[i].pricelistid
  384. ll_mtrlid = mtrlid
  385. End If
  386. Update u_sale_price_mx
  387. Set hisprice = price,
  388. price = :changemx[i].price
  389. Where pricelistid = :ll_pricelistid
  390. And mtrlid = :ll_mtrlid
  391. And status = :changemx[i].status
  392. And woodcode = :changemx[i].woodcode
  393. And pcode = :changemx[i].pcode ;
  394. If sqlca.SQLCode = 0 Then
  395. If sqlca.SQLNRows = 0 Then
  396. Insert Into u_sale_price_mx
  397. (pricelistid,
  398. mtrlid,
  399. status,
  400. woodcode,
  401. pcode,
  402. price,
  403. dscrp)
  404. Values(:ll_pricelistid,
  405. :ll_mtrlid,
  406. :changemx[i].status,
  407. :changemx[i].woodcode,
  408. :changemx[i].pcode,
  409. :changemx[i].price,
  410. :changemx[i].mxdscrp) ;
  411. If sqlca.SQLCode <> 0 Then
  412. rslt = 0
  413. arg_msg = "因网络或其它原因导致物料价格表建立操作失败"+"~n"+sqlca.SQLErrText
  414. Goto ext
  415. End If
  416. End If
  417. Else
  418. rslt = 0
  419. arg_msg = "因网络或其它原因导致物料价格表更新操作失败"+"~n"+sqlca.SQLErrText
  420. Goto ext
  421. End If
  422. Next
  423. ext:
  424. If rslt = 0 Then
  425. Rollback ;
  426. ElseIf rslt = 1 And arg_ifcommit Then
  427. Commit ;
  428. End If
  429. Return rslt
  430. end function
  431. public function integer del (long arg_billid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  432. IF arg_billid <= 0 THEN
  433. rslt = 0
  434. arg_msg = "没有删除对象,操作取消"
  435. GOTO ext
  436. END IF
  437. rslt = p_getinfo(arg_billid,arg_msg)
  438. IF rslt = 0 THEN GOTO ext
  439. IF flag = 1 THEN
  440. rslt = 0
  441. arg_msg = "单据已经审核,不可以删除"
  442. GOTO ext
  443. END IF
  444. DELETE FROM u_cusprice_changemx
  445. Where u_cusprice_changemx.billid = :arg_billid;
  446. IF sqlca.SQLCode <> 0 THEN
  447. rslt = 0
  448. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  449. GOTO ext
  450. END IF
  451. DELETE FROM u_cusprice_change
  452. WHERE u_cusprice_change.billid = :arg_billid;
  453. IF sqlca.SQLCode <> 0 THEN
  454. rslt = 0
  455. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  456. GOTO ext
  457. END IF
  458. ext:
  459. IF rslt = 0 THEN
  460. ROLLBACK ;
  461. ELSEIF rslt = 1 AND arg_ifcommit THEN
  462. COMMIT ;
  463. END IF
  464. Return (rslt)
  465. end function
  466. public function integer save (ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
  467. Long cnt = 0,i
  468. DateTime server_dt
  469. Long ls_newid
  470. IF IsNull(pricelistid) THEN pricelistid = 0
  471. IF IsNull(dscrp) THEN dscrp = ''
  472. IF IsNull(inrep) THEN inrep = ''
  473. IF IsNull(relcode) THEN relcode = ''
  474. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  475. rslt = 0
  476. arg_msg = "非编辑状态不可以提交"
  477. GOTO ext
  478. END IF
  479. IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
  480. rslt = 0
  481. arg_msg = "没有正确进仓内容"
  482. GOTO ext
  483. END IF
  484. IF billtype = 0 THEN
  485. cnt = 0
  486. SELECT count(*) INTO :cnt
  487. FROM u_sale_price_list
  488. Where pricelistid = :pricelistid;
  489. IF sqlca.SQLCode <> 0 THEN
  490. arg_msg = '查询价格表资料失败,'+sqlca.SQLErrText
  491. rslt = 0
  492. GOTO ext
  493. END IF
  494. IF cnt > 1 THEN
  495. arg_msg = '价格表资料重复'
  496. rslt = 0
  497. GOTO ext
  498. END IF
  499. END IF
  500. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  501. IF sqlca.SQLCode <> 0 THEN
  502. rslt = 0
  503. arg_msg = "查询操作失败,日期 "
  504. GOTO ext
  505. END IF
  506. IF Year(Date(billdate)) < 2000 OR IsNull(billdate) THEN
  507. rslt = 0
  508. arg_msg = "时间不合理"
  509. GOTO ext
  510. END IF
  511. IF billid = 0 THEN //新建
  512. ls_newid = f_sys_scidentity(0,"u_cusprice_change","billid",arg_msg,TRUE,id_sqlca)
  513. IF ls_newid <= 0 THEN
  514. rslt = 0
  515. GOTO ext
  516. END IF
  517. IF billtype = 0 THEN
  518. billcode = getid(0,"CH",Date(server_dt),if_getid_ture,sqlca) //取得新单据编号
  519. ELSE
  520. billcode = getid(0,"PH",Date(server_dt),if_getid_ture,sqlca)
  521. END IF
  522. IF billcode = "err" THEN
  523. billcode = ''
  524. rslt = 0
  525. arg_msg = "无法获取单据编号"
  526. GOTO ext
  527. END IF
  528. INSERT INTO u_cusprice_change
  529. (billid,
  530. billcode,
  531. billdate,
  532. pricelistid,
  533. dscrp,
  534. opemp,
  535. opdate,
  536. inrep,
  537. relcode,
  538. mtrlid,
  539. billtype,
  540. workdate)
  541. VALUES (
  542. :ls_newid,
  543. :billcode,
  544. :billdate,
  545. :pricelistid,
  546. :dscrp,
  547. :publ_operator,
  548. :server_dt,
  549. :inrep,
  550. :relcode,
  551. :mtrlid,
  552. :billtype,
  553. :workdate) ;
  554. IF sqlca.SQLCode <> 0 THEN
  555. rslt = 0
  556. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  557. GOTO ext
  558. END IF
  559. billid = ls_newid
  560. ELSE //////////////////////////////////////////////// //更新
  561. UPDATE u_cusprice_change
  562. SET billdate = :billdate,
  563. pricelistid = :pricelistid,
  564. moddate = :server_dt,
  565. modemp = :publ_operator,
  566. dscrp = :dscrp,
  567. inrep = :inrep,
  568. relcode = :relcode,
  569. mtrlid = :mtrlid,
  570. workdate = :workdate
  571. WHERE billid = :billid
  572. AND flag = 0 ;
  573. IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  574. rslt = 0
  575. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  576. GOTO ext
  577. END IF
  578. END IF
  579. //删除原有明细
  580. DELETE FROM u_cusprice_changemx
  581. Where u_cusprice_changemx.billid = :billid;
  582. IF sqlca.SQLCode <> 0 THEN
  583. rslt = 0
  584. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  585. GOTO ext
  586. END IF
  587. FOR i = 1 TO it_mxbt
  588. INSERT INTO u_cusprice_changemx
  589. (billid,
  590. mtrlid,
  591. price,
  592. status,
  593. woodcode,
  594. pcode,
  595. lastprice,
  596. mxDscrp,
  597. printid,
  598. pricelistid)
  599. VALUES
  600. (:billid,
  601. :changemx[i].mtrlid,
  602. :changemx[i].price,
  603. :changemx[i].status,
  604. :changemx[i].woodcode,
  605. :changemx[i].pcode,
  606. :changemx[i].lastprice,
  607. :changemx[i].mxDscrp,
  608. :changemx[i].printid,
  609. :changemx[i].pricelistid);
  610. IF sqlca.SQLCode <> 0 THEN
  611. rslt = 0
  612. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  613. GOTO ext
  614. END IF
  615. NEXT
  616. it_newbegin = FALSE
  617. it_updatebegin = FALSE
  618. ext:
  619. IF rslt = 0 THEN
  620. ROLLBACK ;
  621. p_clearmx()
  622. ELSEIF rslt = 1 AND arg_ifcommit THEN
  623. COMMIT ;
  624. END IF
  625. Return(rslt)
  626. end function
  627. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  628. IF arg_billid <= 0 THEN
  629. billid = 0
  630. arg_msg = '错误的单据ID'
  631. GOTO ext
  632. END IF
  633. rslt = p_getinfo(arg_billid,arg_msg)
  634. IF rslt = 0 THEN GOTO ext
  635. IF flag = 1 THEN
  636. rslt = 0
  637. arg_msg = '单据已经审核,不可以修改'
  638. GOTO ext
  639. END IF
  640. billid = arg_billid
  641. it_newbegin = FALSE
  642. it_updatebegin = TRUE
  643. p_clearmx() //清除明细
  644. ext:
  645. IF rslt = 0 THEN p_reset()
  646. RETURN rslt
  647. end function
  648. on uo_cusprice_change.create
  649. call super::create
  650. TriggerEvent( this, "constructor" )
  651. end on
  652. on uo_cusprice_change.destroy
  653. TriggerEvent( this, "destructor" )
  654. call super::destroy
  655. end on