uo_cusprice_change.sru 17 KB

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