uo_taskdamt.sru 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821
  1. $PBExportHeader$uo_taskdamt.sru
  2. forward
  3. global type uo_taskdamt from nonvisualobject
  4. end type
  5. type s_saleplanmx from structure within uo_taskdamt
  6. end type
  7. end forward
  8. type s_saleplanmx from structure
  9. long mtrlid
  10. string mtrlcode
  11. long printid
  12. decimal { 5 } planqty
  13. string mxdscrp
  14. end type
  15. global type uo_taskdamt from nonvisualobject
  16. end type
  17. global uo_taskdamt uo_taskdamt
  18. type variables
  19. Long uo_billid
  20. //Int uo_option_msttake_takeamt_secaudit
  21. end variables
  22. forward prototypes
  23. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg)
  24. public function integer save (s_taskdamt arg_s_bd, ref string arg_msg, boolean arg_ifcommit)
  25. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  26. public function integer audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  27. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  28. public function integer getinfo (long arg_billid, ref s_taskdamtmx arg_ref_s_mx[], ref string arg_msg)
  29. public function integer p_update_bmsttake (long arg_scid, long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  30. public function integer p_cancel_bmsttake (long arg_scid, long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  31. public function integer caudit (integer arg_del, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  32. public function integer p_update_bmstpay (long arg_scid, long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  33. public function integer p_cancel_bmstpay (long arg_scid, long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  34. end prototypes
  35. public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1
  36. IF arg_scid < 0 THEN
  37. rslt = 0
  38. arg_msg = '请选择正确的分部'
  39. GOTO ext
  40. END IF
  41. IF arg_billid <= 0 THEN
  42. rslt = 0
  43. arg_msg = '错误单据唯一码'
  44. GOTO ext
  45. END IF
  46. Int li_permitflag
  47. SELECT flag INTO :li_permitflag
  48. FROM u_taskdamt
  49. Where billid = :arg_billid;
  50. IF sqlca.SQLCode <> 0 THEN
  51. arg_msg = '查询单据审核标记失败'
  52. rslt = 0
  53. GOTO ext
  54. END IF
  55. IF li_permitflag = 1 THEN
  56. rslt = 0
  57. arg_msg = '单据已经审核,不可以修改,要修改请先撤销审核'
  58. GOTO ext
  59. END IF
  60. ext:
  61. RETURN rslt
  62. end function
  63. public function integer save (s_taskdamt arg_s_bd, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
  64. DateTime server_dt
  65. Long ll_billid,it_mxbt,ll_i,i
  66. String ls_sccode,ls_billcode
  67. Long ll_cusid_mx
  68. Long ll_moneyid_account,ll_moneyid_native
  69. If IsNull(arg_s_bd.scid) Then arg_s_bd.scid = 0
  70. If IsNull(arg_s_bd.billid) Then arg_s_bd.billid = 0
  71. If IsNull(arg_s_bd.cussptid) Then arg_s_bd.cussptid = 0
  72. If IsNull(arg_s_bd.part) Then arg_s_bd.part = ''
  73. If IsNull(arg_s_bd.assign_emp) Then arg_s_bd.assign_emp = ''
  74. If IsNull(arg_s_bd.dscrp) Then arg_s_bd.dscrp = ''
  75. If IsNull(arg_s_bd.ifauto) Then arg_s_bd.ifauto = 0
  76. If IsNull(arg_s_bd.salebillid) Then arg_s_bd.salebillid = 0
  77. If IsNull(arg_s_bd.billtype) Then arg_s_bd.billtype = 1
  78. If IsNull(arg_s_bd.dscrp_yt) Then arg_s_bd.dscrp_yt =""
  79. If IsNull(arg_s_bd.dscrp_sm) Then arg_s_bd.dscrp_sm = ""
  80. If IsNull(arg_s_bd.dscrp_yq) Then arg_s_bd.dscrp_yq = ""
  81. If arg_s_bd.billtype = 1 Then
  82. If arg_s_bd.cussptid = 0 Then
  83. rslt = 0
  84. arg_msg = "请选择供应商!"
  85. Goto ext
  86. End If
  87. cnt = 0
  88. Select count(*) Into :cnt
  89. From u_spt
  90. Where sptid = :arg_s_bd.cussptid;
  91. If sqlca.SQLCode <> 0 Then
  92. arg_msg = '查询供应商资料失败,'+sqlca.SQLErrText
  93. rslt = 0
  94. Goto ext
  95. End If
  96. Else
  97. If arg_s_bd.cussptid = 0 Then
  98. rslt = 0
  99. arg_msg = "请选择客户!"
  100. Goto ext
  101. End If
  102. cnt = 0
  103. Select count(*) Into :cnt
  104. From u_cust
  105. Where cusid = :arg_s_bd.cussptid;
  106. If sqlca.SQLCode <> 0 Then
  107. arg_msg = '查询客户资料失败,'+sqlca.SQLErrText
  108. rslt = 0
  109. Goto ext
  110. End If
  111. End If
  112. Select Top 1 getdate() Into :server_dt From u_user;
  113. If sqlca.SQLCode <> 0 Then
  114. rslt = 0
  115. arg_msg = "查询操作失败,日期 "
  116. Goto ext
  117. End If
  118. it_mxbt = UpperBound(arg_s_bd.arg_s_mx)
  119. If it_mxbt <= 0 Then
  120. rslt = 0
  121. arg_msg = "没有正确明细内容"
  122. Goto ext
  123. End If
  124. Select moneyid Into :ll_moneyid_native
  125. From cw_currency
  126. Where native = 1;
  127. If sqlca.SQLCode <> 0 Then
  128. arg_msg = '查询本位币资料失败,请检查币种资料'
  129. rslt = 0
  130. Goto ext
  131. End If
  132. //检查明细
  133. For ll_i = 1 To it_mxbt
  134. If IsNull(arg_s_bd.arg_s_mx[ll_i].dscrp) Then arg_s_bd.arg_s_mx[ll_i].dscrp = ''
  135. If IsNull(arg_s_bd.arg_s_mx[ll_i].damt) Then arg_s_bd.arg_s_mx[ll_i].damt = 0
  136. If arg_s_bd.arg_s_mx[ll_i].realmoneyid = 0 Then
  137. rslt = 0
  138. If arg_s_bd.billtype = 1 Then
  139. arg_msg = '明细行:'+String(ll_i)+',请选择应付帐币种'
  140. Else
  141. arg_msg = '明细行:'+String(ll_i)+',请选择应收帐币种'
  142. End If
  143. Goto ext
  144. End If
  145. If arg_s_bd.arg_s_mx[ll_i].realrate = 0 Then
  146. rslt = 0
  147. If arg_s_bd.billtype = 1 Then
  148. arg_msg = '明细行:'+String(ll_i)+',请选择应付帐币种汇率'
  149. Else
  150. arg_msg = '明细行:'+String(ll_i)+',请选择应收帐币种汇率'
  151. End If
  152. Goto ext
  153. End If
  154. If arg_s_bd.arg_s_mx[ll_i].accountsid = 0 Then
  155. rslt = 0
  156. arg_msg = '明细行:'+String(ll_i)+',请选择出纳帐号'
  157. Goto ext
  158. End If
  159. Select moneyid Into :ll_moneyid_account
  160. From u_accounts
  161. Where accountsid = :arg_s_bd.arg_s_mx[ll_i].accountsid;
  162. If sqlca.SQLCode <> 0 Then
  163. arg_msg = '明细行:'+String(ll_i)+',查询帐号币种失败,'+sqlca.SQLErrText
  164. rslt = 0
  165. Goto ext
  166. End If
  167. If IsNull(ll_moneyid_account) Then ll_moneyid_account = 0
  168. If ll_moneyid_account = 0 Then
  169. arg_msg = '明细行:'+String(ll_i)+',帐号币种未指定,请检查'
  170. rslt = 0
  171. Goto ext
  172. End If
  173. If arg_s_bd.arg_s_mx[ll_i].realmoneyid <> ll_moneyid_account And arg_s_bd.arg_s_mx[ll_i].realrate = 1 Then
  174. If arg_s_bd.billtype = 1 Then
  175. arg_msg = '明细行:'+String(ll_i)+',付款币种与帐号币种不相同,汇率不能设为1'
  176. Else
  177. arg_msg = '明细行:'+String(ll_i)+',收款币种与帐号币种不相同,汇率不能设为1'
  178. End If
  179. rslt = 0
  180. Goto ext
  181. End If
  182. If arg_s_bd.arg_s_mx[ll_i].realmoneyid = ll_moneyid_account And arg_s_bd.arg_s_mx[ll_i].realrate <> 1 Then
  183. If arg_s_bd.billtype = 1 Then
  184. arg_msg = '明细行:'+String(ll_i)+',付款币种与帐号币种相同,汇率要设为1'
  185. Else
  186. arg_msg = '明细行:'+String(ll_i)+',收款币种与帐号币种相同,汇率要设为1'
  187. End If
  188. rslt = 0
  189. Goto ext
  190. End If
  191. If ll_moneyid_account = ll_moneyid_native Then
  192. If arg_s_bd.arg_s_mx[ll_i].realmoneyid = ll_moneyid_native Then
  193. arg_s_bd.arg_s_mx[ll_i].realamt = Round(arg_s_bd.arg_s_mx[ll_i].takeamt * arg_s_bd.arg_s_mx[ll_i].realrate,2)
  194. Else
  195. arg_s_bd.arg_s_mx[ll_i].realamt = Round(arg_s_bd.arg_s_mx[ll_i].takeamt / arg_s_bd.arg_s_mx[ll_i].realrate,2)
  196. End If
  197. Else
  198. arg_s_bd.arg_s_mx[ll_i].realamt = Round(arg_s_bd.arg_s_mx[ll_i].takeamt * arg_s_bd.arg_s_mx[ll_i].realrate,2)
  199. End If
  200. If arg_s_bd.arg_s_mx[ll_i].itemid = 0 Then
  201. rslt = 0
  202. arg_msg = '请选择收支项目'
  203. Goto ext
  204. End If
  205. If arg_s_bd.billtype = 0 Then
  206. Select cusid
  207. Into :ll_cusid_mx
  208. From u_saletask
  209. Where taskid = :arg_s_bd.arg_s_mx[ll_i].relid
  210. And scid = :arg_s_bd.scid;
  211. If sqlca.SQLCode <> 0 Then
  212. rslt = 0
  213. arg_msg = "查询操作失败>>相关的销售订单的客户ID"+"~n"+sqlca.SQLErrText
  214. Goto ext
  215. End If
  216. Else
  217. Select sptid
  218. Into :ll_cusid_mx
  219. From u_buytask
  220. Where taskid = :arg_s_bd.arg_s_mx[ll_i].relid
  221. And scid = :arg_s_bd.scid;
  222. If sqlca.SQLCode <> 0 Then
  223. rslt = 0
  224. arg_msg = "查询操作失败>>相关的销售订单的供应商ID"+"~n"+sqlca.SQLErrText
  225. Goto ext
  226. End If
  227. End If
  228. If ll_cusid_mx <> arg_s_bd.cussptid Then
  229. rslt = 0
  230. If arg_s_bd.billtype = 1 Then
  231. arg_msg = "单据的供应商ID与单据明细采购订单的供应商ID不相符,请检查,在第["+String(arg_s_bd.arg_s_mx[ll_i].printid)+"]行"
  232. Else
  233. arg_msg = "单据的客户ID与单据明细销售订单的客户ID不相符,请检查,在第["+String(arg_s_bd.arg_s_mx[ll_i].printid)+"]行"
  234. End If
  235. Goto ext
  236. End If
  237. If arg_s_bd.ifauto = 0 And arg_s_bd.arg_s_mx[ll_i].billtype = 2 Then
  238. rslt = 0
  239. If arg_s_bd.billtype = 1 Then
  240. arg_msg = "手动订单付款单类型不能选择自动对帐,在第["+String(arg_s_bd.arg_s_mx[ll_i].printid)+"]行"
  241. Else
  242. arg_msg = "手动订单收款单类型不能选择自动对帐,在第["+String(arg_s_bd.arg_s_mx[ll_i].printid)+"]行"
  243. End If
  244. Goto ext
  245. End If
  246. Next
  247. If arg_s_bd.billid = 0 Then
  248. ll_billid = f_sys_scidentity(0,"u_taskdamt","billid",arg_msg,True,id_sqlca)
  249. If ll_billid <= 0 Then
  250. rslt = 0
  251. Goto ext
  252. End If
  253. If f_get_sccode(arg_s_bd.scid,sqlca,ls_sccode,arg_msg) = 0 Then
  254. rslt = 0
  255. Goto ext
  256. End If
  257. If arg_s_bd.billtype = 0 Then
  258. ls_billcode = getid(arg_s_bd.scid,ls_sccode + 'SD',Date(server_dt),False,sqlca)
  259. If ls_billcode = "err" Then
  260. rslt = 0
  261. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  262. Goto ext
  263. End If
  264. ElseIf arg_s_bd.billtype = 1 Then
  265. ls_billcode = getid(arg_s_bd.scid,ls_sccode + 'TB',Date(server_dt),False,sqlca)
  266. If ls_billcode = "err" Then
  267. rslt = 0
  268. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  269. Goto ext
  270. End If
  271. End If
  272. Insert Into u_taskdamt
  273. (
  274. scid,
  275. billid,
  276. billcode,
  277. cussptid,
  278. part,
  279. billdate,
  280. assign_emp,
  281. dscrp,
  282. opdate,
  283. opemp ,
  284. ifauto,
  285. salebillid,
  286. billtype,
  287. dscrp_yt,
  288. dscrp_sm,
  289. dscrp_yq)
  290. Values (
  291. :arg_s_bd.scid,
  292. :ll_billid,
  293. :ls_billcode,
  294. :arg_s_bd.cussptid,
  295. :arg_s_bd.part,
  296. :arg_s_bd.billdate,
  297. :arg_s_bd.assign_emp,
  298. :arg_s_bd.dscrp,
  299. :server_dt,
  300. :publ_operator,
  301. :arg_s_bd.ifauto,
  302. :arg_s_bd.salebillid,
  303. :arg_s_bd.billtype,
  304. :arg_s_bd.dscrp_yt,
  305. :arg_s_bd.dscrp_sm,
  306. :arg_s_bd.dscrp_yq) ;
  307. If sqlca.SQLCode <> 0 Then
  308. rslt = 0
  309. arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
  310. Goto ext
  311. End If
  312. For i = 1 To it_mxbt
  313. Insert Into u_taskdamt_mx
  314. (scid,
  315. billid,
  316. printid,
  317. relid,
  318. reltaskcode,
  319. damt,
  320. dscrp,
  321. accountsid,
  322. billamt,
  323. itemid,
  324. takeamt,
  325. reltakeamt,
  326. reldamt,
  327. realmoneyid,
  328. realrate,
  329. realamt,
  330. billtype,
  331. banktypeid)
  332. Values (
  333. :arg_s_bd.scid,
  334. :ll_billid,
  335. :arg_s_bd.arg_s_mx[i].printid,
  336. :arg_s_bd.arg_s_mx[i].RELid,
  337. :arg_s_bd.arg_s_mx[i].reltaskcode,
  338. :arg_s_bd.arg_s_mx[i].DAMT,
  339. :arg_s_bd.arg_s_mx[i].dscrp,
  340. :arg_s_bd.arg_s_mx[i].accountsid,
  341. :arg_s_bd.arg_s_mx[i].billamt,
  342. :arg_s_bd.arg_s_mx[i].itemid,
  343. :arg_s_bd.arg_s_mx[i].takeamt,
  344. :arg_s_bd.arg_s_mx[i].reltakeamt,
  345. :arg_s_bd.arg_s_mx[i].reldamt,
  346. :arg_s_bd.arg_s_mx[i].realmoneyid,
  347. :arg_s_bd.arg_s_mx[i].realrate,
  348. :arg_s_bd.arg_s_mx[i].realamt,
  349. :arg_s_bd.arg_s_mx[i].billtype,
  350. :arg_s_bd.arg_s_mx[i].banktypeid);
  351. If sqlca.SQLCode <> 0 Then
  352. rslt = 0
  353. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  354. Goto ext
  355. End If
  356. Next
  357. uo_billid = ll_billid
  358. Else
  359. Update u_taskdamt
  360. Set
  361. cussptid = :arg_s_bd.CUSSPTID,
  362. part = :arg_s_bd.PART,
  363. billdate = :arg_s_bd.BILLDATE,
  364. assign_emp = :arg_s_bd.ASSIGN_EMP,
  365. dscrp = :arg_s_bd.DSCRP,
  366. moddate = getdate(),
  367. modemp = :publ_operator,
  368. dscrp_yt = :arg_s_bd.dscrp_yt,
  369. dscrp_sm = :arg_s_bd.dscrp_sm,
  370. dscrp_yq = :arg_s_bd.dscrp_yq
  371. Where billid = :arg_s_bd.billid
  372. And scid = :arg_s_bd.scid
  373. And flag = 0;
  374. If sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 Then
  375. rslt = 0
  376. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  377. Goto ext
  378. End If
  379. Delete From u_TASKDAMT_mx
  380. Where billid = :arg_s_bd.billid
  381. And scid = :arg_s_bd.scid;
  382. If sqlca.SQLCode <> 0 Then
  383. rslt = 0
  384. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  385. Goto ext
  386. End If
  387. For i = 1 To it_mxbt
  388. Insert Into u_taskdamt_mx
  389. (scid,
  390. billid,
  391. printid,
  392. relid,
  393. reltaskcode,
  394. damt,
  395. dscrp,
  396. accountsid,
  397. billamt,
  398. itemid,
  399. takeamt,
  400. reltakeamt,
  401. reldamt,
  402. realmoneyid,
  403. realrate,
  404. realamt,
  405. billtype,
  406. banktypeid)
  407. Values (
  408. :arg_s_bd.scid,
  409. :arg_s_bd.billid,
  410. :arg_s_bd.arg_s_mx[i].printid,
  411. :arg_s_bd.arg_s_mx[i].RELid,
  412. :arg_s_bd.arg_s_mx[i].reltaskcode,
  413. :arg_s_bd.arg_s_mx[i].DAMT,
  414. :arg_s_bd.arg_s_mx[i].dscrp,
  415. :arg_s_bd.arg_s_mx[i].accountsid,
  416. :arg_s_bd.arg_s_mx[i].billamt,
  417. :arg_s_bd.arg_s_mx[i].itemid,
  418. :arg_s_bd.arg_s_mx[i].takeamt,
  419. :arg_s_bd.arg_s_mx[i].reltakeamt,
  420. :arg_s_bd.arg_s_mx[i].reldamt,
  421. :arg_s_bd.arg_s_mx[i].realmoneyid,
  422. :arg_s_bd.arg_s_mx[i].realrate,
  423. :arg_s_bd.arg_s_mx[i].realamt,
  424. :arg_s_bd.arg_s_mx[i].billtype,
  425. :arg_s_bd.arg_s_mx[i].banktypeid);
  426. If sqlca.SQLCode <> 0 Then
  427. rslt = 0
  428. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  429. Goto ext
  430. End If
  431. Next
  432. //
  433. uo_billid = arg_s_bd.billid
  434. End If
  435. ext:
  436. If rslt = 0 Then
  437. Rollback;
  438. ElseIf arg_ifcommit And rslt = 1 Then
  439. Commit;
  440. End If
  441. Return rslt
  442. end function
  443. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  444. IF arg_billid <= 0 THEN
  445. rslt = 0
  446. arg_msg = '错误单据唯一码'
  447. GOTO ext
  448. END IF
  449. arg_newdescppart = Trim(arg_newdescppart)
  450. IF arg_newdescppart = '' THEN
  451. rslt = 0
  452. arg_msg = "要添加内容为空,操作取消"
  453. GOTO ext
  454. END IF
  455. Int li_flag
  456. SELECT flag INTO :li_flag
  457. FROM u_taskdamt
  458. Where billid = :arg_billid;
  459. IF sqlca.SQLCode <> 0 THEN
  460. arg_msg = '查询单据审核标记失败'
  461. rslt = 0
  462. GOTO ext
  463. END IF
  464. IF li_flag = 0 THEN
  465. rslt = 0
  466. arg_msg = '单据未审核,请按修改单据修改备注'
  467. GOTO ext
  468. END IF
  469. UPDATE u_taskdamt
  470. SET dscrp = dscrp+' '+:arg_newdescppart
  471. Where billid = :arg_billid;
  472. IF sqlca.SQLCode <> 0 THEN
  473. rslt = 0
  474. arg_msg = "因网络或其它原因导致添加备注操作失败"+"~n"+sqlca.SQLErrText
  475. GOTO ext
  476. END IF
  477. ext:
  478. IF rslt = 0 THEN
  479. ROLLBACK;
  480. ELSEIF arg_ifcommit AND rslt = 1 THEN
  481. COMMIT;
  482. END IF
  483. RETURN rslt
  484. end function
  485. public function integer audit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  486. IF arg_billid <= 0 THEN
  487. rslt = 0
  488. arg_msg = '错误单据唯一码'
  489. GOTO ext
  490. END IF
  491. Int li_auditflag,li_damtflag,li_billtype,li_ifauto
  492. Decimal ld_takeamt
  493. Long ll_scid,ll_billtype
  494. SELECT flag,scid,ifauto,billtype
  495. INTO :li_auditflag,:ll_scid,:li_ifauto,:ll_billtype
  496. FROM u_taskdamt
  497. Where billid = :arg_billid;
  498. IF sqlca.SQLCode <> 0 THEN
  499. arg_msg = '查询单据审核标记失败,'+sqlca.SQLErrText
  500. rslt = 0
  501. GOTO ext
  502. END IF
  503. IF li_auditflag = 1 THEN
  504. rslt = 0
  505. arg_msg = '单据已经最终审核,不可以再审!'
  506. GOTO ext
  507. END IF
  508. s_taskdamtmx arg_bd_mx[]
  509. Long ll_i
  510. IF getinfo(arg_billid,arg_bd_mx[],arg_msg) = 0 THEN
  511. rslt = 0
  512. GOTO ext
  513. END IF
  514. IF UpperBound(arg_bd_mx) <= 0 THEN
  515. rslt = 0
  516. arg_msg = "明细错误,操作取消"
  517. GOTO ext
  518. END IF
  519. FOR ll_i = 1 To UpperBound(arg_bd_mx) - 1
  520. //billtype 0-订金; 1-余款; 2-对账
  521. IF sys_option_mst_multimoney = 1 THEN //使用多币种
  522. ld_takeamt = arg_bd_mx[ll_i].takeamt
  523. ELSE // 系统不使用多币种,转换为人民币
  524. ld_takeamt = arg_bd_mx[ll_i].realamt
  525. END IF
  526. //ld_takeamt = arg_bd_mx[ll_i].realamt
  527. if ll_billtype = 0 then
  528. IF arg_bd_mx[ll_i].billtype = 0 THEN //收订金
  529. UPDATE u_SaleTask
  530. SET takedamt = takedamt + :ld_takeamt
  531. WHERE taskid = :arg_bd_mx[ll_i].relid
  532. And scid = :ll_scid;
  533. IF sqlca.SQLCode <> 0 THEN
  534. rslt = 0
  535. arg_msg = "因网络或其它原因导致更新销售订单操作失败"+"~n"+sqlca.SQLErrText
  536. GOTO ext
  537. END IF
  538. ELSE //单据余款
  539. UPDATE u_SaleTask
  540. SET takeamt = takeamt + :ld_takeamt
  541. WHERE taskid = :arg_bd_mx[ll_i].relid
  542. And scid = :ll_scid;
  543. IF sqlca.SQLCode <> 0 THEN
  544. rslt = 0
  545. arg_msg = "因网络或其它原因导致更新销售订单操作失败"+"~n"+sqlca.SQLErrText
  546. GOTO ext
  547. END IF
  548. END IF
  549. IF li_ifauto = 0 And arg_bd_mx[ll_i].billtype <> 2 THEN
  550. IF p_update_bmsttake(ll_scid,arg_billid,arg_bd_mx[ll_i].printid,arg_msg,False ) = 0 THEN
  551. rslt = 0
  552. GOTO ext
  553. END IF
  554. END IF
  555. else
  556. UPDATE u_buytask
  557. SET payamt = payamt + :ld_takeamt
  558. WHERE taskid = :arg_bd_mx[ll_i].relid
  559. And scid = :ll_scid;
  560. IF sqlca.SQLCode <> 0 THEN
  561. rslt = 0
  562. arg_msg = "因网络或其它原因导致更新采购订单操作失败"+"~n"+sqlca.SQLErrText
  563. GOTO ext
  564. END IF
  565. IF li_ifauto = 0 THEN
  566. IF p_update_bmstpay(ll_scid,arg_billid,arg_bd_mx[ll_i].printid,arg_msg,False ) = 0 THEN
  567. rslt = 0
  568. GOTO ext
  569. END IF
  570. END IF
  571. end if
  572. NEXT
  573. //更新审核标记
  574. UPDATE u_taskdamt
  575. SET permit_emp = :publ_operator,
  576. permit_date = getdate(),
  577. flag = 1
  578. WHERE billid = :arg_billid
  579. And flag = 0;
  580. IF sqlca.SQLCode <> 0 THEN
  581. rslt = 0
  582. arg_msg = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  583. GOTO ext
  584. END IF
  585. ext:
  586. IF rslt = 0 THEN
  587. ROLLBACK;
  588. ELSEIF rslt = 1 And arg_ifcommit THEN
  589. COMMIT;
  590. END IF
  591. RETURN rslt
  592. end function
  593. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  594. IF arg_billid <= 0 THEN
  595. rslt = 0
  596. arg_msg = '错误单据唯一码'
  597. GOTO ext
  598. END IF
  599. Int li_auditflag
  600. SELECT flag
  601. INTO :li_auditflag
  602. FROM u_taskdamt
  603. Where billid = :arg_billid;
  604. IF sqlca.SQLCode <> 0 THEN
  605. ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
  606. rslt = 0
  607. GOTO ext
  608. END IF
  609. IF li_auditflag = 1 THEN
  610. rslt = 0
  611. arg_msg = '单据已经最终审核,不可以删除'
  612. GOTO ext
  613. END IF
  614. DELETE FROM u_taskdamt_mx
  615. Where billid = :arg_billid;
  616. IF sqlca.SQLCode <> 0 THEN
  617. rslt = 0
  618. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  619. GOTO ext
  620. END IF
  621. DELETE FROM u_taskdamt
  622. Where billid = :arg_billid;
  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 = 0 THEN
  630. ROLLBACK;
  631. ELSEIF rslt = 1 AND arg_ifcommit THEN
  632. COMMIT;
  633. END IF
  634. RETURN rslt
  635. end function
  636. public function integer getinfo (long arg_billid, ref s_taskdamtmx arg_ref_s_mx[], ref string arg_msg);Int rslt = 1
  637. Long i = 1,no_mxcheck = 0
  638. IF arg_billid <= 0 THEN
  639. rslt = 0
  640. arg_msg = '错误单据唯一码'
  641. GOTO ext
  642. END IF
  643. //用游标读取明细
  644. DECLARE cur_bdmx CURSOR FOR
  645. SELECT scid,
  646. billid,
  647. printid,
  648. relid,
  649. reltaskcode,
  650. damt,
  651. dscrp,
  652. accountsid,
  653. billamt,
  654. itemid,
  655. takeamt,
  656. reltakeamt,
  657. reldamt,
  658. realmoneyid,
  659. realrate,
  660. realamt,
  661. banktypeid,
  662. paytaskid,
  663. billtype
  664. FROM u_taskdamt_mx
  665. WHERE billid = :arg_billid
  666. Order By printid;
  667. OPEN cur_bdmx;
  668. FETCH cur_bdmx
  669. INTO :arg_ref_s_mx[i].scid,
  670. :arg_ref_s_mx[i].billID,
  671. :arg_ref_s_mx[i].printid,
  672. :arg_ref_s_mx[i].relid,
  673. :arg_ref_s_mx[i].reltaskcode,
  674. :arg_ref_s_mx[i].damt,
  675. :arg_ref_s_mx[i].dscrp,
  676. :arg_ref_s_mx[i].accountsid,
  677. :arg_ref_s_mx[i].billamt,
  678. :arg_ref_s_mx[i].itemid,
  679. :arg_ref_s_mx[i].takeamt,
  680. :arg_ref_s_mx[i].reltakeamt,
  681. :arg_ref_s_mx[i].reldamt,
  682. :arg_ref_s_mx[i].realmoneyid,
  683. :arg_ref_s_mx[i].realrate,
  684. :arg_ref_s_mx[i].realamt,
  685. :arg_ref_s_mx[i].banktypeid,
  686. :arg_ref_s_mx[i].paytaskid,
  687. :arg_ref_s_mx[i].billtype;
  688. DO WHILE sqlca.SQLCode = 0
  689. i++
  690. FETCH cur_bdmx
  691. INTO :arg_ref_s_mx[i].scid,
  692. :arg_ref_s_mx[i].billID,
  693. :arg_ref_s_mx[i].printid,
  694. :arg_ref_s_mx[i].relid,
  695. :arg_ref_s_mx[i].reltaskcode,
  696. :arg_ref_s_mx[i].damt,
  697. :arg_ref_s_mx[i].dscrp,
  698. :arg_ref_s_mx[i].accountsid,
  699. :arg_ref_s_mx[i].billamt,
  700. :arg_ref_s_mx[i].itemid,
  701. :arg_ref_s_mx[i].takeamt,
  702. :arg_ref_s_mx[i].reltakeamt,
  703. :arg_ref_s_mx[i].reldamt,
  704. :arg_ref_s_mx[i].realmoneyid,
  705. :arg_ref_s_mx[i].realrate,
  706. :arg_ref_s_mx[i].realamt,
  707. :arg_ref_s_mx[i].banktypeid,
  708. :arg_ref_s_mx[i].paytaskid,
  709. :arg_ref_s_mx[i].billtype;
  710. LOOP
  711. CLOSE cur_bdmx;
  712. //检验明细是否读入完整
  713. SELECT count(*) INTO :no_mxcheck
  714. FROM u_taskdamt_mx
  715. Where billid = :arg_billid;
  716. IF sqlca.SQLCode <> 0 THEN
  717. rslt = 0
  718. arg_msg = "查询操作失败,单据明细数量"
  719. GOTO ext
  720. END IF
  721. IF i <> (no_mxcheck+1) THEN
  722. rslt = 0
  723. arg_msg = "查询操作失败,单据明细"
  724. GOTO ext
  725. END IF
  726. ext:
  727. RETURN rslt
  728. end function
  729. public function integer p_update_bmsttake (long arg_scid, long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  730. Long cnt = 0,i
  731. uo_musttake uo_take
  732. uo_take = Create uo_musttake
  733. uo_iteminput uo_item
  734. uo_item = Create uo_iteminput
  735. String ls_mtrlname
  736. String ls_about
  737. Long ref_dateint
  738. //IF sys_option_msttake_takeamt_secaudit = -1000 THEN
  739. // arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
  740. // rslt = 0
  741. // GOTO ext
  742. //END IF
  743. IF arg_billid = 0 THEN
  744. rslt = 0
  745. arg_msg = "没有审核对象"
  746. GOTO ext
  747. END IF
  748. SELECT count(*) INTO :cnt
  749. FROM u_user
  750. Where username = :publ_operator Using sqlca ;
  751. IF sqlca.SQLCode <> 0 THEN
  752. rslt = 0
  753. arg_msg = "查询操作失败,操作员"
  754. GOTO ext
  755. END IF
  756. IF cnt = 0 THEN
  757. rslt = 0
  758. arg_msg = "操作员姓名未登记或已取消"
  759. GOTO ext
  760. END IF
  761. Long ll_cusid
  762. DateTime ld_indate
  763. String ls_assign_emp,ls_billcode,ls_part
  764. Decimal ld_takeamt
  765. String ls_taskcode
  766. Long ll_saletaskid,ll_banktypeid,ll_moneyid,ll_accountsid,ll_itemid
  767. Dec ll_realamt
  768. Long ll_billtype
  769. Long ll_moneyid_account
  770. Decimal ld_mrate
  771. SELECT u_taskdamt.cussptid,
  772. u_taskdamt.billdate,
  773. u_taskdamt.assign_emp,
  774. u_taskdamt.billcode,
  775. u_taskdamt.part,
  776. u_taskdamt_mx.billtype,
  777. u_taskdamt_mx.takeamt,
  778. u_taskdamt_mx.relTaskCode,
  779. u_taskdamt_mx.banktypeid,
  780. u_taskdamt_mx.relid,
  781. u_taskdamt_mx.realmoneyid,
  782. u_taskdamt_mx.accountsid,
  783. u_taskdamt_mx.itemid,
  784. u_taskdamt_mx.realamt,
  785. u_taskdamt_mx.realrate
  786. INTO :ll_cusid,
  787. :ld_indate,
  788. :ls_assign_emp,
  789. :ls_billcode,
  790. :ls_part,
  791. :ll_billtype,
  792. :ld_takeamt,
  793. :ls_taskcode,
  794. :ll_banktypeid,
  795. :ll_saletaskid,
  796. :ll_moneyid,
  797. :ll_accountsid,
  798. :ll_itemid,
  799. :ll_realamt,
  800. :ld_mrate
  801. FROM u_taskdamt INNER JOIN
  802. u_taskdamt_mx ON u_taskdamt.billid = u_taskdamt_mx.billid
  803. WHERE u_taskdamt.billid = :arg_billid
  804. And u_taskdamt_mx.printid = :arg_printid;
  805. IF sqlca.SQLCode <> 0 THEN
  806. rslt = 0
  807. arg_msg = "查询操作失败,订金单相关信息!" +sqlca.SQLErrText
  808. GOTO ext
  809. END IF
  810. SELECT moneyid INTO :ll_moneyid_account
  811. FROM u_accounts
  812. Where accountsid = :ll_accountsid;
  813. IF sqlca.SQLCode <> 0 THEN
  814. arg_msg = '查询帐号币种资料失败,'+sqlca.SQLErrText
  815. rslt = 0
  816. GOTO ext
  817. END IF
  818. IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0
  819. IF ll_moneyid_account = 0 THEN
  820. arg_msg = '帐号币种未指定,请检查'
  821. rslt = 0
  822. GOTO ext
  823. END IF
  824. IF ld_takeamt <> 0 THEN
  825. IF ll_billtype = 0 THEN
  826. ls_about = ls_taskcode + "订金已收款"
  827. ELSE
  828. ls_about = ls_taskcode + "余额已收款"
  829. END IF
  830. // IF sys_option_m_msttake = 1 THEN //使用多币种
  831. // ld_takeamt = ld_takeamt_bill
  832. // ELSE // 系统不使用多币种,转换为人民币
  833. // ld_takeamt = ll_realamt
  834. // END IF
  835. //
  836. // ld_msttakeamt = ld_takeamt_bill
  837. // ld_takeamt = ld_msttakeamt
  838. s_bmsttake s_take
  839. s_take.scid = arg_scid
  840. s_take.cusid = ll_cusid
  841. s_take.takedate = ld_indate
  842. s_take.inrep = ls_assign_emp
  843. s_take.oriamt = 0 - ll_realamt
  844. s_take.msttakeamt = 0
  845. s_take.takeamt_cn = ld_takeamt
  846. s_take.takeamt = ll_realamt
  847. s_take.dscrp = ls_about
  848. s_take.billcode = ls_billcode
  849. s_take.banktypeid = ll_banktypeid
  850. s_take.buildtype = 4
  851. s_take.opemp = publ_operator
  852. s_take.outwareid = ll_saletaskid
  853. s_take.salebillid = 0
  854. s_take.viewdate = ld_indate
  855. s_take.accountsid = ll_accountsid
  856. s_take.itemid = ll_itemid
  857. s_take.moneyid = ll_moneyid
  858. s_take.moneyid_cn = ll_moneyid_account
  859. s_take.relcode = ls_part
  860. //////////////////////////////////// //
  861. // s_take.scid = arg_scid
  862. // s_take.cusID = ll_cusid
  863. // s_take.takedate = ld_indate
  864. // s_take.inrep = ls_assign_emp
  865. // s_take.oriamt = 0 - ll_realamt
  866. // s_take.msttakeamt = 0
  867. // s_take.takeamt = ll_realamt
  868. // s_take.takeamt_cn = ld_takeamt
  869. //
  870. // s_take.fpamt = ll_realamt
  871. //
  872. // s_take.dscrp = ls_about
  873. // s_take.billcode = ls_billcode
  874. // s_take.relcode = ls_part
  875. // s_take.banktypeid = ll_banktypeid
  876. // s_take.opemp = publ_operator
  877. // s_take.buildtype = 1
  878. // s_take.outwareid = ll_saletaskid
  879. // s_take.accountsid = ll_accountsid
  880. // s_take.itemid = ll_itemid
  881. // s_take.moneyid = ll_moneyid
  882. // s_take.moneyid_cn = ll_moneyid_account
  883. // s_take.mrate = ld_mrate
  884. //
  885. // s_take.taskdscrp = '订单'+ls_taskcode+'金额:'+String(ld_takeamt,'#,##0.00')
  886. ////////////////////////////////////
  887. IF uo_take.add_takerec(s_take,arg_msg,False) = 0 THEN
  888. rslt = 0
  889. GOTO ext
  890. END IF
  891. UPDATE u_taskdamt_mx
  892. SET paytaskid = :uo_take.ref_takeid
  893. WHERE u_taskdamt_mx.billid = :arg_billid
  894. And u_taskdamt_mx.printid = :arg_printid;
  895. IF sqlca.SQLCode <> 0 THEN
  896. arg_msg = '更新相关应收帐id失败'
  897. rslt = 0
  898. GOTO ext
  899. END IF
  900. // INSERT INTO u_bmsttake_fpmx
  901. // (takeid,
  902. // printid,
  903. // relid,
  904. // relbillcode,
  905. // fpamt,
  906. // fpdate,
  907. // fpemp,
  908. // scid)
  909. // Values (:uo_take.ref_takeid,
  910. // 1,
  911. // :ll_saletaskid,
  912. // :ls_taskcode,
  913. // :ll_realamt,
  914. // getdate(),
  915. // :publ_operator,
  916. // :arg_scid);
  917. // IF sqlca.SQLCode <> 0 THEN
  918. // arg_msg = '插入应收帐分配明细失败,'+sqlca.SQLErrText
  919. // rslt = 0
  920. // GOTO ext
  921. // END IF
  922. IF sys_option_msttake_takeamt_secaudit = 1 THEN
  923. Int li_item_dfttype,li_itemflag
  924. SELECT dfttype,itemflag
  925. INTO :li_item_dfttype,:li_itemflag
  926. FROM u_itemdef
  927. Where u_itemdef.itemid = :ll_itemid;
  928. IF sqlca.SQLCode <> 0 THEN
  929. arg_msg = '查询当前收支项目核算类型和核算方向失败!'
  930. rslt = 0
  931. GOTO ext
  932. END IF
  933. s_iteminput s_input
  934. s_input.itemid = ll_itemid
  935. s_input.dateint = 0
  936. s_input.outdate = ld_indate
  937. s_input.dscrp = ls_about
  938. s_input.outamt = ld_takeamt * li_itemflag
  939. s_input.accountsid = ll_accountsid
  940. s_input.banktypeid = ll_banktypeid
  941. s_input.billcode = ls_billcode
  942. s_input.relcode = ls_part
  943. s_input.buildtype = 1
  944. s_input.opemp = publ_operator
  945. s_input.relrep = ''
  946. s_input.scid = arg_scid
  947. s_input.moneyid = ll_moneyid
  948. IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN
  949. arg_msg = '增加收支明细帐失败!~n' + arg_msg
  950. rslt = 0
  951. GOTO ext
  952. END IF
  953. // IF uo_item.add_iteminput(arg_scid,ll_itemid,0,ld_indate,ls_about ,ld_takeamt * li_itemflag,ll_accountsid,&
  954. // arg_msg,False,ll_banktypeid,1,ls_billcode,ll_moneyid,ls_part) = 0 THEN
  955. // arg_msg = '增加收支明细帐失败!~n' + arg_msg
  956. // rslt = 0
  957. // GOTO ext
  958. // END IF
  959. // s_iteminput s_input
  960. //
  961. // s_input.itemid = ll_itemid
  962. // s_input.dateint = 0
  963. // s_input.outdate = ld_indate
  964. // s_input.dscrp = ls_about //'订单号:'+ls_taskcode+','+ls_dscrp
  965. //
  966. // CHOOSE CASE li_item_dfttype
  967. // CASE 1,3,4
  968. // s_input.outamt = ld_takeamt * li_itemflag
  969. // CASE ELSE
  970. // s_input.outamt = ld_takeamt
  971. // END CHOOSE
  972. //
  973. // s_input.accountsid = ll_accountsid
  974. // s_input.banktypeid = ll_banktypeid
  975. // s_input.billcode = ls_billcode
  976. // s_input.relcode = ls_part
  977. // s_input.relrep = ls_assign_emp
  978. // s_input.opemp = publ_operator
  979. // s_input.buildtype = 1
  980. //
  981. // IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN
  982. // arg_msg = '增加收支明细帐失败!~n' + arg_msg
  983. // rslt = 0
  984. // GOTO ext
  985. // END IF
  986. ref_dateint = uo_item.ref_dateint
  987. IF ref_dateint = 0 THEN
  988. arg_msg = '增加收支出纳明细帐失败!'
  989. rslt = 0
  990. GOTO ext
  991. END IF
  992. UPDATE u_taskdamt_mx
  993. SET reldateint = :ref_dateint
  994. WHERE u_taskdamt_mx.billid = :arg_billid
  995. And u_taskdamt_mx.printid = :arg_printid;
  996. IF sqlca.SQLCode <> 0 THEN
  997. arg_msg = '更新相关出纳帐id失败'
  998. rslt = 0
  999. GOTO ext
  1000. END IF
  1001. END IF
  1002. END IF
  1003. ext:
  1004. IF rslt = 0 THEN
  1005. ROLLBACK Using sqlca;
  1006. ELSEIF rslt = 1 And arg_ifcommit THEN
  1007. COMMIT Using sqlca;
  1008. END IF
  1009. Destroy uo_take
  1010. Destroy uo_item
  1011. RETURN rslt
  1012. end function
  1013. public function integer p_cancel_bmsttake (long arg_scid, long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,cnt = 0,i
  1014. uo_musttake uo_take
  1015. uo_take = Create uo_musttake
  1016. uo_iteminput uo_item
  1017. uo_item = Create uo_iteminput
  1018. //IF sys_option_msttake_takeamt_secaudit = -1000 THEN
  1019. // arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
  1020. // rslt = 0
  1021. // GOTO ext
  1022. //END IF
  1023. IF arg_billid = 0 THEN
  1024. rslt = 0
  1025. arg_msg = "没有撤审对象"
  1026. GOTO ext
  1027. END IF
  1028. Decimal ld_takeamt
  1029. Long ll_cusid,ll_paytaskid
  1030. Long ll_scid,ll_reldateint,ll_itemid
  1031. SELECT u_taskdamt_mx.takeamt,
  1032. u_taskdamt.cussptid,
  1033. u_taskdamt_mx.paytaskid,
  1034. u_taskdamt.scid,
  1035. u_taskdamt_mx.reldateint,
  1036. u_taskdamt_mx.itemid
  1037. INTO :ld_takeamt,
  1038. :ll_cusid,
  1039. :ll_paytaskid,
  1040. :ll_scid,
  1041. :ll_reldateint,
  1042. :ll_itemid
  1043. FROM u_taskdamt INNER JOIN
  1044. u_taskdamt_mx ON u_taskdamt.billid = u_taskdamt_mx.billid INNER JOIN
  1045. u_saleTask ON u_taskdamt_mx.relid = u_saleTask.TaskID
  1046. WHERE u_taskdamt.billid = :arg_billid
  1047. And u_taskdamt_mx.printid = :arg_printid;
  1048. IF sqlca.SQLCode <> 0 THEN
  1049. rslt = 0
  1050. arg_msg = "查询操作失败,订单相关信息!" +sqlca.SQLErrText
  1051. GOTO ext
  1052. END IF
  1053. IF ld_takeamt <> 0 THEN
  1054. IF uo_take.del_takerec(ll_scid,1,ll_paytaskid,ll_cusid,arg_msg,False) = 0 THEN
  1055. rslt = 0
  1056. GOTO ext
  1057. END IF
  1058. // DELETE FROM u_bmsttake_fpmx
  1059. // Where takeid = :ll_paytaskid;
  1060. // IF sqlca.SQLCode <> 0 THEN
  1061. // rslt = 0
  1062. // arg_msg = "删除应收帐相关分配明细失败!" +sqlca.SQLErrText
  1063. // GOTO ext
  1064. // END IF
  1065. END IF
  1066. UPDATE u_taskdamt_mx
  1067. SET paytaskid = 0
  1068. WHERE u_taskdamt_mx.billid = :arg_billid
  1069. And u_taskdamt_mx.printid = :arg_printid;
  1070. IF sqlca.SQLCode <> 0 THEN
  1071. arg_msg = '更新相关应收帐id失败'
  1072. rslt = 0
  1073. GOTO ext
  1074. END IF
  1075. IF sys_option_msttake_takeamt_secaudit = 1 THEN
  1076. IF ll_itemid > 0 And ll_reldateint > 0 THEN
  1077. IF uo_item.del_iteminput(ll_itemid,ll_reldateint,1,arg_msg,False) = 0 THEN
  1078. arg_msg = '删除收支明细帐失败!~n' + arg_msg
  1079. rslt = 0
  1080. GOTO ext
  1081. END IF
  1082. END IF
  1083. UPDATE u_taskdamt_mx
  1084. SET reldateint = 0
  1085. WHERE u_taskdamt_mx.billid = :arg_billid
  1086. And u_taskdamt_mx.printid = :arg_printid;
  1087. IF sqlca.SQLCode <> 0 THEN
  1088. arg_msg = '更新相关出纳帐id失败'
  1089. rslt = 0
  1090. GOTO ext
  1091. END IF
  1092. END IF
  1093. ext:
  1094. IF rslt = 0 THEN
  1095. ROLLBACK Using sqlca;
  1096. ELSEIF rslt = 1 And arg_ifcommit THEN
  1097. COMMIT Using sqlca;
  1098. END IF
  1099. Destroy uo_take
  1100. Destroy uo_item
  1101. RETURN rslt
  1102. end function
  1103. public function integer caudit (integer arg_del, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1104. DateTime null_dt
  1105. SetNull(null_dt)
  1106. IF arg_billid <= 0 THEN
  1107. rslt = 0
  1108. arg_msg = '错误单据唯一码'
  1109. GOTO ext
  1110. END IF
  1111. Int li_auditflag,li_billtype,li_damtflag,li_ifauto
  1112. Decimal ld_takeamt
  1113. Long ll_scid,ll_billtype
  1114. SELECT flag,scid,ifauto,billtype
  1115. INTO :li_auditflag,:ll_scid,:li_ifauto,:ll_billtype
  1116. FROM u_taskdamt
  1117. Where billid = :arg_billid;
  1118. IF sqlca.SQLCode <> 0 THEN
  1119. arg_msg = '查询单据审核标记失败,'+sqlca.SQLErrText
  1120. rslt = 0
  1121. GOTO ext
  1122. END IF
  1123. IF li_auditflag = 0 THEN
  1124. rslt = 0
  1125. arg_msg = "单据还未最终审核,不可以撤审"
  1126. GOTO ext
  1127. END IF
  1128. IF arg_del = 0 THEN
  1129. IF li_ifauto = 1 THEN
  1130. rslt = 0
  1131. arg_msg = "单据自动生成,不可手动撤审"
  1132. GOTO ext
  1133. END IF
  1134. END IF
  1135. s_taskdamtmx arg_bd_mx[]
  1136. Long ll_i
  1137. IF getinfo(arg_billid,arg_bd_mx[],arg_msg) = 0 THEN
  1138. rslt = 0
  1139. GOTO ext
  1140. END IF
  1141. IF UpperBound(arg_bd_mx) <= 0 THEN
  1142. rslt = 0
  1143. arg_msg = "明细错误,操作取消"
  1144. GOTO ext
  1145. END IF
  1146. FOR ll_i = 1 To UpperBound(arg_bd_mx) - 1
  1147. IF sys_option_mst_multimoney = 1 THEN //使用多币种
  1148. ld_takeamt = arg_bd_mx[ll_i].takeamt
  1149. ELSE // 系统不使用多币种,转换为人民币
  1150. ld_takeamt = arg_bd_mx[ll_i].realamt
  1151. END IF
  1152. //ld_takeamt = arg_bd_mx[ll_i].realamt
  1153. if ll_billtype = 0 then
  1154. IF arg_bd_mx[ll_i].billtype = 0 THEN //收订金
  1155. UPDATE u_SaleTask
  1156. SET takedamt = takedamt - :ld_takeamt
  1157. WHERE taskid = :arg_bd_mx[ll_i].relid
  1158. And scid = :ll_scid;
  1159. IF sqlca.SQLCode <> 0 THEN
  1160. rslt = 0
  1161. arg_msg = "因网络或其它原因导致更新销售订单操作失败"+"~n"+sqlca.SQLErrText
  1162. GOTO ext
  1163. END IF
  1164. ELSE //单据余款
  1165. UPDATE u_SaleTask
  1166. SET takeamt = takeamt - :ld_takeamt
  1167. WHERE taskid = :arg_bd_mx[ll_i].relid
  1168. And scid = :ll_scid;
  1169. IF sqlca.SQLCode <> 0 THEN
  1170. rslt = 0
  1171. arg_msg = "因网络或其它原因导致更新销售订单操作失败"+"~n"+sqlca.SQLErrText
  1172. GOTO ext
  1173. END IF
  1174. END IF
  1175. IF li_ifauto = 0 And arg_bd_mx[ll_i].billtype <> 2 THEN
  1176. IF p_cancel_bmsttake(ll_scid,arg_billid,arg_bd_mx[ll_i].printid,arg_msg,False ) = 0 THEN
  1177. rslt = 0
  1178. GOTO ext
  1179. END IF
  1180. END IF
  1181. else
  1182. UPDATE u_buytask
  1183. SET payamt = payamt - :ld_takeamt
  1184. WHERE taskid = :arg_bd_mx[ll_i].relid
  1185. And scid = :ll_scid;
  1186. IF sqlca.SQLCode <> 0 THEN
  1187. rslt = 0
  1188. arg_msg = "因网络或其它原因导致更新采购订单操作失败"+"~n"+sqlca.SQLErrText
  1189. GOTO ext
  1190. END IF
  1191. IF li_ifauto = 0 THEN
  1192. IF p_cancel_bmstpay(ll_scid,arg_billid,arg_bd_mx[ll_i].printid,arg_msg,False ) = 0 THEN
  1193. rslt = 0
  1194. GOTO ext
  1195. END IF
  1196. END IF
  1197. end if
  1198. NEXT
  1199. //更新审核标记
  1200. UPDATE u_taskdamt
  1201. SET permit_emp = '',
  1202. permit_date = :null_dt,
  1203. flag = 0
  1204. WHERE billid = :arg_billid
  1205. And flag = 1;
  1206. IF sqlca.SQLCode <> 0 THEN
  1207. rslt = 0
  1208. arg_msg = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  1209. GOTO ext
  1210. END IF
  1211. ext:
  1212. IF rslt = 0 THEN
  1213. ROLLBACK;
  1214. ELSEIF rslt = 1 And arg_ifcommit THEN
  1215. COMMIT;
  1216. END IF
  1217. RETURN rslt
  1218. end function
  1219. public function integer p_update_bmstpay (long arg_scid, long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1220. Long cnt = 0,i
  1221. uo_mustpay uo_pay
  1222. uo_pay = Create uo_mustpay
  1223. uo_iteminput uo_item
  1224. uo_item = Create uo_iteminput
  1225. String ls_mtrlname
  1226. String ls_about
  1227. Long ref_dateint
  1228. IF arg_billid = 0 THEN
  1229. rslt = 0
  1230. arg_msg = "没有审核对象"
  1231. GOTO ext
  1232. END IF
  1233. SELECT count(*) INTO :cnt
  1234. FROM u_user
  1235. Where username = :publ_operator Using sqlca ;
  1236. IF sqlca.SQLCode <> 0 THEN
  1237. rslt = 0
  1238. arg_msg = "查询操作失败,操作员"
  1239. GOTO ext
  1240. END IF
  1241. IF cnt = 0 THEN
  1242. rslt = 0
  1243. arg_msg = "操作员姓名未登记或已取消"
  1244. GOTO ext
  1245. END IF
  1246. Long ll_cusid
  1247. DateTime ld_indate
  1248. String ls_assign_emp,ls_billcode,ls_part
  1249. Decimal ld_takeamt,ld_mstpayamt
  1250. String ls_taskcode
  1251. Long ll_saletaskid,ll_banktypeid,ll_moneyid,ll_accountsid,ll_itemid
  1252. Dec ll_realamt
  1253. Long ll_billtype
  1254. Long ll_moneyid_account
  1255. Decimal ld_mrate
  1256. SELECT u_taskdamt.cussptid,
  1257. u_taskdamt.billdate,
  1258. u_taskdamt.assign_emp,
  1259. u_taskdamt.billcode,
  1260. u_taskdamt.part,
  1261. u_taskdamt_mx.billtype,
  1262. u_taskdamt_mx.takeamt,
  1263. u_taskdamt_mx.relTaskCode,
  1264. u_taskdamt_mx.banktypeid,
  1265. u_taskdamt_mx.relid,
  1266. u_taskdamt_mx.realmoneyid,
  1267. u_taskdamt_mx.accountsid,
  1268. u_taskdamt_mx.itemid,
  1269. u_taskdamt_mx.realamt,
  1270. u_taskdamt_mx.realrate,
  1271. billamt
  1272. INTO :ll_cusid,
  1273. :ld_indate,
  1274. :ls_assign_emp,
  1275. :ls_billcode,
  1276. :ls_part,
  1277. :ll_billtype,
  1278. :ld_takeamt,
  1279. :ls_taskcode,
  1280. :ll_banktypeid,
  1281. :ll_saletaskid,
  1282. :ll_moneyid,
  1283. :ll_accountsid,
  1284. :ll_itemid,
  1285. :ll_realamt,
  1286. :ld_mrate,
  1287. :ld_mstpayamt
  1288. FROM u_taskdamt INNER JOIN
  1289. u_taskdamt_mx ON u_taskdamt.billid = u_taskdamt_mx.billid
  1290. WHERE u_taskdamt.billid = :arg_billid
  1291. And u_taskdamt_mx.printid = :arg_printid
  1292. and u_taskdamt.billtype = 1 ;
  1293. IF sqlca.SQLCode <> 0 THEN
  1294. rslt = 0
  1295. arg_msg = "查询操作失败,订金单相关信息!" +sqlca.SQLErrText
  1296. GOTO ext
  1297. END IF
  1298. SELECT moneyid INTO :ll_moneyid_account
  1299. FROM u_accounts
  1300. Where accountsid = :ll_accountsid;
  1301. IF sqlca.SQLCode <> 0 THEN
  1302. arg_msg = '查询帐号币种资料失败,'+sqlca.SQLErrText
  1303. rslt = 0
  1304. GOTO ext
  1305. END IF
  1306. IF IsNull(ll_moneyid_account) THEN ll_moneyid_account = 0
  1307. IF ll_moneyid_account = 0 THEN
  1308. arg_msg = '帐号币种未指定,请检查'
  1309. rslt = 0
  1310. GOTO ext
  1311. END IF
  1312. //IF uo_pay.add_payrec (arg_scid,ll_cusid,ld_indate,ls_assign_emp,ld_mstpayamt,ld_mstpayamt,ld_takeamt,ls_about,&
  1313. // ls_billcode,ll_banktypeid,1,publ_operator,ll_saletaskid,0,arg_msg,False,ld_indate,ll_accountsid,ll_itemid,ll_moneyid,ls_part) = 0 THEN
  1314. // rslt = 0
  1315. // GOTO ext
  1316. //END IF
  1317. IF ld_takeamt <> 0 THEN
  1318. IF ll_billtype = 0 THEN
  1319. ls_about = ls_taskcode + "订金已付款"
  1320. ELSE
  1321. ls_about = ls_taskcode + "余额已付款"
  1322. END IF
  1323. // s_bmstpay s_pay
  1324. //
  1325. // s_pay.scid = arg_scid
  1326. // s_pay.sptid = ll_cusid
  1327. // s_pay.paydate = ld_indate
  1328. // s_pay.inrep = ls_assign_emp
  1329. // s_pay.oriamt =ld_takeamt ///
  1330. // s_pay.mstpayamt = ll_realamt///
  1331. //
  1332. // s_pay.payamt = ld_takeamt
  1333. //
  1334. // s_pay.dscrp = ls_about
  1335. // s_pay.billcode = ls_billcode
  1336. // s_pay.banktypeid = ll_banktypeid
  1337. // s_pay.buildtype = 4 ///
  1338. // s_pay.opemp = publ_operator
  1339. // s_pay.inwareid = ll_saletaskid
  1340. // s_pay.buybillid = 0///
  1341. // s_pay.viewdate = ld_indate
  1342. // s_pay.accountsid = ll_accountsid
  1343. // s_pay.itemid = ll_itemid
  1344. // s_pay.moneyid = ll_moneyid
  1345. // s_pay.relcode = ls_part
  1346. //
  1347. //
  1348. // IF uo_pay.add_payrecmx(arg_scid,uo_pay.ref_payid,ls_billcode,ld_indate,ll_banktypeid,ld_mstpayamt,ld_takeamt,&
  1349. // publ_operator,ls_about,ls_assign_emp,3,0,ll_itemid,ll_cusid,arg_msg,False, ll_moneyid,ls_part) = 0 THEN
  1350. // rslt = 0
  1351. // GOTO ext
  1352. // END IF
  1353. //IF uo_pay.add_payrec (arg_scid,ll_cusid,ld_indate,ls_assign_emp,ld_mstpayamt,ld_mstpayamt,ld_takeamt,ls_about,&
  1354. // ls_billcode,ll_banktypeid,1,publ_operator,ll_saletaskid,0,arg_msg,False,ld_indate,ll_accountsid,ll_itemid,ll_moneyid,ls_part) = 0 THEN
  1355. // rslt = 0
  1356. // GOTO ext
  1357. //END IF
  1358. IF uo_pay.add_payrec (arg_scid,ll_cusid,ld_indate,ls_assign_emp,ld_mstpayamt,0,ld_takeamt,ls_about,&
  1359. ls_billcode,ll_banktypeid,1,publ_operator,ll_saletaskid,0,arg_msg,False,ld_indate,ll_accountsid,ll_itemid,ll_moneyid,ls_part) = 0 THEN
  1360. rslt = 0
  1361. GOTO ext
  1362. END IF
  1363. UPDATE u_taskdamt_mx
  1364. SET paytaskid = :uo_pay.ref_payid
  1365. WHERE u_taskdamt_mx.billid = :arg_billid
  1366. And u_taskdamt_mx.printid = :arg_printid;
  1367. IF sqlca.SQLCode <> 0 THEN
  1368. arg_msg = '更新相关应付帐id失败'
  1369. rslt = 0
  1370. GOTO ext
  1371. END IF
  1372. //以下代码不用,因为 add_payrec 中已增加了一次收支明细帐
  1373. // IF sys_option_msttake_takeamt_secaudit = 1 THEN
  1374. // Int li_item_dfttype,li_itemflag
  1375. //
  1376. // SELECT dfttype,itemflag
  1377. // INTO :li_item_dfttype,:li_itemflag
  1378. // FROM u_itemdef
  1379. // Where u_itemdef.itemid = :ll_itemid;
  1380. // IF sqlca.SQLCode <> 0 THEN
  1381. // arg_msg = '查询当前收支项目核算类型和核算方向失败!'
  1382. // rslt = 0
  1383. // GOTO ext
  1384. // END IF
  1385. //
  1386. //
  1387. // s_iteminput s_input
  1388. //
  1389. // s_input.itemid = ll_itemid
  1390. // s_input.dateint = 0
  1391. // s_input.outdate = ld_indate
  1392. // s_input.dscrp = ls_about
  1393. // s_input.outamt = ld_takeamt * li_itemflag
  1394. // s_input.accountsid = ll_accountsid
  1395. // s_input.banktypeid = ll_banktypeid
  1396. // s_input.billcode = ls_billcode
  1397. // s_input.relcode = ls_part
  1398. // s_input.buildtype = 1
  1399. // s_input.opemp = publ_operator
  1400. // s_input.relrep = ''
  1401. // s_input.scid = arg_scid
  1402. // s_input.moneyid = ll_moneyid
  1403. //
  1404. // IF uo_item.add_iteminput(s_input,arg_msg,False) = 0 THEN
  1405. // arg_msg = '增加收支明细帐失败!~n' + arg_msg
  1406. // rslt = 0
  1407. // GOTO ext
  1408. // END IF
  1409. //
  1410. // ref_dateint = uo_item.ref_dateint
  1411. //
  1412. // IF ref_dateint = 0 THEN
  1413. // arg_msg = '增加收支出纳明细帐失败!'
  1414. // rslt = 0
  1415. // GOTO ext
  1416. // END IF
  1417. //
  1418. // UPDATE u_taskdamt_mx
  1419. // SET reldateint = :ref_dateint
  1420. // WHERE u_taskdamt_mx.billid = :arg_billid
  1421. // And u_taskdamt_mx.printid = :arg_printid;
  1422. // IF sqlca.SQLCode <> 0 THEN
  1423. // arg_msg = '更新相关出纳帐id失败'
  1424. // rslt = 0
  1425. // GOTO ext
  1426. // END IF
  1427. // END IF
  1428. END IF
  1429. ext:
  1430. IF rslt = 0 THEN
  1431. ROLLBACK Using sqlca;
  1432. ELSEIF rslt = 1 And arg_ifcommit THEN
  1433. COMMIT Using sqlca;
  1434. END IF
  1435. Destroy uo_pay
  1436. Destroy uo_item
  1437. RETURN rslt
  1438. end function
  1439. public function integer p_cancel_bmstpay (long arg_scid, long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,cnt = 0,i
  1440. uo_mustpay uo_pay
  1441. uo_pay = Create uo_mustpay
  1442. uo_iteminput uo_item
  1443. uo_item = Create uo_iteminput
  1444. //IF sys_option_msttake_takeamt_secaudit = -1000 THEN
  1445. // arg_msg = '选项:[139]客户收款单使用二级审核,读取初始默认值失败,操作取消!'
  1446. // rslt = 0
  1447. // GOTO ext
  1448. //END IF
  1449. IF arg_billid = 0 THEN
  1450. rslt = 0
  1451. arg_msg = "没有撤审对象"
  1452. GOTO ext
  1453. END IF
  1454. Decimal ld_takeamt
  1455. Long ll_cusid,ll_paytaskid
  1456. Long ll_scid,ll_reldateint,ll_itemid
  1457. SELECT u_taskdamt_mx.takeamt,
  1458. u_taskdamt.cussptid,
  1459. u_taskdamt_mx.paytaskid,
  1460. u_taskdamt.scid,
  1461. u_taskdamt_mx.reldateint,
  1462. u_taskdamt_mx.itemid
  1463. INTO :ld_takeamt,
  1464. :ll_cusid,
  1465. :ll_paytaskid,
  1466. :ll_scid,
  1467. :ll_reldateint,
  1468. :ll_itemid
  1469. FROM u_taskdamt INNER JOIN
  1470. u_taskdamt_mx ON u_taskdamt.billid = u_taskdamt_mx.billid INNER JOIN
  1471. u_buytask ON u_taskdamt_mx.relid = u_buytask.TaskID
  1472. WHERE u_taskdamt.billid = :arg_billid
  1473. And u_taskdamt_mx.printid = :arg_printid;
  1474. IF sqlca.SQLCode <> 0 THEN
  1475. rslt = 0
  1476. arg_msg = "查询操作失败,订单相关信息!" +sqlca.SQLErrText
  1477. GOTO ext
  1478. END IF
  1479. IF ld_takeamt <> 0 THEN
  1480. IF uo_pay.del_payrec(ll_scid,1,ll_paytaskid,ll_cusid,arg_msg,False) = 0 THEN
  1481. rslt = 0
  1482. GOTO ext
  1483. END IF
  1484. // DELETE FROM u_bmsttake_fpmx
  1485. // Where takeid = :ll_paytaskid;
  1486. // IF sqlca.SQLCode <> 0 THEN
  1487. // rslt = 0
  1488. // arg_msg = "删除应收帐相关分配明细失败!" +sqlca.SQLErrText
  1489. // GOTO ext
  1490. // END IF
  1491. END IF
  1492. UPDATE u_taskdamt_mx
  1493. SET paytaskid = 0
  1494. WHERE u_taskdamt_mx.billid = :arg_billid
  1495. And u_taskdamt_mx.printid = :arg_printid;
  1496. IF sqlca.SQLCode <> 0 THEN
  1497. arg_msg = '更新相关应收帐id失败'
  1498. rslt = 0
  1499. GOTO ext
  1500. END IF
  1501. //IF sys_option_msttake_takeamt_secaudit = 1 THEN
  1502. // IF ll_itemid > 0 And ll_reldateint > 0 THEN
  1503. // IF uo_item.del_iteminput(ll_itemid,ll_reldateint,1,arg_msg,False) = 0 THEN
  1504. // arg_msg = '删除收支明细帐失败!~n' + arg_msg
  1505. // rslt = 0
  1506. // GOTO ext
  1507. // END IF
  1508. // END IF
  1509. //
  1510. // UPDATE u_taskdamt_mx
  1511. // SET reldateint = 0
  1512. // WHERE u_taskdamt_mx.billid = :arg_billid
  1513. // And u_taskdamt_mx.printid = :arg_printid;
  1514. // IF sqlca.SQLCode <> 0 THEN
  1515. // arg_msg = '更新相关出纳帐id失败'
  1516. // rslt = 0
  1517. // GOTO ext
  1518. // END IF
  1519. //END IF
  1520. ext:
  1521. IF rslt = 0 THEN
  1522. ROLLBACK Using sqlca;
  1523. ELSEIF rslt = 1 And arg_ifcommit THEN
  1524. COMMIT Using sqlca;
  1525. END IF
  1526. Destroy uo_pay
  1527. Destroy uo_item
  1528. RETURN rslt
  1529. end function
  1530. on uo_taskdamt.create
  1531. call super::create
  1532. TriggerEvent( this, "constructor" )
  1533. end on
  1534. on uo_taskdamt.destroy
  1535. TriggerEvent( this, "destructor" )
  1536. call super::destroy
  1537. end on
  1538. event constructor;//String arg_msg
  1539. //String str_optionvalue
  1540. //str_optionvalue = ''
  1541. //f_get_sys_option_value('139',str_optionvalue,arg_msg)
  1542. //uo_option_msttake_takeamt_secaudit = Long(str_optionvalue)
  1543. end event
  1544. global type uo_incase from nonvisualobject
  1545. end type