uo_ware_pdb_balc.sru 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062
  1. $PBExportHeader$uo_ware_pdb_balc.sru
  2. forward
  3. global type uo_ware_pdb_balc from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_ware_pdb_balc from nonvisualobject
  7. end type
  8. global uo_ware_pdb_balc uo_ware_pdb_balc
  9. forward prototypes
  10. public function integer uof_pdb_audit (long arg_storageid, string arg_pdbdate, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  11. public function integer uof_warebalc (long arg_storageid, datetime arg_balcdate, ref string arg_msg, boolean arg_ifcommit)
  12. public function integer uof_warebalc_cancel (long arg_balcdateint, long arg_storageid, ref string arg_msg, boolean arg_ifcommit)
  13. public function integer uof_warebalc_check_inoutflag (long arg_storageid, datetime arg_balcdate, ref string arg_msg)
  14. public function integer uof_pdb_del (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit)
  15. public function integer uof_pdb_caudit (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit)
  16. public function integer uof_pdb_add (long arg_atid, long arg_storageid, datetime arg_pdbdt, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer uof_pdb_update_scllflag (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit)
  18. end prototypes
  19. public function integer uof_pdb_audit (long arg_storageid, string arg_pdbdate, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  20. Long cnt
  21. SELECT count(*) INTO :cnt
  22. FROM u_storage
  23. Where storageid = :arg_storageid;
  24. IF sqlca.SQLCode <> 0 THEN
  25. arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText
  26. rslt = 0
  27. GOTO ext
  28. END IF
  29. IF cnt <> 1 THEN
  30. arg_msg = '仓库资料不存在或重复,请检查'
  31. rslt = 0
  32. GOTO ext
  33. END IF
  34. cnt = 0
  35. SELECT count(*) INTO :cnt
  36. FROM u_warepdb
  37. WHERE storageid = :arg_storageid
  38. AND pdbdate = :arg_pdbdate;
  39. IF sqlca.SQLCode <> 0 THEN
  40. arg_msg = '查询盘点表失败,'+sqlca.SQLErrText
  41. rslt = 0
  42. GOTO ext
  43. END IF
  44. IF cnt = 0 THEN
  45. arg_msg = '盘点表没有盘点内容,不能审核'
  46. rslt = 0
  47. GOTO ext
  48. END IF
  49. cnt = 0
  50. SELECT count(*) INTO :cnt
  51. FROM u_warepdb
  52. WHERE storageid = :arg_storageid
  53. AND pdbdate = :arg_pdbdate
  54. AND flag = 1;
  55. IF sqlca.SQLCode <> 0 THEN
  56. arg_msg = '查询盘点表是否已审核失败,'+sqlca.SQLErrText
  57. rslt = 0
  58. GOTO ext
  59. END IF
  60. IF cnt > 0 THEN
  61. arg_msg = '盘点表已审核,不能审核'
  62. rslt = 0
  63. GOTO ext
  64. END IF
  65. UPDATE u_warepdb
  66. SET flag = 1,
  67. auditemp = :arg_opemp,
  68. auditdate = getdate()
  69. WHERE storageid = :arg_storageid
  70. AND pdbdate = :arg_pdbdate;
  71. IF sqlca.SQLCode <> 0 THEN
  72. arg_msg = '更新盘点表审核标记失败,'+sqlca.SQLErrText
  73. rslt = 0
  74. GOTO ext
  75. END IF
  76. ext:
  77. IF rslt = 0 THEN
  78. ROLLBACK;
  79. ELSEIF rslt = 1 AND arg_ifcommit THEN
  80. COMMIT;
  81. END IF
  82. RETURN rslt
  83. end function
  84. public function integer uof_warebalc (long arg_storageid, datetime arg_balcdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  85. Long cnt
  86. DateTime balc_date
  87. Long ls_balcdateint
  88. IF arg_storageid <= 0 THEN
  89. arg_msg = '请选择仓库'
  90. rslt = 0
  91. GOTO ext
  92. END IF
  93. ls_balcdateint = Year(Date(arg_balcdate)) * 10000 + Month(Date(arg_balcdate)) * 100 + Day(Date(arg_balcdate))
  94. balc_date = DateTime(Date(arg_balcdate),Time('23:59:59'))
  95. SELECT count(*) INTO :cnt
  96. FROM u_warebalc
  97. WHERE balcdate = :balc_date
  98. AND storageid = :arg_storageid;
  99. IF cnt <> 0 THEN
  100. rslt = 0
  101. arg_msg = "仓库指定日期已进行过结存操作"
  102. GOTO ext
  103. END IF
  104. //检查单据
  105. IF uof_warebalc_check_inoutflag(arg_storageid,balc_date,arg_msg) = 0 THEN
  106. rslt = 0
  107. GOTO ext
  108. END IF
  109. UPDATE u_warebalc
  110. SET balcdateint = :ls_balcdateint,
  111. balcdate = :arg_balcdate
  112. WHERE balcdateint = 0
  113. AND storageid = :arg_storageid;
  114. IF sqlca.SQLCode <> 0 THEN
  115. rslt = 0
  116. arg_msg = "更新仓库结存标记失败. ~n 原因:"+sqlca.SQLErrText
  117. GOTO ext
  118. END IF
  119. INSERT INTO u_warebalc
  120. (balcdateint,
  121. storageid,
  122. mtrlid,
  123. bgqty,
  124. bgamt,
  125. incqty,
  126. incamt,
  127. desqty,
  128. desamt,
  129. balcqty,
  130. balcamt,
  131. pypk,
  132. scid,
  133. status,
  134. woodcode,
  135. pcode,
  136. bgaddqty,
  137. balcaddqty)
  138. SELECT 0,
  139. u_warebalc.storageid,
  140. u_warebalc.mtrlid,
  141. u_warebalc.balcqty,
  142. case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcamt end,
  143. 0,
  144. 0,
  145. 0,
  146. 0,
  147. u_warebalc.balcqty,
  148. case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcamt end,
  149. 0,
  150. u_warebalc.scid,
  151. u_warebalc.status,
  152. u_warebalc.woodcode,
  153. u_warebalc.pcode,
  154. case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcaddqty end,
  155. case when u_warebalc.balcqty = 0 then 0 else u_warebalc.balcaddqty end
  156. FROM u_warebalc
  157. WHERE ( (abs(u_warebalc.bgqty)+abs(u_warebalc.desqty)+abs(u_warebalc.incqty)+abs(u_warebalc.balcqty) <> 0)
  158. OR (abs(u_warebalc.bgamt)+ abs(u_warebalc.incamt)+abs(u_warebalc.desamt)+abs(u_warebalc.balcamt) <> 0) )
  159. AND ( u_warebalc.storageid = :arg_storageid )
  160. And ( u_warebalc.balcdateint = :ls_balcdateint );
  161. IF sqlca.SQLCode <> 0 THEN
  162. arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
  163. rslt = 0
  164. GOTO ext
  165. END IF
  166. // 写入日表 upartbalc
  167. UPDATE u_inware
  168. SET balcflag = 1 ,
  169. u_inware.balcdateint = :ls_balcdateint
  170. WHERE ( u_inware.flag = 1 ) AND
  171. ( u_inware.balcflag = 0 ) AND
  172. ( u_inware.storageid = :arg_storageid ) AND
  173. ( u_inware.balcdateint = 0 );
  174. IF sqlca.SQLCode <> 0 THEN
  175. rslt = 0
  176. arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
  177. GOTO ext
  178. END IF
  179. UPDATE u_outware
  180. SET balcflag = 1 ,
  181. u_outware.balcdateint = :ls_balcdateint
  182. WHERE ( u_outware.flag = 1 ) AND
  183. ( u_outware.balcflag = 0 ) AND
  184. ( u_outware.storageid = :arg_storageid ) AND
  185. ( u_outware.balcdateint = 0 );
  186. IF sqlca.SQLCode <> 0 THEN
  187. rslt = 0
  188. arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
  189. GOTO ext
  190. END IF
  191. ext:
  192. IF rslt = 0 THEN
  193. ROLLBACK;
  194. ELSEIF rslt = 1 AND arg_ifcommit THEN
  195. COMMIT;
  196. END IF
  197. RETURN rslt
  198. end function
  199. public function integer uof_warebalc_cancel (long arg_balcdateint, long arg_storageid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1
  200. long cnt
  201. DateTime null_dt,ld_balcdate
  202. string ls_balcdate
  203. SetNull(null_dt)
  204. ls_balcdate = left(string(arg_balcdateint),4) + '-' + left(right(string(arg_balcdateint),4),2) +'-'+ right(string(arg_balcdateint),2)
  205. ld_balcdate = datetime(date(ls_balcdate),time('23:59:59'))
  206. IF arg_storageid <= 0 THEN
  207. arg_msg = '请选择仓库'
  208. rslt = 0
  209. GOTO ext
  210. END IF
  211. //检查进仓单
  212. cnt = 0
  213. SELECT count(*) INTO :cnt FROM u_inware
  214. WHERE flag = 1
  215. AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 )
  216. AND storageid = :arg_storageid;
  217. IF sqlca.SQLCode <> 0 THEN
  218. rslt = 0
  219. arg_msg = '仓库反结存失败,查询进仓单结存日期后是否有单失败'
  220. GOTO ext
  221. END IF
  222. IF cnt > 0 THEN
  223. rslt = 0
  224. arg_msg = '仓库反结存失败,进仓单结存日期后已经有单审核,如果要反结存请将进仓单反审核'
  225. GOTO ext
  226. END IF
  227. //检查出仓单
  228. cnt = 0
  229. SELECT count(*) INTO :cnt FROM u_outware
  230. WHERE flag = 1
  231. AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 )
  232. AND storageid = :arg_storageid;
  233. IF sqlca.SQLCode <> 0 THEN
  234. rslt = 0
  235. arg_msg = '仓库反结存失败,查询出仓单结存日期后是否有单失败'
  236. GOTO ext
  237. END IF
  238. IF cnt > 0 THEN
  239. rslt = 0
  240. arg_msg = '仓库反结存失败,出仓单结存日期后已经有单审核,如果要反结存请将出仓单反审核'
  241. GOTO ext
  242. END IF
  243. //检查仓库外协进仓单及返工单
  244. cnt = 0
  245. SELECT count(*) INTO :cnt
  246. FROM ow_wfjg_in INNER JOIN
  247. ow_wfjgmx_in_aft ON ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid AND
  248. ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid
  249. WHERE ( ow_wfjg_in.flag = 1 )
  250. AND ( ow_wfjg_in.indate > :ld_balcdate )
  251. AND ( ow_wfjgmx_in_aft.storageid = :arg_storageid )
  252. And ( ow_wfjg_in.billtype = 4);
  253. IF sqlca.SQLCode <> 0 THEN
  254. rslt = 0
  255. arg_msg = '仓库反结存失败,查询仓库外协进仓单或返工单结存日期后是否有单失败'
  256. GOTO ext
  257. END IF
  258. IF cnt > 0 THEN
  259. rslt = 0
  260. arg_msg = '仓库反结存失败,仓库外协进仓单或返工单结存日期后已经有单审核,如果要反结存请将仓库外协进仓单或返工单反审核'
  261. GOTO ext
  262. END IF
  263. //检查仓库外协发出单及退回单
  264. cnt = 0
  265. SELECT count(*) INTO :cnt
  266. FROM ow_wfjg_out INNER JOIN
  267. ow_wfjgmx_out ON ow_wfjg_out.scid = ow_wfjgmx_out.scid AND
  268. ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid
  269. WHERE ( ow_wfjg_out.flag = 1 )
  270. AND ( ow_wfjg_out.outdate > :ld_balcdate)
  271. AND ( ow_wfjgmx_out.storageid = :arg_storageid )
  272. And ( ow_wfjg_out.billtype = 4);
  273. IF sqlca.SQLCode <> 0 THEN
  274. rslt = 0
  275. arg_msg = '仓库反结存失败,查询仓库外协出发单或退回单结存日期后是否有单失败'
  276. GOTO ext
  277. END IF
  278. IF cnt > 0 THEN
  279. rslt = 0
  280. arg_msg = '仓库反结存失败,仓库外协出发单或退回单结存日期后已经有单审核,如果要反结存请将仓库外协出发单或退回单反审核'
  281. GOTO ext
  282. END IF
  283. // 写入日表 upartbalc
  284. UPDATE u_inware
  285. SET balcflag = 0 ,
  286. u_inware.balcdateint = 0
  287. WHERE ( u_inware.flag = 1 ) AND
  288. ( u_inware.balcflag = 1 ) AND
  289. ( u_inware.storageid = :arg_storageid ) AND
  290. ( u_inware.balcdateint = :arg_balcdateint );
  291. IF sqlca.SQLCode <> 0 THEN
  292. rslt = 0
  293. arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText
  294. GOTO ext
  295. END IF
  296. UPDATE u_outware
  297. SET balcflag = 0 ,
  298. u_outware.balcdateint = 0
  299. WHERE ( u_outware.flag = 1 ) AND
  300. ( u_outware.balcflag = 1 ) AND
  301. ( u_outware.storageid = :arg_storageid ) AND
  302. ( u_outware.balcdateint = :arg_balcdateint );
  303. IF sqlca.SQLCode <> 0 THEN
  304. rslt = 0
  305. arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText
  306. GOTO ext
  307. END IF
  308. //-----------------------------------------
  309. DELETE FROM u_warebalc
  310. WHERE balcdateint = 0
  311. AND storageid = :arg_storageid;
  312. IF sqlca.SQLCode <> 0 THEN
  313. arg_msg = '反结存操作 ~n原因:'+sqlca.SQLErrText
  314. rslt = 0
  315. GOTO ext
  316. END IF
  317. UPDATE u_warebalc
  318. SET balcdateint = 0,
  319. balcdate = :null_dt
  320. WHERE balcdateint = :arg_balcdateint
  321. AND storageid = :arg_storageid;
  322. IF sqlca.SQLCode <> 0 THEN
  323. rslt = 0
  324. arg_msg = "更新仓库结存标记失败. ~n 原因:"+sqlca.SQLErrText
  325. GOTO ext
  326. END IF
  327. ext:
  328. IF rslt = 0 THEN
  329. ROLLBACK;
  330. ELSEIF rslt = 1 AND arg_ifcommit THEN
  331. COMMIT;
  332. END IF
  333. RETURN rslt
  334. end function
  335. public function integer uof_warebalc_check_inoutflag (long arg_storageid, datetime arg_balcdate, ref string arg_msg);Long rslt = 1
  336. Long cnt = 0
  337. String ls_storagename
  338. SELECT storagename
  339. INTO :ls_storagename
  340. FROM u_storage
  341. Where storageid = :arg_storageid;
  342. IF sqlca.SQLCode <> 0 THEN
  343. rslt = 0
  344. arg_msg = '查询操作失败,仓库名称'
  345. GOTO ext
  346. END IF
  347. //1.检查日期前
  348. //1.1检查进仓单
  349. cnt = 0
  350. SELECT count(*)
  351. INTO :cnt
  352. FROM u_inware
  353. WHERE flag = 0
  354. AND storageid = :arg_storageid
  355. AND indate <= :arg_balcdate ;
  356. IF sqlca.SQLCode <> 0 THEN
  357. rslt = 0
  358. arg_msg = '查询操作失败,日期前是否有进仓单未审'
  359. GOTO ext
  360. END IF
  361. IF cnt > 0 THEN
  362. rslt = 0
  363. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')进仓单未审'
  364. GOTO ext
  365. END IF
  366. //1.2不检查已开未审发货单,(占库存)
  367. cnt = 0
  368. SELECT count(*)
  369. INTO :cnt
  370. FROM u_outware
  371. WHERE flag = 0
  372. AND storageid = :arg_storageid
  373. AND billtype <> 1
  374. AND outdate <= :arg_balcdate ;
  375. IF sqlca.SQLCode <> 0 THEN
  376. rslt = 0
  377. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有出仓单未审'
  378. GOTO ext
  379. END IF
  380. IF cnt > 0 THEN
  381. rslt = 0
  382. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')出仓单未审'
  383. GOTO ext
  384. END IF
  385. //1.3检查调仓单
  386. cnt = 0
  387. SELECT count(*)
  388. INTO :cnt
  389. FROM u_outware_move
  390. WHERE ( flag = 0 OR d_auditflag = 0 )
  391. AND ( sstorageid = :arg_storageid OR dstorageid = :arg_storageid )
  392. And ( outdate <= :arg_balcdate );
  393. IF sqlca.SQLCode <> 0 THEN
  394. rslt = 0
  395. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有调仓单未审'
  396. GOTO ext
  397. END IF
  398. IF cnt > 0 THEN
  399. rslt = 0
  400. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')调仓单未审'
  401. GOTO ext
  402. END IF
  403. //1.4 检查仓库外协进仓单(含返工单)
  404. cnt = 0
  405. SELECT count(*)
  406. INTO :cnt
  407. FROM ow_wfjg_in INNER JOIN
  408. ow_wfjgmx_in_aft ON ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid AND
  409. ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid
  410. WHERE (ow_wfjg_in.flag = 0 )
  411. AND (ow_wfjg_in.indate <= :arg_balcdate)
  412. AND (ow_wfjgmx_in_aft.storageid = :arg_storageid)
  413. And (ow_wfjg_in.billtype = 4);
  414. IF sqlca.SQLCode <> 0 THEN
  415. rslt = 0
  416. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有仓库外协进仓单或仓库外协返工单未审'
  417. GOTO ext
  418. END IF
  419. IF cnt > 0 THEN
  420. rslt = 0
  421. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')仓库外协进仓单或仓库外协返工单未审'
  422. GOTO ext
  423. END IF
  424. //1.5 检查仓库外协发出单(含退回单)
  425. cnt = 0
  426. SELECT count(*)
  427. INTO :cnt
  428. FROM ow_wfjg_out INNER JOIN
  429. ow_wfjgmx_out ON ow_wfjg_out.scid = ow_wfjgmx_out.scid AND
  430. ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid
  431. WHERE (ow_wfjg_out.flag = 0 )
  432. AND (ow_wfjg_out.outdate <= :arg_balcdate)
  433. AND (ow_wfjgmx_out.storageid = :arg_storageid)
  434. And (ow_wfjg_out.billtype = 4);
  435. IF sqlca.SQLCode <> 0 THEN
  436. rslt = 0
  437. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有仓库外协发出单或仓库外协退回单未审'
  438. GOTO ext
  439. END IF
  440. IF cnt > 0 THEN
  441. rslt = 0
  442. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有('+String(cnt)+')仓库外协发出单或仓库外协退回单未审'
  443. GOTO ext
  444. END IF
  445. //2.检查日期后
  446. //2.1检查进仓单
  447. cnt = 0
  448. SELECT count(*)
  449. INTO :cnt
  450. FROM u_inware
  451. WHERE flag = 1
  452. AND storageid = :arg_storageid
  453. AND indate > :arg_balcdate ;
  454. IF sqlca.SQLCode <> 0 THEN
  455. rslt = 0
  456. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有进仓单已审'
  457. GOTO ext
  458. END IF
  459. IF cnt > 0 THEN
  460. rslt = 0
  461. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')进仓单已审'
  462. GOTO ext
  463. END IF
  464. //2.2检查出仓单
  465. cnt = 0
  466. SELECT count(*)
  467. INTO :cnt
  468. FROM u_outware
  469. WHERE flag = 1
  470. AND storageid = :arg_storageid
  471. AND outdate > :arg_balcdate ;
  472. IF sqlca.SQLCode <> 0 THEN
  473. rslt = 0
  474. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有出仓单已审'
  475. GOTO ext
  476. END IF
  477. IF cnt > 0 THEN
  478. rslt = 0
  479. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')出仓单已审'
  480. GOTO ext
  481. END IF
  482. //2.3检查调仓单
  483. cnt = 0
  484. SELECT count(*)
  485. INTO :cnt
  486. FROM u_outware_move
  487. WHERE ( flag = 1 )
  488. AND ( sstorageid = :arg_storageid )
  489. And ( outdate > :arg_balcdate );
  490. IF sqlca.SQLCode <> 0 THEN
  491. rslt = 0
  492. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有调仓单调出已审'
  493. GOTO ext
  494. END IF
  495. IF cnt > 0 THEN
  496. rslt = 0
  497. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')调仓单调出已审'
  498. GOTO ext
  499. END IF
  500. cnt = 0
  501. SELECT count(*)
  502. INTO :cnt
  503. FROM u_outware_move
  504. WHERE ( d_auditflag = 1 )
  505. AND ( dstorageid = :arg_storageid )
  506. And ( outdate > :arg_balcdate );
  507. IF sqlca.SQLCode <> 0 THEN
  508. rslt = 0
  509. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有调仓单调入已审'
  510. GOTO ext
  511. END IF
  512. IF cnt > 0 THEN
  513. rslt = 0
  514. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')调仓单调入已审'
  515. GOTO ext
  516. END IF
  517. //2.4 检查仓库外协进仓单(含返工单)
  518. cnt = 0
  519. SELECT count(*)
  520. INTO :cnt
  521. FROM ow_wfjg_in INNER JOIN
  522. ow_wfjgmx_in_aft ON ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid AND
  523. ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid
  524. WHERE (ow_wfjg_in.flag = 1 )
  525. AND (ow_wfjg_in.indate > :arg_balcdate)
  526. AND (ow_wfjgmx_in_aft.storageid = :arg_storageid)
  527. And (ow_wfjg_in.billtype = 4);
  528. IF sqlca.SQLCode <> 0 THEN
  529. rslt = 0
  530. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有仓库外协进仓单或仓库外协返工单已审'
  531. GOTO ext
  532. END IF
  533. IF cnt > 0 THEN
  534. rslt = 0
  535. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')仓库外协进仓单或仓库外协返工单已审'
  536. GOTO ext
  537. END IF
  538. //2.5 检查仓库外协发出单(含退回单)
  539. cnt = 0
  540. SELECT count(*)
  541. INTO :cnt
  542. FROM ow_wfjg_out INNER JOIN
  543. ow_wfjgmx_out ON ow_wfjg_out.scid = ow_wfjgmx_out.scid AND
  544. ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid
  545. WHERE (ow_wfjg_out.flag = 1 )
  546. AND (ow_wfjg_out.outdate > :arg_balcdate)
  547. AND (ow_wfjgmx_out.storageid = :arg_storageid)
  548. And (ow_wfjg_out.billtype = 4);
  549. IF sqlca.SQLCode <> 0 THEN
  550. rslt = 0
  551. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后是否有仓库外协发出单或仓库外协退回单已审'
  552. GOTO ext
  553. END IF
  554. IF cnt > 0 THEN
  555. rslt = 0
  556. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',后有('+String(cnt)+')仓库外协发出单或仓库外协退回单已审'
  557. GOTO ext
  558. END IF
  559. //// //
  560. String ls_pdbdate
  561. ls_pdbdate = String(arg_balcdate,'yyyymmdd')
  562. cnt = 0
  563. SELECT count(*) INTO :cnt
  564. FROM u_warepdb
  565. WHERE storageid = :arg_storageid
  566. AND pdbdate <= :ls_pdbdate
  567. AND flag = 0;
  568. IF sqlca.SQLCode <> 0 THEN
  569. rslt = 0
  570. arg_msg = '查询操作失败,日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前是否有盘点表未审'
  571. GOTO ext
  572. END IF
  573. IF cnt > 0 THEN
  574. rslt = 0
  575. arg_msg = '仓库:'+ls_storagename+',日期:'+String(arg_balcdate,'yyyy-mm-dd hh:mm')+',前有盘点表未审'
  576. GOTO ext
  577. END IF
  578. ext:
  579. RETURN rslt
  580. end function
  581. public function integer uof_pdb_del (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  582. Long cnt = 0
  583. IF arg_storageid <= 0 THEN
  584. arg_msg = '请选择要仓库'
  585. rslt = 0
  586. GOTO ext
  587. END IF
  588. SELECT count(*)
  589. INTO :cnt
  590. FROM u_warepdb
  591. WHERE u_warepdb.storageid = :arg_storageid
  592. AND u_warepdb.pdbdate = :arg_pdbdate
  593. AND flag = 1;
  594. IF sqlca.SQLCode <> 0 THEN
  595. arg_msg = '查询操作失败,在盘点日:'+arg_pdbdate+'数据资料失败,'+sqlca.SQLErrText
  596. rslt = 0
  597. GOTO ext
  598. END IF
  599. IF cnt > 0 THEN
  600. arg_msg = '盘点日:'+arg_pdbdate+',盘点数据已经审核,不能删除'
  601. rslt = 0
  602. GOTO ext
  603. END IF
  604. DELETE FROM u_warepdb
  605. WHERE pdbdate = :arg_pdbdate
  606. AND storageid = :arg_storageid;
  607. IF sqlca.SQLCode <> 0 THEN
  608. arg_msg = '删除当前期的盘点表失败!'+sqlca.SQLErrText
  609. rslt = 0
  610. GOTO ext
  611. END IF
  612. ext:
  613. IF rslt = 0 THEN
  614. ROLLBACK;
  615. ELSEIF rslt = 1 AND arg_ifcommit THEN
  616. COMMIT;
  617. END IF
  618. RETURN rslt
  619. end function
  620. public function integer uof_pdb_caudit (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  621. Long cnt
  622. Long ll_pdbdate
  623. DateTime null_dt
  624. SetNull(null_dt)
  625. SELECT count(*) INTO :cnt
  626. FROM u_storage
  627. Where storageid = :arg_storageid;
  628. IF sqlca.SQLCode <> 0 THEN
  629. arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText
  630. rslt = 0
  631. GOTO ext
  632. END IF
  633. IF cnt <> 1 THEN
  634. arg_msg = '仓库资料不存在或重复,请检查'
  635. rslt = 0
  636. GOTO ext
  637. END IF
  638. cnt = 0
  639. SELECT count(*) INTO :cnt
  640. FROM u_warepdb
  641. WHERE storageid = :arg_storageid
  642. AND pdbdate = :arg_pdbdate;
  643. IF sqlca.SQLCode <> 0 THEN
  644. arg_msg = '查询盘点表失败,'+sqlca.SQLErrText
  645. rslt = 0
  646. GOTO ext
  647. END IF
  648. IF cnt = 0 THEN
  649. arg_msg = '盘点表没有盘点内容,不能撤审'
  650. rslt = 0
  651. GOTO ext
  652. END IF
  653. cnt = 0
  654. SELECT count(*) INTO :cnt
  655. FROM u_warepdb
  656. WHERE storageid = :arg_storageid
  657. AND pdbdate = :arg_pdbdate
  658. AND flag = 0;
  659. IF sqlca.SQLCode <> 0 THEN
  660. arg_msg = '查询盘点表是否未审核失败,'+sqlca.SQLErrText
  661. rslt = 0
  662. GOTO ext
  663. END IF
  664. IF cnt > 0 THEN
  665. arg_msg = '盘点表未审核,不能撤审'
  666. rslt = 0
  667. GOTO ext
  668. END IF
  669. //检查盘点日期后是否有结存
  670. ll_pdbdate = Long(arg_pdbdate)
  671. cnt = 0
  672. SELECT COUNT(*)
  673. INTO :cnt
  674. FROM u_warebalc
  675. WHERE (balcdateint >= :ll_pdbdate)
  676. And (storageid = :arg_storageid);
  677. IF sqlca.SQLCode <> 0 THEN
  678. arg_msg = '查询盘点日期后仓库是否有结存失败,'+sqlca.SQLErrText
  679. rslt = 0
  680. GOTO ext
  681. END IF
  682. IF cnt > 0 THEN
  683. arg_msg = '盘点日期后仓库已结存,不能撤审'
  684. rslt = 0
  685. GOTO ext
  686. END IF
  687. UPDATE u_warepdb
  688. SET flag = 0,
  689. auditemp = '',
  690. auditdate = :null_dt
  691. WHERE storageid = :arg_storageid
  692. AND pdbdate = :arg_pdbdate;
  693. IF sqlca.SQLCode <> 0 THEN
  694. arg_msg = '更新盘点表审核标记失败,'+sqlca.SQLErrText
  695. rslt = 0
  696. GOTO ext
  697. END IF
  698. ext:
  699. IF rslt = 0 THEN
  700. ROLLBACK;
  701. ELSEIF rslt = 1 AND arg_ifcommit THEN
  702. COMMIT;
  703. END IF
  704. RETURN rslt
  705. end function
  706. public function integer uof_pdb_add (long arg_atid, long arg_storageid, datetime arg_pdbdt, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  707. String ls_waredate
  708. Long ls_scid
  709. DateTime st_date,ed_date,ls_serverdate
  710. Date ls_enddate
  711. IF arg_storageid <= 0 THEN
  712. arg_msg = "请选择仓库"
  713. rslt = 0
  714. GOTO ext
  715. END IF
  716. IF arg_atid = 0 THEN
  717. IF uof_warebalc_check_inoutflag(arg_storageid,arg_pdbdt,arg_msg) = 0 THEN
  718. rslt = 0
  719. GOTO ext
  720. END IF
  721. END IF
  722. ls_waredate = String(arg_pdbdt,'yyyymmdd')
  723. SELECT scid INTO :ls_scid
  724. FROM u_storage
  725. Where storageid = :arg_storageid;
  726. IF sqlca.SQLCode <> 0 THEN
  727. arg_msg = '查询仓库分部失败'+sqlca.SQLErrText
  728. rslt = 0
  729. GOTO ext
  730. END IF
  731. SELECT Top 1 getdate() INTO :ls_serverdate FROM u_user ;
  732. IF sqlca.SQLCode <> 0 THEN
  733. arg_msg = '查询当前日期操作失败'+sqlca.SQLErrText
  734. rslt = 0
  735. GOTO ext
  736. END IF
  737. ls_enddate = Date(String(arg_pdbdt,'yyyy-mm-dd'))
  738. st_date = DateTime(RelativeDate(Date(ls_enddate),1),Time('0:0'))
  739. ed_date = DateTime(RelativeDate(Date(ls_serverdate),1),Time('0:0'))
  740. IF st_date > ed_date THEN
  741. arg_msg = '盘点日期不能大过于当前日期'
  742. rslt = 0
  743. GOTO ext
  744. END IF
  745. DELETE u_parm_balcdate ;
  746. IF sqlca.SQLCode <> 0 THEN
  747. arg_msg = "因网络或其它原因导致操作失败,请重试"
  748. rslt = 0
  749. GOTO ext
  750. END IF
  751. INSERT INTO u_parm_balcdate (first_date,end_date)
  752. Values (:st_date,:ed_date) ;
  753. IF sqlca.SQLCode <> 0 THEN
  754. arg_msg = "因网络或其它原因导致建立开始日期,结束日期操作失败,请重试,"+sqlca.SQLErrText
  755. rslt = 0
  756. GOTO ext
  757. END IF
  758. COMMIT ;
  759. INSERT INTO u_warepdb (
  760. atid,
  761. flag,
  762. pdbdate,
  763. scid,
  764. mtrlwareid,
  765. mtrlid,
  766. storageid,
  767. plancode,
  768. Status,
  769. planprice,
  770. Sptid,
  771. Dxflag,
  772. newprice,
  773. woodcode,
  774. pcode,
  775. cost,
  776. qty,
  777. factqty,
  778. wareamt,
  779. scllflag,
  780. pdbdt,
  781. pdbemp,
  782. waredscrp)
  783. SELECT
  784. :arg_atid,
  785. 0,
  786. :ls_waredate ,
  787. u_mtrlware.scid,
  788. u_mtrlware.mtrlwareid,
  789. u_mtrlware.mtrlid,
  790. u_mtrlware.storageid,
  791. u_mtrlware.plancode,
  792. u_mtrlware.Status,
  793. u_mtrldef.planprice,
  794. u_mtrlware.Sptid,
  795. u_mtrlware.Dxflag,
  796. u_mtrlware.newprice,
  797. u_mtrlware.woodcode,
  798. u_mtrlware.pcode,
  799. u_mtrlware.cost,
  800. u_mtrlware.noallocqty + ISNULL(uv_pdb_outware.desqty, 0) - ISNULL(uv_pdb_inware.incqty, 0),
  801. 0,
  802. u_mtrlware.wareamt + ISNULL(uv_pdb_outware.desamt, 0) - ISNULL(uv_pdb_inware.incamt,0),
  803. u_mtrldef.scllflag,
  804. getdate(),
  805. :publ_operator,
  806. u_mtrlware.dscrp
  807. FROM uv_pdb_inware RIGHT OUTER JOIN
  808. u_mtrlware ON uv_pdb_inware.storageid = u_mtrlware.storageid AND
  809. uv_pdb_inware.mtrlid = u_mtrlware.mtrlid AND
  810. uv_pdb_inware.plancode = u_mtrlware.plancode AND
  811. uv_pdb_inware.status = u_mtrlware.Status AND
  812. uv_pdb_inware.cusid = u_mtrlware.Sptid AND
  813. uv_pdb_inware.Dxflag = u_mtrlware.Dxflag AND
  814. uv_pdb_inware.pcode = u_mtrlware.pcode AND
  815. uv_pdb_inware.woodcode = u_mtrlware.woodcode LEFT OUTER JOIN
  816. uv_pdb_outware ON u_mtrlware.storageid = uv_pdb_outware.StorageID AND
  817. u_mtrlware.mtrlid = uv_pdb_outware.mtrlid AND
  818. u_mtrlware.plancode = uv_pdb_outware.plancode AND
  819. u_mtrlware.Status = uv_pdb_outware.status AND
  820. u_mtrlware.Sptid = uv_pdb_outware.Sptid AND
  821. u_mtrlware.Dxflag = uv_pdb_outware.Dxflag AND
  822. u_mtrlware.woodcode = uv_pdb_outware.woodcode AND
  823. u_mtrlware.pcode = uv_pdb_outware.pcode,
  824. u_mtrldef
  825. WHERE u_mtrldef.mtrlid = u_mtrlware.mtrlid AND
  826. u_mtrlware.storageid = :arg_storageid AND
  827. u_mtrlware.scid = :ls_scid;
  828. IF sqlca.SQLCode <> 0 THEN
  829. IF Pos(sqlca.SQLErrText,'Cannot insert duplicate key in') > 0 THEN
  830. arg_msg = '该仓库当前日期的盘点表已经存在,不能建立!'
  831. ELSE
  832. arg_msg = '生成当前期的盘点表失败!~n原因是:'+sqlca.SQLErrText
  833. END IF
  834. rslt = 0
  835. GOTO ext
  836. END IF
  837. ext:
  838. IF rslt = 0 THEN
  839. ROLLBACK;
  840. ELSEIF rslt = 1 AND arg_ifcommit THEN
  841. COMMIT;
  842. END IF
  843. RETURN rslt
  844. end function
  845. public function integer uof_pdb_update_scllflag (long arg_storageid, string arg_pdbdate, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  846. Long cnt
  847. SELECT count(*) INTO :cnt
  848. FROM u_storage
  849. Where storageid = :arg_storageid;
  850. IF sqlca.SQLCode <> 0 THEN
  851. arg_msg = '查询仓库资料失败,'+sqlca.SQLErrText
  852. rslt = 0
  853. GOTO ext
  854. END IF
  855. IF cnt <> 1 THEN
  856. arg_msg = '仓库资料不存在或重复,请检查'
  857. rslt = 0
  858. GOTO ext
  859. END IF
  860. cnt = 0
  861. SELECT count(*) INTO :cnt
  862. FROM u_warepdb
  863. WHERE storageid = :arg_storageid
  864. AND pdbdate = :arg_pdbdate;
  865. IF sqlca.SQLCode <> 0 THEN
  866. arg_msg = '查询盘点表失败,'+sqlca.SQLErrText
  867. rslt = 0
  868. GOTO ext
  869. END IF
  870. IF cnt = 0 THEN
  871. arg_msg = '盘点表没有盘点内容,不能操作'
  872. rslt = 0
  873. GOTO ext
  874. END IF
  875. cnt = 0
  876. SELECT count(*) INTO :cnt
  877. FROM u_warepdb
  878. WHERE storageid = :arg_storageid
  879. AND pdbdate = :arg_pdbdate
  880. AND flag = 1;
  881. IF sqlca.SQLCode <> 0 THEN
  882. arg_msg = '查询盘点表是否已审核失败,'+sqlca.SQLErrText
  883. rslt = 0
  884. GOTO ext
  885. END IF
  886. IF cnt > 0 THEN
  887. arg_msg = '盘点表已审核,不能审核'
  888. rslt = 0
  889. GOTO ext
  890. END IF
  891. UPDATE u_warepdb
  892. SET scllflag = u_mtrldef.scllflag
  893. from u_warepdb inner join u_mtrldef
  894. on u_warepdb.mtrlid = u_mtrldef.mtrlid
  895. WHERE u_warepdb.storageid = :arg_storageid
  896. AND u_warepdb.pdbdate = :arg_pdbdate;
  897. IF sqlca.SQLCode <> 0 THEN
  898. arg_msg = '更新盘点表盘亏领料标记失败,'+sqlca.SQLErrText
  899. rslt = 0
  900. GOTO ext
  901. END IF
  902. ext:
  903. IF rslt = 0 THEN
  904. ROLLBACK;
  905. ELSEIF rslt = 1 AND arg_ifcommit THEN
  906. COMMIT;
  907. END IF
  908. RETURN rslt
  909. end function
  910. on uo_ware_pdb_balc.create
  911. call super::create
  912. TriggerEvent( this, "constructor" )
  913. end on
  914. on uo_ware_pdb_balc.destroy
  915. TriggerEvent( this, "destructor" )
  916. call super::destroy
  917. end on