123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572 |
- $PBExportHeader$uo_mtrlware_trans_fp.sru
- forward
- global type uo_mtrlware_trans_fp from nonvisualobject
- end type
- end forward
- global type uo_mtrlware_trans_fp from nonvisualobject
- end type
- global uo_mtrlware_trans_fp uo_mtrlware_trans_fp
- type variables
- Long uo_billid
- String uo_billcode
- end variables
- forward prototypes
- public function integer save (s_mtrlware_trans_fp arg_fp, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg)
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_billid, ref string arg_msg)
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getinfo (long arg_billid, ref s_mtrlware_trans_fp arg_s_ref, ref string arg_msg)
- public function integer caudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_billid, ref s_mtrlware_trans_fpmx arg_ref_mx[], ref s_mtrlware_trans_fpmx2 arg_ref_mx2[], ref long arg_arr_cnt, ref long arg_arr_cnt2, ref string arg_msg)
- public function integer affirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer caffirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer save (s_mtrlware_trans_fp arg_fp, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
- Long cnt = 0
- DateTime server_dt
- Long ll_billid,it_mxbt,it_mxbt2,i,j
- Int li_storagetype,li_ifbarcodefp,li_outtype
- Decimal ld_mxqty_sum,ld_barcodeqty
- String ls_sccode,ls_billcode
- Long ll_mx_taskid,ll_mx_taskprintid,ll_mtrlid
- IF IsNull(arg_fp.scid) THEN arg_fp.scid = 0
- IF IsNull(arg_fp.billid) THEN arg_fp.billid = 0
- IF IsNull(arg_fp.inrep) THEN arg_fp.inrep = ''
- IF IsNull(arg_fp.part) THEN arg_fp.part = ''
- IF IsNull(arg_fp.dscrp) THEN arg_fp.dscrp = ''
- IF IsNull(arg_fp.transqty) THEN arg_fp.transqty = 0
- IF IsNull(arg_fp.storageid) THEN arg_fp.storageid = 0
- IF IsNull(arg_fp.taskid) THEN arg_fp.taskid = 0
- IF IsNull(arg_fp.printid) THEN arg_fp.printid = 0
- IF IsNull(arg_fp.assignid) THEN arg_fp.assignid = 0
- IF IsNull(arg_fp.mtrlwareid) THEN arg_fp.mtrlwareid = 0
- IF IsNull(arg_fp.billtype) THEN arg_fp.billtype = 0
- IF IsNull(arg_fp.fpgrade) THEN arg_fp.fpgrade = 2
- IF arg_fp.scid < 0 THEN
- arg_msg = '错误的分部id'
- rslt = 0
- GOTO ext
- END IF
- IF arg_fp.storageid = 0 THEN
- arg_msg = '没有选择仓库,请检查'
- rslt = 0
- GOTO ext
- END IF
- IF f_rst_storage_storagetype(arg_fp.storageid,li_storagetype) = 0 THEN
- arg_msg = '查询仓库库存策略失败,操作取消'
- rslt = 0
- GOTO ext
- END IF
- IF li_storagetype <> 1 THEN
- arg_msg = '仓库不是使用库存分配策略失败,不能使用本单据,操作取消'
- rslt = 0
- GOTO ext
- END IF
- IF f_rst_storage_outtype(arg_fp.storageid,li_outtype) = 0 THEN
- arg_msg = '查询仓库出仓策略失败,操作取消'
- rslt = 0
- GOTO ext
- END IF
- //IF arg_fp.mtrlwareid = 0 THEN
- // arg_msg = '错误的调货库存id,可能调入的订单不存在库存资料,请检查'
- // rslt = 0
- // GOTO ext
- //END IF
- //select mtrlid into :ll_mtrlid
- //from u_mtrlware
- //where scid = :arg_fp.scid
- //and mtrlwareid = :arg_fp.mtrlwareid;
- //if sqlca.sqlcode <> 0 then
- // arg_msg = '查询调入库存物料id失败,'+sqlca.sqlerrtext
- // rslt = 0
- // goto ext
- //end if
- //
- //IF arg_fp.transqty <= 0 THEN
- // arg_msg = '错误的调货数量,请检查'
- // rslt = 0
- // GOTO ext
- //END IF
- IF arg_fp.inrep = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- IF arg_fp.taskid = 0 THEN
- arg_msg = '没有选择调入订单,请检查'
- rslt = 0
- GOTO ext
- END IF
- SELECT mtrlid INTO :ll_mtrlid
- FROM u_saletaskmx
- WHERE scid = :arg_fp.scid
- AND taskid = :arg_fp.taskid
- And printid = :arg_fp.printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询订单明细资料失败,操作取消,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- SELECT Top 1 getdate() Into :server_dt From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- GOTO ext
- END IF
- it_mxbt = UpperBound(arg_fp.arg_s_mx)
- IF it_mxbt <= 0 THEN
- rslt = 0
- arg_msg = "没有正确调货分配明细内容,请检查"
- GOTO ext
- END IF
- it_mxbt2 = UpperBound(arg_fp.arg_s_mx2)
- IF it_mxbt2 <= 0 THEN
- rslt = 0
- arg_msg = "没有正确调货明细内容,请检查"
- GOTO ext
- END IF
- FOR j = 1 To it_mxbt2
- ld_mxqty_sum = 0
- FOR i = 1 To it_mxbt
- IF arg_fp.arg_s_mx2[j].printid = arg_fp.arg_s_mx[i].mxprintid THEN
- ld_mxqty_sum += arg_fp.arg_s_mx[i].qty
- END IF
- NEXT
-
- IF arg_fp.arg_s_mx2[j].transqty <> ld_mxqty_sum THEN
- rslt = 0
- arg_msg = "单据调入明细行:"+String(j)+",调入数量:"+String(arg_fp.arg_s_mx2[j].transqty,'#0.##########')+",与调出明细调出数量总数:"+String(ld_mxqty_sum,'#0.##########')+",不相符,请检查"
- GOTO ext
- END IF
- NEXT
- IF arg_fp.billtype = 0 Or arg_fp.billtype = 1 THEN
- FOR i = 1 To it_mxbt
- IF arg_fp.arg_s_mx[i].transtype = 0 THEN
- arg_fp.arg_s_mx[i].assignid = 0
- arg_fp.arg_s_mx[i].taskid = 0
- arg_fp.arg_s_mx[i].taskprintid = 0
- ELSE
- SELECT Relbillid,relprintid
- INTO :ll_mx_taskid,:ll_mx_taskprintid
- FROM u_mtrlware_assign
- Where assignid = :arg_fp.arg_s_mx[i].assignid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '调出明细行:'+String(i)+',查询库存分配相关订单信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- arg_fp.arg_s_mx[i].taskid = ll_mx_taskid
- arg_fp.arg_s_mx[i].taskprintid = ll_mx_taskprintid
- END IF
-
- IF li_outtype = 2 Or li_outtype = 3 THEN
- SELECT u_mtrldef.ifbarcodefp
- INTO :li_ifbarcodefp
- FROM u_mtrldef,u_mtrlware
- WHERE u_mtrldef.mtrlid = u_mtrlware.mtrlid
- AND u_mtrlware.scid = :arg_fp.scid
- And u_mtrlware.mtrlwareid = :arg_fp.arg_s_mx[i].mtrlwareid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '调出明细行:'+String(i)+',查询库存对应物料属性<库存条码指定分配订单>失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF li_ifbarcodefp = 1 THEN
- IF arg_fp.arg_s_mx[i].barcode = '' THEN
- arg_msg = '调出明细行:'+String(i)+',库存对应物料设置了<库存条码指定分配订单>属性,但没有选择条码,请检查'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT u_mtrlware_mx.qty*u_mtrlware_mx.packqty
- INTO :ld_barcodeqty
- FROM u_mtrlware_mx
- Where u_mtrlware_mx.barcode = :arg_fp.arg_s_mx[i].barcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '调出明细行:'+String(i)+',查询条码:'+arg_fp.arg_s_mx[i].barcode+',库存信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_fp.arg_s_mx[i].qty <> ld_barcodeqty THEN
- arg_msg = '调出明细行:'+String(i)+',条码:'+arg_fp.arg_s_mx[i].barcode+',代表库存数与调出数量不相符,请检查'
- rslt = 0
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- END IF
- IF arg_fp.billid = 0 THEN
-
- ll_billid = f_sys_scidentity(0,"u_mtrlware_trans_fp","billid",arg_msg,True,id_sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_fp.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_fp.billtype = 0 THEN //调货单
- ls_billcode = getid(arg_fp.scid,ls_sccode + 'TP',Date(server_dt),False,sqlca)
- ELSEIF arg_fp.billtype = 1 THEN //借货单
- ls_billcode = getid(arg_fp.scid,ls_sccode + 'TB',Date(server_dt),False,sqlca)
- ELSEIF arg_fp.billtype = 2 THEN //还货单
- ls_billcode = getid(arg_fp.scid,ls_sccode + 'TR',Date(server_dt),False,sqlca)
- END IF
-
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_mtrlware_trans_fp
- (scid,
- billid,
- billcode,
- billdate,
- inrep,
- opdate,
- opemp,
- flag,
- part,
- dscrp,
- storageid,
- mtrlwareid,
- taskid,
- printid,
- transqty,
- billtype,
- mtrlid,
- fpgrade)
- VALUES (
- :arg_fp.scid,
- :ll_billid,
- :ls_billcode,
- :arg_fp.billdate,
- :arg_fp.inrep,
- getdate(),
- :arg_opemp,
- 0,
- :arg_fp.part,
- :arg_fp.dscrp,
- :arg_fp.storageid,
- :arg_fp.mtrlwareid,
- :arg_fp.taskid,
- :arg_fp.printid,
- :arg_fp.transqty,
- :arg_fp.billtype,
- :ll_mtrlid,
- :arg_fp.fpgrade) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 To it_mxbt
- INSERT INTO u_mtrlware_transmx_fp
- (billid,
- printid,
- transtype,
- assignid,
- Qty,
- mxdscrp,
- taskid,
- taskprintid,
- mxprintid,
- relid,
- relprintid,
- mtrlwareid,
- rel_assignid,
- barcode,
- scid)
- VALUES (:ll_billid,
- :arg_fp.arg_s_mx[i].printid,
- :arg_fp.arg_s_mx[i].transtype,
- :arg_fp.arg_s_mx[i].assignid,
- :arg_fp.arg_s_mx[i].qty,
- :arg_fp.arg_s_mx[i].mxdscrp,
- :arg_fp.arg_s_mx[i].taskid,
- :arg_fp.arg_s_mx[i].taskprintid,
- :arg_fp.arg_s_mx[i].mxprintid,
- :arg_fp.arg_s_mx[i].relid,
- :arg_fp.arg_s_mx[i].relprintid,
- :arg_fp.arg_s_mx[i].mtrlwareid,
- :arg_fp.arg_s_mx[i].rel_assignid,
- :arg_fp.arg_s_mx[i].barcode,
- :arg_fp.scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- FOR i = 1 To it_mxbt2
- INSERT INTO u_mtrlware_transmx_fp2
- (billid,
- printid,
- mtrlid,
- assignid,
- transqty,
- mtrlwareid,
- taskid,
- taskprintid,
- status,
- woodcode,
- pcode,
- sonscale,
- mxtype,
- scid)
- VALUES (:ll_billid,
- :arg_fp.arg_s_mx2[i].printid,
- :arg_fp.arg_s_mx2[i].mtrlid,
- :arg_fp.arg_s_mx2[i].assignid,
- :arg_fp.arg_s_mx2[i].transqty,
- :arg_fp.arg_s_mx2[i].mtrlwareid,
- :arg_fp.arg_s_mx2[i].taskid,
- :arg_fp.arg_s_mx2[i].taskprintid,
- :arg_fp.arg_s_mx2[i].status,
- :arg_fp.arg_s_mx2[i].woodcode,
- :arg_fp.arg_s_mx2[i].pcode,
- :arg_fp.arg_s_mx2[i].sonscale,
- :arg_fp.arg_s_mx2[i].mxtype,
- :arg_fp.scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细2操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- uo_billid = ll_billid
- uo_billcode = ls_billcode
- ELSE
- UPDATE u_mtrlware_trans_fp
- SET billdate = :arg_fp.billdate,
- inrep = :arg_fp.inrep,
- moddate = getdate(),
- modemp = :arg_opemp,
- part = :arg_fp.part,
- storageid = :arg_fp.storageid,
- mtrlwareid = :arg_fp.mtrlwareid,
- taskid = :arg_fp.taskid,
- printid = :arg_fp.printid,
- transqty = :arg_fp.transqty,
- fpgrade = :arg_fp.fpgrade,
- dscrp = :arg_fp.dscrp,
- mtrlid = :ll_mtrlid
- WHERE billid = :arg_fp.billid
- And flag = 0;
- IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_mtrlware_transmx_fp
- Where billid = :arg_fp.billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除原明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_mtrlware_transmx_fp2
- Where billid = :arg_fp.billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除原明细2操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- FOR i = 1 To it_mxbt
- INSERT INTO u_mtrlware_transmx_fp
- (billid,
- printid,
- transtype,
- assignid,
- Qty,
- mxdscrp,
- taskid,
- taskprintid,
- mxprintid,
- relid,
- relprintid,
- mtrlwareid,
- rel_assignid,
- barcode,
- scid)
- VALUES (:arg_fp.billid,
- :arg_fp.arg_s_mx[i].printid,
- :arg_fp.arg_s_mx[i].transtype,
- :arg_fp.arg_s_mx[i].assignid,
- :arg_fp.arg_s_mx[i].qty,
- :arg_fp.arg_s_mx[i].mxdscrp,
- :arg_fp.arg_s_mx[i].taskid,
- :arg_fp.arg_s_mx[i].taskprintid,
- :arg_fp.arg_s_mx[i].mxprintid,
- :arg_fp.arg_s_mx[i].relid,
- :arg_fp.arg_s_mx[i].relprintid,
- :arg_fp.arg_s_mx[i].mtrlwareid,
- :arg_fp.arg_s_mx[i].rel_assignid,
- :arg_fp.arg_s_mx[i].barcode,
- :arg_fp.scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- FOR i = 1 To it_mxbt2
- INSERT INTO u_mtrlware_transmx_fp2
- (billid,
- printid,
- mtrlid,
- assignid,
- transqty,
- mtrlwareid,
- taskid,
- taskprintid,
- status,
- woodcode,
- pcode,
- sonscale,
- mxtype,
- scid)
- VALUES (:arg_fp.billid,
- :arg_fp.arg_s_mx2[i].printid,
- :arg_fp.arg_s_mx2[i].mtrlid,
- :arg_fp.arg_s_mx2[i].assignid,
- :arg_fp.arg_s_mx2[i].transqty,
- :arg_fp.arg_s_mx2[i].mtrlwareid,
- :arg_fp.arg_s_mx2[i].taskid,
- :arg_fp.arg_s_mx2[i].taskprintid,
- :arg_fp.arg_s_mx2[i].status,
- :arg_fp.arg_s_mx2[i].woodcode,
- :arg_fp.arg_s_mx2[i].pcode,
- :arg_fp.arg_s_mx2[i].sonscale,
- :arg_fp.arg_s_mx2[i].mxtype,
- :arg_fp.scid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细2操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- uo_billid = arg_fp.billid
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF arg_ifcommit And rslt = 1 THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- s_mtrlware_trans_fp arg_s_ref
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_s_ref,arG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.flag = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_mtrlware_trans_fp
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- Where u_mtrlware_trans_fp.billid = :arg_billid;
- IF SQLCA.SQLCode <> 0 THEN
- rslt = 0
- arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 1 THEN
- COMMIT;
- ELSE
- ROLLBACK;
- END IF
- Return (rslt)
- end function
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- s_mtrlware_trans_fp arg_s_ref
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_s_ref,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.affirmflag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待初审状态,不可以删除'
- GOTO ext
- END IF
- DELETE FROM u_mtrlware_transmx_fp
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据调出明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_mtrlware_transmx_fp2
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据调入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_mtrlware_trans_fp
- WHERE billid = :arg_billid
- And flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
- s_mtrlware_trans_fp arg_s_ref
- Long cnt
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_s_ref,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以修改,要修改请先撤销审核'
- GOTO ext
- END IF
- IF arg_s_ref.affirmflag = 1 THEN
- rslt = 0
- ARG_MSG = '单据已经初审,不可以修改,要修改请先撤销审核'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_array,ll_array2,i,j,k,ll_ref_assiginid
- Decimal ld_qty_lend,ld_qty_return
- Decimal ld_notoutqty
- Decimal ld_sumoutqty_bill,ld_sumnotoutqty,ld_assign_outqty
- Long ll_row,ll_mtrlwareid
- Long ll_mxprintid
- Long ll_taskid,ll_taskprintid
- String ls_taskcode
- Int li_ifbarcodefp,li_outtype_storage
- Decimal ld_notallocqty
- s_mtrlware_trans_fp arg_s_ref
- s_mtrlware_trans_fpmx arg_ref_mx[]
- s_mtrlware_trans_fpmx2 arg_ref_mx2[]
- uo_mtrlware_assign uo_assign_bill
- uo_assign_bill = Create uo_mtrlware_assign
- uo_assign_bill.commit_transaction = sqlca
- uo_getbar uo_bar
- uo_bar = Create uo_getbar
- datastore ds_out_assign
- ds_out_assign = Create datastore
- ds_out_assign.DataObject = 'ds_outwaremx_assign'
- ds_out_assign.SetTransObject(sqlca)
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.affirmflag <> 1 THEN
- rslt = 0
- ARG_MSG = '单据没有初审,不可以终审'
- GOTO ext
- END IF
- IF arg_s_ref.flag <> 0 THEN
- rslt = 0
- ARG_MSG = '单据不是在待终审状态,不可以终审'
- GOTO ext
- END IF
- SELECT outtype INTO :li_outtype_storage
- FROM u_storage
- Where u_storage.storageid = :arg_s_ref.storageid;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = '查询仓库出仓策略失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF getinfo(arg_billid,arg_ref_mx,arg_ref_mx2,ll_array,ll_array2,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_mtrlware_trans_fp
- SET auditingrep = :arg_opemp,
- auditingdate = getdate(),
- flag = 1
- WHERE billid = :arg_billid
- And flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在审核,请稍后重试"
- GOTO ext
- END IF
- IF arg_s_ref.billtype = 0 Or arg_s_ref.billtype = 1 THEN
- //处理调出明细
-
-
- FOR i = 1 To ll_array
- IF arg_ref_mx[i].transtype = 0 THEN CONTINUE
-
- IF arg_s_ref.billtype = 0 And arg_ref_mx[i].barcode <> '' THEN
- uo_assign_bill.li_if_uo_mtrlware_trans_fp_deluse = 1
- ELSE
- uo_assign_bill.li_if_uo_mtrlware_trans_fp_deluse = 0
- END IF
-
- IF uo_assign_bill.uof_assign_del(arg_ref_mx[i].assignid,&
- arg_ref_mx[i].qty,ARG_MSG,False) = 0 THEN
- ARG_MSG = '明细行:'+String(i)+','+ARG_MSG
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- //处理调入明细
- FOR i = 1 To ll_array
- ll_taskid = 0
- ll_taskprintid = 0
-
- FOR j = 1 To ll_array2
- IF arg_ref_mx2[j].printid = arg_ref_mx[i].mxprintid THEN
- ll_taskid = arg_ref_mx2[j].taskid
- ll_taskprintid = arg_ref_mx2[j].taskprintid
- li_ifbarcodefp = arg_ref_mx2[j].ifbarcodefp
- ls_taskcode = arg_s_ref.taskcode
- EXIT
- END IF
- NEXT
-
- IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,&
- arg_ref_mx[i].mtrlwareid,1,ll_taskid,&
- ll_taskprintid,arg_ref_mx[i].qty,0,'','','',&
- 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_ref_assiginid = uo_assign_bill.uo_assignid
-
- UPDATE u_mtrlware_transmx_fp
- SET rel_assignid = :ll_ref_assiginid
- WHERE billid = :arg_billid
- And printid = :arg_ref_mx[i].printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "更新调入明细相关库存分配id操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
- IF li_ifbarcodefp = 1 And &
- arg_s_ref.billtype = 0 And &
- arg_ref_mx[i].barcode <> '' And &
- ( li_outtype_storage = 2 Or li_outtype_storage = 3 ) THEN
- IF uo_bar.uof_barcode_fp(arg_ref_mx[i].barcode,ls_taskcode,ll_taskid,ll_taskprintid,ARG_MSG,False) = 0 THEN
- rslt = 0
- ARG_MSG = "更新调出明细行:"+String(i)+",条码相关调入订单信息失败"+"~n"+ARG_MSG
- GOTO ext
- END IF
- END IF
- NEXT
-
- // FOR i = 1 To ll_array2
- // IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,&
- // arg_ref_mx2[i].mtrlwareid,1,arg_ref_mx2[i].taskid,&
- // arg_ref_mx2[i].taskprintid,arg_ref_mx2[i].transqty,0,'','','',&
- // 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN
- // rslt = 0
- // GOTO ext
- // END IF
- //
- // ll_ref_assiginid = uo_assign_bill.uo_assignid
- //
- // UPDATE u_mtrlware_transmx_fp2
- // SET assignid = :ll_ref_assiginid
- // WHERE billid = :arg_billid
- // And printid = :arg_ref_mx2[i].printid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // ARG_MSG = "更新调入明细相关库存分配id操作失败"+"~n"+sqlca.SQLErrText
- // GOTO ext
- // END IF
- // NEXT
- ELSEIF arg_s_ref.billtype = 2 THEN
- //扣减还货明细
-
- FOR i = 1 To ll_array
- FOR k = 1 To ll_array2
- IF arg_ref_mx2[k].printid = arg_ref_mx[i].mxprintid THEN
- IF arg_ref_mx2[k].mxtype = 0 THEN
- GOTO _next
- END IF
-
- ll_taskid = arg_ref_mx2[k].taskid
- ll_taskprintid = arg_ref_mx2[k].taskprintid
- EXIT
- END IF
- NEXT
-
- ll_row = ds_out_assign.Retrieve(arg_s_ref.scid,arg_ref_mx[i].mtrlwareid,ll_taskid,ll_taskprintid)
-
- ds_out_assign.AcceptText()
-
- IF ll_row <= 0 THEN
- ld_sumnotoutqty = 0
- ELSE
- ld_sumnotoutqty = ds_out_assign.Object.sumnotoutqty[1]
- END IF
-
- ld_sumoutqty_bill = 0
- ld_sumoutqty_bill = arg_ref_mx2[i].transqty
-
- IF ld_sumoutqty_bill > ld_sumnotoutqty THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,库存可还货数量只有:'+String(ld_sumnotoutqty,'#,##0.##########')+',不能还货:'+String(arg_ref_mx2[i].transqty,'#,##0.##########')
- GOTO ext
- ELSE
- ld_assign_outqty = 0
- FOR j = 1 To ds_out_assign.RowCount()
- IF ds_out_assign.Object.notoutqty[j] >= ld_sumoutqty_bill THEN
- ld_assign_outqty = ld_sumoutqty_bill
- IF uo_assign_bill.uof_assign_del(ds_out_assign.Object.assignid[j],&
- ld_assign_outqty,ARG_MSG,False) = 0 THEN
- ARG_MSG = '明细行:'+String(i)+','+ARG_MSG
- rslt = 0
- GOTO ext
- END IF
- EXIT
- ELSE
- ld_assign_outqty = ds_out_assign.Object.notoutqty[j]
- IF uo_assign_bill.uof_assign_del(ds_out_assign.Object.assignid[j],&
- ld_assign_outqty,ARG_MSG,False) = 0 THEN
- ARG_MSG = '明细行:'+String(i)+','+ARG_MSG
- rslt = 0
- GOTO ext
- END IF
- ld_sumoutqty_bill = ld_sumoutqty_bill - ld_assign_outqty
- END IF
- NEXT
- END IF
- _next:
- NEXT
-
- //增加调入明细
- FOR i = 1 To ll_array
-
- IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,&
- arg_ref_mx[i].mtrlwareid,1,arg_ref_mx[i].taskid,&
- arg_ref_mx[i].taskprintid,arg_ref_mx[i].qty,0,'','','',&
- 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_ref_assiginid = uo_assign_bill.uo_assignid
-
- UPDATE u_mtrlware_transmx_fp
- SET assignid = :ll_ref_assiginid
- WHERE billid = :arg_billid
- And printid = :arg_ref_mx[i].printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "更新调入明细相关库存分配id操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- NEXT
-
- END IF
- //还货单要更新借货单的已还货数
- IF arg_s_ref.billtype = 2 THEN
- FOR i = 1 To ll_array
- IF arg_ref_mx[i].relid > 0 And arg_ref_mx[i].Relprintid > 0 THEN
- SELECT qty,returnqty
- INTO :ld_qty_lend,:ld_qty_return
- FROM u_mtrlware_transmx_fp
- WHERE billid = :arg_ref_mx[i].relid
- And printid = :arg_ref_mx[i].Relprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,查询相关借货单数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF arg_ref_mx[i].qty > ld_qty_lend - ld_qty_return THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,未还货数只有:'+String(ld_qty_lend - ld_qty_return,'#,##0.##########')+',不能还货:'+String(arg_ref_mx[i].qty,'#,##0.##########')
- GOTO ext
- END IF
-
- UPDATE u_mtrlware_transmx_fp
- SET returnqty = returnqty + :arg_ref_mx[i].qty
- WHERE billid = :arg_ref_mx[i].relid
- And printid = :arg_ref_mx[i].Relprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,更新相关借货单已还货数失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT mxprintid
- INTO :ll_mxprintid
- FROM u_mtrlware_transmx_fp
- WHERE billid = :arg_ref_mx[i].relid
- And printid = :arg_ref_mx[i].Relprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,查询相关借货单明细信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_mtrlware_transmx_fp2
- SET returnqty = returnqty + :arg_ref_mx[i].qty
- WHERE billid = :arg_ref_mx[i].relid
- And printid = :ll_mxprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,更新相关借货单调入明细已还货数失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- NEXT
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_assign_bill
- Destroy ds_out_assign
- Destroy uo_bar
- RETURN rslt
- end function
- public function integer p_getinfo (long arg_billid, ref s_mtrlware_trans_fp arg_s_ref, ref string arg_msg);Int rslt = 1
- SELECT u_mtrlware_trans_fp.scid,
- u_mtrlware_trans_fp.billid,
- u_mtrlware_trans_fp.billdate,
- u_mtrlware_trans_fp.flag,
- u_mtrlware_trans_fp.inrep,
- u_mtrlware_trans_fp.part,
- u_mtrlware_trans_fp.dscrp,
- u_mtrlware_trans_fp.storageid,
- u_mtrlware_trans_fp.taskid,
- u_mtrlware_trans_fp.printid,
- u_mtrlware_trans_fp.transqty,
- u_mtrlware_trans_fp.assignid,
- u_mtrlware_trans_fp.mtrlwareid,
- u_mtrlware_trans_fp.billtype,
- u_mtrlware_trans_fp.fpgrade,
- isnull(u_saletask.taskcode,''),
- u_mtrlware_trans_fp.affirmflag,
- u_mtrlware_trans_fp.affirmrep,
- u_mtrlware_trans_fp.affirmdate
- INTO :arg_s_ref.scid,
- :arg_s_ref.billid,
- :arg_s_ref.billdate,
- :arg_s_ref.flag,
- :arg_s_ref.inrep,
- :arg_s_ref.part,
- :arg_s_ref.dscrp,
- :arg_s_ref.storageid,
- :arg_s_ref.taskid,
- :arg_s_ref.printid,
- :arg_s_ref.transqty,
- :arg_s_ref.assignid,
- :arg_s_ref.mtrlwareid,
- :arg_s_ref.billtype,
- :arg_s_ref.fpgrade,
- :arg_s_ref.taskcode,
- :arg_s_ref.affirmflag,
- :arg_s_ref.affirmrep,
- :arg_s_ref.affirmdate
- FROM u_mtrlware_trans_fp left outer join u_saletask
- on u_mtrlware_trans_fp.scid = u_saletask.scid
- and u_mtrlware_trans_fp.taskid = u_saletask.taskid
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer caudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long cnt,ll_array,ll_array2,i,j,k
- Decimal ld_qty_return
- Long ll_mtrlwareid,ll_mxprintid
- Long ll_taskid,ll_taskprintid,ll_assiginid
- s_mtrlware_trans_fp arg_s_ref
- s_mtrlware_trans_fpmx arg_ref_mx[]
- s_mtrlware_trans_fpmx2 arg_ref_mx2[]
- uo_mtrlware_assign uo_assign_bill
- uo_assign_bill = Create uo_mtrlware_assign
- uo_assign_bill.commit_transaction = sqlca
- uo_getbar uo_bar
- uo_bar = Create uo_getbar
- DateTime null_dt
- SetNull(null_dt)
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.flag <> 1 THEN
- rslt = 0
- ARG_MSG = '单据不是在已审状态,不可以撤审'
- GOTO ext
- END IF
- IF getinfo(arg_billid,arg_ref_mx,arg_ref_mx2,ll_array,ll_array2,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //如果是借货单,需求检查是否已开还货单
- IF arg_s_ref.billtype = 1 THEN
- SELECT count(*)
- INTO :cnt
- FROM u_mtrlware_transmx_fp
- Where relid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询借货单是否已开还货单失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- ARG_MSG = '本借货单已开相关还货单,不能撤审,请检查'
- rslt = 0
- GOTO ext
- END IF
- END IF
- //更新审核标记
- UPDATE u_mtrlware_trans_fp
- SET auditingrep = '',
- auditingdate = :null_dt,
- flag = 0,
- assignid = 0
- WHERE billid = :arg_billid
- And flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在撤审,请稍后重试"
- GOTO ext
- END IF
- IF arg_s_ref.billtype = 0 Or arg_s_ref.billtype = 1 THEN
- //处理调入明细
- FOR i = 1 To ll_array
-
- IF arg_s_ref.billtype = 0 And arg_ref_mx[i].barcode <> '' THEN
- uo_assign_bill.li_if_uo_mtrlware_trans_fp_deluse = 1
- ELSE
- uo_assign_bill.li_if_uo_mtrlware_trans_fp_deluse = 0
- END IF
-
- IF uo_assign_bill.uof_assign_del(arg_ref_mx[i].rel_assignid,&
- arg_ref_mx[i].qty,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- //处理调出明细
- FOR i = 1 To ll_array
- IF arg_ref_mx[i].transtype = 0 THEN CONTINUE
-
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_mtrlware_assign
- Where assignid = :arg_ref_mx[i].assignid;
- IF sqlca.SQLCode <> 0 THEN cnt = 0
-
- IF cnt = 1 THEN
- IF uo_assign_bill.uof_assign_del(arg_ref_mx[i].assignid,&
- 0 - arg_ref_mx[i].qty,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- ELSE
- // SELECT mtrlwareid
- // INTO :ll_mtrlwareid
- // FROM u_mtrlware_transmx_fp
- // WHERE billid = :arg_billid
- // And printid = :arg_ref_mx[i].printid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // ARG_MSG = '调出明细第'+String(i)+'行,查询库存信息失败,'+sqlca.SQLErrText
- // GOTO ext
- // END IF
-
- IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,&
- arg_ref_mx[i].mtrlwareid,1,arg_ref_mx[i].taskid,&
- arg_ref_mx[i].taskprintid,arg_ref_mx[i].qty,0,'','','',&
- 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_assiginid = uo_assign_bill.uo_assignid
-
- UPDATE u_mtrlware_transmx_fp
- SET assignid = :ll_assiginid
- WHERE billid = :arg_billid
- And printid = :arg_ref_mx[i].printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "更新调入明细库存分配id操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF arg_ref_mx[i].barcode <> '' And arg_s_ref.billtype = 0 THEN
- IF uo_bar.uof_barcode_fp(arg_ref_mx[i].barcode,arg_ref_mx[i].taskcode,arg_ref_mx[i].taskid,arg_ref_mx[i].taskprintid,ARG_MSG,False) = 0 THEN
- rslt = 0
- ARG_MSG = "更新调出明细行:"+String(i)+",条码相关调入订单信息失败"+"~n"+ARG_MSG
- GOTO ext
- END IF
- END IF
- END IF
- NEXT
- ELSEIF arg_s_ref.billtype = 2 THEN
- //扣减调入明细_mx
- FOR i = 1 To ll_array
- IF uo_assign_bill.uof_assign_del(arg_ref_mx[i].assignid,&
- arg_ref_mx[i].qty,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- //增加还货明细_mx2
- FOR i = 1 To ll_array
- FOR k = 1 To ll_array2
- IF arg_ref_mx2[k].printid = arg_ref_mx[i].mxprintid THEN
-
- IF arg_ref_mx2[k].mxtype = 0 THEN
- GOTO _next
- END IF
-
- ll_taskid = arg_ref_mx2[k].taskid
- ll_taskprintid = arg_ref_mx2[k].taskprintid
- EXIT
- END IF
- NEXT
-
- IF uo_assign_bill.uof_assign_add(arg_s_ref.scid,&
- arg_ref_mx[i].mtrlwareid,1,ll_taskid,&
- ll_taskprintid,arg_ref_mx[i].qty,0,'','','',&
- 0,arg_s_ref.fpgrade,arg_opemp,ARG_MSG,False) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- _next:
- NEXT
- END IF
- IF arg_s_ref.billtype = 2 THEN
- FOR i = 1 To ll_array
- IF arg_ref_mx[i].relid > 0 And arg_ref_mx[i].Relprintid > 0 THEN
- SELECT returnqty
- INTO :ld_qty_return
- FROM u_mtrlware_transmx_fp
- WHERE billid = :arg_ref_mx[i].relid
- And printid = :arg_ref_mx[i].Relprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,查询相关借货单数量失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF arg_ref_mx[i].qty > ld_qty_return THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,已还货数只有:'+String(ld_qty_return,'#,##0.##########')+',不能撤消还货:'+String(arg_ref_mx[i].qty,'#,##0.##########')
- GOTO ext
- END IF
-
- UPDATE u_mtrlware_transmx_fp
- SET returnqty = returnqty - :arg_ref_mx[i].qty
- WHERE billid = :arg_ref_mx[i].relid
- And printid = :arg_ref_mx[i].Relprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,更新相关借货单已还货数失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT mxprintid
- INTO :ll_mxprintid
- FROM u_mtrlware_transmx_fp
- WHERE billid = :arg_ref_mx[i].relid
- And printid = :arg_ref_mx[i].Relprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,查询相关借货单明细信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_mtrlware_transmx_fp2
- SET returnqty = returnqty - :arg_ref_mx[i].qty
- WHERE billid = :arg_ref_mx[i].relid
- And printid = :ll_mxprintid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '第'+String(i)+'行,更新相关借货单调入明细已还货数失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- NEXT
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_assign_bill
- Destroy uo_bar
- RETURN rslt
- end function
- public function integer getinfo (long arg_billid, ref s_mtrlware_trans_fpmx arg_ref_mx[], ref s_mtrlware_trans_fpmx2 arg_ref_mx2[], ref long arg_arr_cnt, ref long arg_arr_cnt2, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- Long j = 1,no_mxcheck2 = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_mx CURSOR FOR
- SELECT u_mtrlware_transmx_fp.transtype,
- u_mtrlware_transmx_fp.assignid,
- u_mtrlware_transmx_fp.qty,
- u_mtrlware_transmx_fp.mxDscrp,
- u_mtrlware_transmx_fp.taskid,
- u_mtrlware_transmx_fp.taskprintid,
- u_mtrlware_transmx_fp.mxprintid,
- u_mtrlware_transmx_fp.relid,
- u_mtrlware_transmx_fp.relprintid,
- u_mtrlware_transmx_fp.printid,
- u_mtrlware_transmx_fp.mtrlwareid,
- u_mtrlware_transmx_fp.rel_assignid,
- u_mtrlware_transmx_fp.barcode,
- isnull(u_saletask.taskcode,'')
- FROM u_mtrlware_transmx_fp INNER join u_mtrlware_trans_fp on
- u_mtrlware_transmx_fp.billid = u_mtrlware_trans_fp.billid left OUTER join u_saletask on
- u_mtrlware_transmx_fp.taskid = u_saletask.taskid AND
- u_mtrlware_trans_fp.scid = u_saletask.scid
- WHERE u_mtrlware_transmx_fp.billid = :arg_billid
- Order By u_mtrlware_transmx_fp.printid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO :arg_ref_mx[i].transtype,
- :arg_ref_mx[i].assignid,:arg_ref_mx[i].qty,:arg_ref_mx[i].mxDscrp,&
- :arg_ref_mx[i].taskid,:arg_ref_mx[i].taskprintid,:arg_ref_mx[i].mxprintid,&
- :arg_ref_mx[i].relid,:arg_ref_mx[i].relprintid,:arg_ref_mx[i].printid,&
- :arg_ref_mx[i].mtrlwareid,:arg_ref_mx[i].rel_assignid,:arg_ref_mx[i].barcode,:arg_ref_mx[i].taskcode;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO :arg_ref_mx[i].transtype,
- :arg_ref_mx[i].assignid,:arg_ref_mx[i].qty,:arg_ref_mx[i].mxDscrp,&
- :arg_ref_mx[i].taskid,:arg_ref_mx[i].taskprintid,:arg_ref_mx[i].mxprintid,&
- :arg_ref_mx[i].relid,:arg_ref_mx[i].relprintid,:arg_ref_mx[i].printid,&
- :arg_ref_mx[i].mtrlwareid,:arg_ref_mx[i].rel_assignid,:arg_ref_mx[i].barcode,:arg_ref_mx[i].taskcode;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_mtrlware_transmx_fp
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck + 1) THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细内容"
- GOTO ext
- END IF
- //2
- //用游标读取明细
- DECLARE cur_mx2 CURSOR FOR
- SELECT u_mtrlware_transmx_fp2.mtrlwareid,
- u_mtrlware_transmx_fp2.assignid,
- u_mtrlware_transmx_fp2.transqty,
- u_mtrlware_transmx_fp2.mtrlid,
- u_mtrlware_transmx_fp2.taskid,
- u_mtrlware_transmx_fp2.taskprintid,
- u_mtrlware_transmx_fp2.printid,
- u_mtrlware_transmx_fp2.mxtype,
- u_mtrldef.ifbarcodefp
- FROM u_mtrlware_transmx_fp2 INNER join u_mtrldef
- on u_mtrlware_transmx_fp2.mtrlid = u_mtrldef.mtrlid
- WHERE u_mtrlware_transmx_fp2.billid = :arg_billid
- Order By u_mtrlware_transmx_fp2.printid;
-
- OPEN cur_mx2;
- FETCH cur_mx2 INTO :arg_ref_mx2[j].mtrlwareid,
- :arg_ref_mx2[j].assignid,:arg_ref_mx2[j].transqty,:arg_ref_mx2[j].mtrlid,&
- :arg_ref_mx2[j].taskid,:arg_ref_mx2[j].taskprintid,:arg_ref_mx2[j].printid,&
- :arg_ref_mx2[j].mxtype,:arg_ref_mx2[j].ifbarcodefp;
-
- DO WHILE sqlca.SQLCode = 0
- j++
- FETCH cur_mx2 INTO :arg_ref_mx2[j].mtrlwareid,
- :arg_ref_mx2[j].assignid,:arg_ref_mx2[j].transqty,:arg_ref_mx2[j].mtrlid,&
- :arg_ref_mx2[j].taskid,:arg_ref_mx2[j].taskprintid,:arg_ref_mx2[j].printid,&
- :arg_ref_mx2[j].mxtype,:arg_ref_mx2[j].ifbarcodefp;
- LOOP
- CLOSE cur_mx2;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck2
- FROM u_mtrlware_transmx_fp2
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细2数量"
- GOTO ext
- END IF
- IF j <> (no_mxcheck2 + 1) THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细内容2"
- GOTO ext
- END IF
- arg_arr_cnt = i - 1
- arg_arr_cnt2 = j - 1
- ext:
- RETURN rslt
- end function
- public function integer affirm (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- s_mtrlware_trans_fp arg_s_ref
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.affirmflag <> 0 THEN
- rslt = 0
- ARG_MSG = '单据不是在待初审状态,不可以初审'
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_mtrlware_trans_fp
- SET affirmrep = :arg_opemp,
- affirmdate = getdate(),
- affirmflag = 1
- WHERE billid = :arg_billid
- And affirmflag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在审核,请稍后重试"
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer caffirm (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- datetime ldt_null
- setnull(ldt_null)
- s_mtrlware_trans_fp arg_s_ref
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_s_ref,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_ref.affirmflag <> 1 THEN
- rslt = 0
- ARG_MSG = '单据不是在待终审状态,不可以初撤'
- GOTO ext
- END IF
- IF arg_s_ref.flag <> 0 THEN
- rslt = 0
- ARG_MSG = '单据不是在待终审状态,不可以初撤'
- GOTO ext
- END IF
- //更新审核标记
- UPDATE u_mtrlware_trans_fp
- SET affirmrep = '',
- affirmdate = :ldt_null,
- affirmflag = 0
- WHERE billid = :arg_billid
- And affirmflag = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLNRows = 0 THEN
- rslt = 0
- ARG_MSG = "单据正在审核,请稍后重试"
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- on uo_mtrlware_trans_fp.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_mtrlware_trans_fp.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|