123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419 |
- $PBExportHeader$uo_owegood.sru
- forward
- global type uo_owegood from nonvisualobject
- end type
- end forward
- global type uo_owegood from nonvisualobject
- end type
- global uo_owegood uo_owegood
- type variables
- long uo_billid
- string uo_billcode
- end variables
- forward prototypes
- public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg)
- public function integer updatebegin (long arg_billid, ref string arg_msg)
- public function integer del (long arg_billid, 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 caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer save (s_owegood arg_s_owe, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_billid, ref s_owegoodmx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer tmpstopbill (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopbill (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer finishbill (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer cfinishbill (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopmx (long arg_billid, long arg_printid, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit)
- public function integer addmxcmpl (long arg_billid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit)
- public function integer tryfinish (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer addstopqty (long arg_billid, long arg_printid, decimal arg_stopqty, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer p_getflag (long arg_billid, ref long arg_flag, ref string arg_msg);Int rslt = 1
- SELECT flag
- INTO :arg_flag
- FROM u_owegood
- 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 updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
- long li_flag
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待审核状态,不可以修改,请核对'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);int rslt = 1
- long ll_flag
- if arg_billid <= 0 then
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- if ll_flag <> 0 then
- rslt = 0
- arg_msg = '单据不是在待审核状态,不能删除'
- GOTO ext
- END IF
- DELETE FROM u_owegoodmx
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_owegood
- 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 add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);
- Int rslt = 1
- long ll_flag
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag = 0 THEN
- rslt = 0
- arG_MSG = "待审核状态下不可用"
- GOTO ext
- END IF
- UPDATE u_owegood
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE u_owegood.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 caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- Long ll_scid
- DateTime null_dt
- Long ll_inware_in
- Long ll_storageid
- Long cnt
- SetNull(null_dt)
- uo_inware uo_in
- uo_in = CREATE uo_inware
- uo_in.commit_transaction = sqlca
- uo_in.if_getid_ture = FALSE
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 1 THEN
- rslt = 0
- ARG_MSG = '单据不是在审核状态,不可以撤审'
- GOTO ext
- END IF
- SELECT storageid,scid INTO :ll_storageid,:ll_scid
- FROM u_owegood
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询单据所属分部失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :ll_storageid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF sys_user_storagestr_audit <> '0' THEN
- IF Pos(sys_user_storagestr_audit,','+String(ll_storageid)+',') <= 0 THEN
- rslt = 0
- ARG_MSG = '没有仓库: '+ls_storagename+' 的审核权限,不允许审核该仓库的单据'
- GOTO ext
- END IF
- END IF
- //
- //撤审删除相关进仓单
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_inware
- WHERE scid = :ll_scid
- AND relid = :arg_billid
- AND billtype = 18;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = '查询是否存在相关进仓单失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 1 THEN
- SELECT inwareid INTO :ll_inware_in
- FROM u_inware
- WHERE scid = :ll_scid
- AND relid = :arg_billid
- AND billtype = 18;
- IF sqlca.SQLCode <> 0 THEN
- ARG_MSG = '查询相关进仓单失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.getinfo(ll_scid,ll_inware_in,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.c_auditing(FALSE,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.del(ll_scid,ll_inware_in,ARG_MSG,FALSE) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- //更新审核标记
- UPDATE u_owegood
- SET auditemp = '',
- auditdate = :null_dt,
- flag = 0
- Where billid = :arg_billid;
- 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
- DESTROY uo_in
- RETURN rslt
- end function
- public function integer save (s_owegood arg_s_owe, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
- DateTime server_dt
- Long ll_billid,it_mxbt,i
- String ls_sccode,ls_billcode
- IF IsNull(arg_s_owe.scid) THEN arg_s_owe.scid = 0
- IF IsNull(arg_s_owe.billid) THEN arg_s_owe.billid = 0
- IF IsNull(arg_s_owe.cusid) THEN arg_s_owe.cusid = 0
- IF IsNull(arg_s_owe.relcode) THEN arg_s_owe.relcode = ''
- IF IsNull(arg_s_owe.assignemp) THEN arg_s_owe.assignemp = ''
- IF IsNull(arg_s_owe.dscrp) THEN arg_s_owe.dscrp = ''
- IF IsNull(arg_s_owe.storageid) THEN arg_s_owe.storageid = 0
- IF IsNull(arg_s_owe.ifaddware) THEN arg_s_owe.ifaddware = 0
- IF IsNull(arg_s_owe.relid) THEN arg_s_owe.relid = 0
- IF arg_s_owe.assignemp = '' THEN
- arg_msg = '请输入经手人'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_owe.storageid = 0 THEN
- arg_msg = '请选择仓库'
- rslt = 0
- GOTO ext
- END IF
- //检查仓库
- SELECT count(*)
- INTO :cnt
- FROM u_storage
- Where u_storage.storageid = :arg_s_owe.storageid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "错误的仓库编号: "+String(arg_s_owe.storageid)
- GOTO ext
- END IF
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :arg_s_owe.storageid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF sys_user_storagestr_new <> '0' THEN
- IF Pos(sys_user_storagestr_new,','+String(arg_s_owe.storageid)+',') <= 0 THEN
- rslt = 0
- arg_msg = '没有仓库: '+ls_storagename+' 的建立权限,不允许建立该仓库的单据'
- GOTO ext
- END IF
- END IF
- //
- IF arg_s_owe.cusid = 0 THEN
- arg_msg = '请选择客户'
- rslt = 0
- GOTO ext
- END IF
- //检查客户资料
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_cust
- Where cusid = :arg_s_owe.cusid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询客户资料失败'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt = 0 THEN
- arg_msg = '错误的客户ID'
- 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_s_owe.arg_s_mx)
- IF it_mxbt <= 0 THEN
- rslt = 0
- arg_msg = "没有正确明细内容"
- GOTO ext
- END IF
- //检查明细内容
- Long ll_i
- FOR ll_i = 1 TO it_mxbt
- IF arg_s_owe.arg_s_mx[ll_i].taskid = 0 and arg_s_owe.arg_s_mx[ll_i].ifrel = 1 THEN
- rslt = 0
- arg_msg = '请选择订单,第'+String(ll_i)+'行'
- GOTO ext
- END IF
- NEXT
- IF arg_s_owe.billid = 0 THEN
- ll_billid = f_sys_scidentity(0,"u_owegood","billid",arg_msg,TRUE,id_sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_s_owe.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ls_billcode = getid(arg_s_owe.scid,ls_sccode + 'OG',Date(server_dt),FALSE,sqlca)
-
- IF ls_billcode = "err" THEN
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- INSERT INTO u_owegood
- (scid,
- billid,
- billcode,
- loandate,
- cusid,
- storageid,
- relcode,
- assignemp,
- dscrp,
- ifaddware,
- opdate,
- opemp,
- relid)
- VALUES
- (:arg_s_owe.scid,
- :ll_billid,
- :ls_billcode,
- :arg_s_owe.loandate,
- :arg_s_owe.cusid,
- :arg_s_owe.storageid,
- :arg_s_owe.relcode,
- :arg_s_owe.assignemp,
- :arg_s_owe.dscrp,
- :arg_s_owe.ifaddware,
- getdate(),
- :arg_opemp,
- :arg_s_owe.relid);
- 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_owegoodmx
- (scid,
- billid,
- printid,
- ifrel,
- taskid,
- taskprintid,
- taskcode,
- taskrelcode,
- taskmtrlid,
- mtrlid,
- status,
- woodcode,
- pcode,
- plancode,
- qty,
- acmpqty,
- mxdscrp)
- VALUES
- (:arg_s_owe.scid,
- :ll_billid,
- :arg_s_owe.arg_s_mx[i].printid,
- :arg_s_owe.arg_s_mx[i].ifrel,
- :arg_s_owe.arg_s_mx[i].taskid,
- :arg_s_owe.arg_s_mx[i].taskprintid,
- :arg_s_owe.arg_s_mx[i].taskcode,
- :arg_s_owe.arg_s_mx[i].taskrelcode,
- :arg_s_owe.arg_s_mx[i].taskmtrlid,
- :arg_s_owe.arg_s_mx[i].mtrlid,
- :arg_s_owe.arg_s_mx[i].status,
- :arg_s_owe.arg_s_mx[i].woodcode,
- :arg_s_owe.arg_s_mx[i].pcode,
- :arg_s_owe.arg_s_mx[i].plancode,
- :arg_s_owe.arg_s_mx[i].qty,
- :arg_s_owe.arg_s_mx[i].acmpqty,
- :arg_s_owe.arg_s_mx[i].mxdscrp
- );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- uo_billid = ll_billid
- uo_billcode = ls_billcode
-
- ELSE
- UPDATE u_owegood
- SET loandate = :arg_s_owe.loandate,
- cusid = :arg_s_owe.cusid,
- storageid = :arg_s_owe.storageid,
- relcode = :arg_s_owe.relcode,
- assignemp = :arg_s_owe.assignemp,
- ifaddware = :arg_s_owe.ifaddware,
- dscrp = :arg_s_owe.dscrp,
- moddate = getdate(),
- modemp = :arg_opemp,
- relid = :arg_s_owe.relid
- WHERE billid = :arg_s_owe.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_owegoodmx
- Where billid = :arg_s_owe.billid;
- 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_owegoodmx
- (scid,
- billid,
- printid,
- ifrel,
- taskid,
- taskprintid,
- taskcode,
- taskrelcode,
- taskmtrlid,
- mtrlid,
- status,
- woodcode,
- pcode,
- plancode,
- qty,
- acmpqty,
- mxdscrp)
- VALUES
- (:arg_s_owe.scid,
- :arg_s_owe.billid,
- :arg_s_owe.arg_s_mx[i].printid,
- :arg_s_owe.arg_s_mx[i].ifrel,
- :arg_s_owe.arg_s_mx[i].taskid,
- :arg_s_owe.arg_s_mx[i].taskprintid,
- :arg_s_owe.arg_s_mx[i].taskcode,
- :arg_s_owe.arg_s_mx[i].taskrelcode,
- :arg_s_owe.arg_s_mx[i].taskmtrlid,
- :arg_s_owe.arg_s_mx[i].mtrlid,
- :arg_s_owe.arg_s_mx[i].status,
- :arg_s_owe.arg_s_mx[i].woodcode,
- :arg_s_owe.arg_s_mx[i].pcode,
- :arg_s_owe.arg_s_mx[i].plancode,
- :arg_s_owe.arg_s_mx[i].qty,
- :arg_s_owe.arg_s_mx[i].acmpqty,
- :arg_s_owe.arg_s_mx[i].mxdscrp
- );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
-
- uo_billid = arg_s_owe.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 getinfo (long arg_billid, ref s_owegoodmx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
- Long i = 1,no_mxcheck = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- //用游标读取明细
- DECLARE cur_mx CURSOR FOR
- SELECT u_owegoodmx.scid,
- u_owegoodmx.billid,
- u_owegoodmx.printid,
- u_owegoodmx.ifrel,
- u_owegoodmx.taskid,
- u_owegoodmx.taskprintid,
- u_owegoodmx.taskcode,
- u_owegoodmx.taskrelcode,
- u_owegoodmx.taskmtrlid,
- u_owegoodmx.mtrlid,
- u_owegoodmx.status,
- u_owegoodmx.woodcode,
- u_owegoodmx.pcode,
- u_owegoodmx.plancode,
- u_owegoodmx.qty,
- u_owegoodmx.acmpqty,
- u_owegoodmx.mxdscrp,
- u_mtrldef.mtrlcode,
- u_mtrldef.planprice,
- u_mtrldef.unit,
- u_owegoodmx.stopqty
- FROM u_owegoodmx,u_mtrldef
- WHERE u_owegoodmx.billid = :arg_billid
- and u_owegoodmx.mtrlid = u_mtrldef.mtrlid
- Order By u_owegoodmx.printid;
-
- OPEN cur_mx;
- FETCH cur_mx INTO
- :arg_ref_mx[i].scid,
- :arg_ref_mx[i].billid,
- :arg_ref_mx[i].printid,
- :arg_ref_mx[i].ifrel,
- :arg_ref_mx[i].taskid,
- :arg_ref_mx[i].taskprintid,
- :arg_ref_mx[i].taskcode,
- :arg_ref_mx[i].taskrelcode,
- :arg_ref_mx[i].taskmtrlid,
- :arg_ref_mx[i].mtrlid,
- :arg_ref_mx[i].status,
- :arg_ref_mx[i].woodcode,
- :arg_ref_mx[i].pcode,
- :arg_ref_mx[i].plancode,
- :arg_ref_mx[i].qty,
- :arg_ref_mx[i].acmpqty,
- :arg_ref_mx[i].mxdscrp,
- :arg_ref_mx[i].mtrlcode,
- :arg_ref_mx[i].planprice,
- :arg_ref_mx[i].unit,
- :arg_ref_mx[i].stopqty;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_mx INTO
- :arg_ref_mx[i].scid,
- :arg_ref_mx[i].billid,
- :arg_ref_mx[i].printid,
- :arg_ref_mx[i].ifrel,
- :arg_ref_mx[i].taskid,
- :arg_ref_mx[i].taskprintid,
- :arg_ref_mx[i].taskcode,
- :arg_ref_mx[i].taskrelcode,
- :arg_ref_mx[i].taskmtrlid,
- :arg_ref_mx[i].mtrlid,
- :arg_ref_mx[i].status,
- :arg_ref_mx[i].woodcode,
- :arg_ref_mx[i].pcode,
- :arg_ref_mx[i].plancode,
- :arg_ref_mx[i].qty,
- :arg_ref_mx[i].acmpqty,
- :arg_ref_mx[i].mxdscrp,
- :arg_ref_mx[i].mtrlcode,
- :arg_ref_mx[i].planprice,
- :arg_ref_mx[i].unit,
- :arg_ref_mx[i].stopqty;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_owegoodmx
- 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
- arg_arr_cnt = i - 1
- 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_flag
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 0 THEN
- rslt = 0
- ARG_MSG = '单据不是在待审核状态,不可以再审'
- GOTO ext
- END IF
- Long ll_storageid,ll_scid,ll_cusid
- DateTime ld_loandate
- String ls_dscrp,ls_billcode
- Long ll_inwareid_in
- Int li_ifaddware
- SELECT scid,billcode,storageid,loandate,dscrp,cusid,ifaddware
- INTO :ll_scid,:ls_billcode,:ll_storageid,:ld_loandate,:ls_dscrp,:ll_cusid,:li_ifaddware
- FROM u_owegood
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = '查询单据信息失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- String ls_storagename
- SELECT storagename
- INTO :ls_storagename
- FROM u_storage
- Where storageid = :ll_storageid ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "查询操作失败,仓库"
- GOTO ext
- END IF
- //检查是否有该仓库的建立权限
- IF sys_user_storagestr_audit <> '0' THEN
- IF Pos(sys_user_storagestr_audit,','+String(ll_storageid)+',') <= 0 THEN
- rslt = 0
- ARG_MSG = '没有仓库: '+ls_storagename+' 的审核权限,不允许审核该仓库的单据'
- GOTO ext
- END IF
- END IF
- //
- s_owegoodmx arg_s_mx[]
- Long ll_arr_mx
- Long ll_i
- IF li_ifaddware = 1 THEN
-
- IF getinfo(arg_billid,arg_s_mx,ll_arr_mx,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- //生成相关进仓单
- uo_inware uo_in
- uo_in = CREATE uo_inware
- uo_in.commit_transaction = sqlca
- uo_in.if_getid_ture = FALSE
-
- IF uo_in.newbegin(ll_scid,18,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- uo_in.relid = arg_billid
- uo_in.indate = ld_loandate
- uo_in.inrep = arg_opemp
- uo_in.part = ls_billcode
- uo_in.dscrp = ls_dscrp
- uo_in.storageid = ll_storageid
- uo_in.sptname = '欠货单进仓单'
-
- FOR ll_i = 1 TO ll_arr_mx
- IF uo_in.acceptmx(ll_i,&
- arg_s_mx[ll_i].mtrlid,&
- arg_s_mx[ll_i].mtrlcode,&
- arg_s_mx[ll_i].plancode,&
- arg_s_mx[ll_i].status,&
- arg_s_mx[ll_i].qty,&
- arg_s_mx[ll_i].planprice,&
- 1,&
- '',&
- ARG_MSG,&
- 0,0,0,arg_s_mx[ll_i].woodcode,&
- arg_s_mx[ll_i].pcode,&
- ll_cusid,&
- arg_s_mx[ll_i].unit,1,arg_s_mx[ll_i].qty,&
- 0,0,'','',0,0,'','',&
- arg_s_mx[ll_i].qty,&
- 0) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
-
- IF uo_in.Save(FALSE,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ll_inwareid_in = uo_in.inwareid
-
- IF uo_in.getinfo(ll_scid,ll_inwareid_in,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF uo_in.auditing(FALSE,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- END IF
- //
- //更新审核标记
- UPDATE u_owegood
- SET auditemp = :arg_opemp,
- auditdate = getdate(),
- flag = 1
- 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
- DESTROY uo_in
- RETURN rslt
- end function
- public function integer tmpstopbill (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- long ll_flag
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 1 AND ll_flag <> 2 THEN
- rslt = 0
- arg_msg = "单据只有在进行,暂停状态才可以执行暂停/取消暂停操作"
- GOTO ext
- END IF
- IF ll_flag = 1 THEN
- UPDATE u_owegood
- SET flag = 2,
- stopemp = :arg_opemp
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致暂停单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_owegood
- SET flag = 1,
- stopemp = ''
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致取消暂停单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- 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 stopbill (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 1 THEN
- rslt = 0
- arg_msg = "单据只有在进行状态才可以执行终止,请核对"
- GOTO ext
- END IF
- UPDATE u_owegood
- SET flag = 3,
- stopemp = :arg_opemp
- WHERE billid = :arg_billid
- AND flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致终止单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- ELSE
- IF sqlca.SQLNRows = 0 THEN
- arg_msg = '单据正在终止...'
- rslt = 0
- GOTO ext
- END IF
- 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 finishbill (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 1 THEN
- rslt = 0
- arg_msg = "单据只有在进行状态才可以执行完成,请核对"
- GOTO ext
- END IF
- UPDATE u_owegood
- SET flag = 6,
- accomplishdate = getdate(),
- finishemp = :arg_opemp
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致完成单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- 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 cfinishbill (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag
- DateTime null_dt
- SetNull(null_dt)
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 6 THEN
- rslt = 0
- arg_msg = "单据只有在手动完成状态下才可以执行取消手动完成,请核对"
- GOTO ext
- END IF
- UPDATE u_owegood
- SET flag = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致取消手动完成单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- 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 stopmx (long arg_billid, long arg_printid, integer arg_flag, string arg_stopreason, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_flag ,ll_stopflag
- DateTime null_dt
- Decimal ld_notconsignedqty
- SetNull(null_dt)
- IF p_getflag(arg_billid,ll_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 1 THEN
- rslt = 0
- arg_msg = "单据只有在进行状态才可以执行终止明细,请核对"
- GOTO ext
- END IF
- SELECT stopflag INTO :ll_stopflag
- FROM u_owegoodmx
- WHERE billid = :arg_billid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细中止标记失败'
- rslt = 0
- GOTO ext
- END IF
- IF arg_flag = 0 THEN
- IF ll_stopflag = 0 THEN
- arg_msg = '明细还未中止,不能取消中止'
- rslt = 0
- GOTO ext
- END IF
- ELSE
- IF ll_stopflag = 1 THEN
- arg_msg = '明细物料已中止,不能重复中止'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 1 THEN
- SELECT qty - acmpqty INTO :ld_notconsignedqty
- FROM u_owegoodmx
- WHERE billid = :arg_billid
- AND printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询明细未还货数失败'
- rslt = 0
- GOTO ext
- END IF
-
- IF ld_notconsignedqty <= 0 THEN
- arg_msg = '明细已完成还货,不能中止'
- rslt = 0
- GOTO ext
- END IF
- END IF
- IF arg_flag = 0 THEN
- UPDATE u_owegoodmx
- SET stopflag = 0,
- stopemp = '',
- stopdate = :null_dt,
- stopreason = ''
- WHERE billid = :arg_billid
- AND printid = :arg_printid;
- ELSE
- UPDATE u_owegoodmx
- SET stopflag = 1,
- stopemp = :publ_operator,
- stopdate = getdate(),
- stopreason = :arg_stopreason
- WHERE billid = :arg_billid
- AND printid = :arg_printid;
- END IF
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '更新明细中止标记失败,'+sqlca.SQLErrText
- rslt = 0
- 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 addmxcmpl (long arg_billid, long arg_printid, decimal arg_addqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- long ll_flag
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF arg_addqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 1 AND ll_flag <> 5 THEN
- rslt = 0
- IF ll_flag <> 1 THEN
- ARG_MSG = "欠货单只有在进行状态下才可以执行进仓"
- ELSEIF ll_flag <> 5 THEN
- ARG_MSG = "欠货单只有在自动完成状态下才可以撤消进仓"
- END IF
- GOTO ext
- END IF
- Decimal ls_Qty,ls_acmpqty,ld_stopqty
- String ls_mtrlcode
- SELECT u_owegoodMx.qty,
- u_owegoodMx.acmpqty,
- u_mtrldef.mtrlcode,
- u_owegoodMx.stopqty
- INTO :ls_Qty,
- :ls_acmpqty,
- :ls_mtrlcode,
- :ld_stopqty
- FROM u_owegoodMx ,u_mtrldef
- WHERE ( u_owegoodMx.billid = :arg_billid ) AND
- ( u_owegoodMx.printid = :arg_printid ) AND
- ( u_owegoodMx.stopflag = 0 ) and
- ( u_owegoodMx.mtrlid = u_mtrldef.mtrlid) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询欠货单已还货数量操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_Qty < ls_acmpqty + arg_addqty + ld_stopqty THEN
- rslt = 0
- ARG_MSG = "产品["+ls_mtrlcode+"]的未完成数量只有"+String(ls_Qty - ls_acmpqty - ld_stopqty,'#,##0.0#')+",不能出仓"+String(arg_addqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_owegoodMx
- SET acmpqty = acmpqty +:arg_addqty
- WHERE ( u_owegoodMx.billid = :arg_billid ) AND
- ( u_owegoodMx.printid = :arg_printid ) and
- ( u_owegoodMx.stopflag = 0 ) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品唯一码导致欠货单已还货数量操作失败"+"~n"+ sqlca.SQLErrText
- GOTO ext
- 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 tryfinish (long arg_billid, ref string arg_msg, boolean arg_ifcommit);//trycmplsaletask(arg_taskid,arg_msg,arg_ifcommit)
- Int rslt = 1,cnt = 0
- long ll_status
- DateTime null_dt
- SetNull(null_dt)
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_status,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_status <> 1 AND ll_status <> 5 THEN
- rslt = 0
- IF ll_status <> 1 THEN
- arg_msg = "欠货单只有在进行状态下才可以执行设完成状态"
- ELSEIF ll_status <> 5 THEN
- arg_msg = "欠货单只有在自动完成状态下才可以执行撤消完成状态"
- END IF
- GOTO ext
- END IF
- Decimal ls_zerook
- Boolean if_finish
- if_finish = TRUE
- DECLARE zero_cur CURSOR FOR
- SELECT u_owegoodmx.qty - u_owegoodmx.acmpqty - u_owegoodmx.stopqty
- FROM u_owegoodmx
- WHERE ( u_owegoodmx.billid = :arg_billid )
- AND ( u_owegoodmx.stopflag = 0 ) ;
-
- OPEN zero_cur;
- FETCH zero_cur INTO :ls_zerook;
- DO WHILE sqlca.SQLCode = 0
- IF if_finish THEN
- IF ls_zerook > 0 THEN if_finish = FALSE
- END IF
- FETCH zero_cur INTO :ls_zerook;
- LOOP
- CLOSE zero_cur;
- IF ll_status = 1 AND if_finish THEN
- UPDATE u_owegood
- SET flag = 5,
- accomplishdate = getdate(),
- finishemp = :publ_operator
- WHERE ( u_owegood.billid = :arg_billid ) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致欠货单完成状态设置操作失败"+"~n"+sqlca.SQLErrText
- ROLLBACK ;
- GOTO ext
- END IF
- END IF
- IF ll_status = 5 AND NOT if_finish THEN
- UPDATE u_owegood
- SET flag = 1,
- accomplishdate = :null_dt,
- finishemp = ''
- WHERE ( u_owegood.billid = :arg_billid );
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其他原因导致欠货单撤消完成状态设置操作失败"+"~n"+sqlca.SQLErrText
- ROLLBACK;
- GOTO ext
- END IF
- 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 addstopqty (long arg_billid, long arg_printid, decimal arg_stopqty, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
- long ll_flag
- IF arg_billid <= 0 THEN
- rslt = 0
- ARG_MSG = '错误单据唯一码'
- GOTO ext
- END IF
- IF arg_stopqty = 0 THEN
- rslt = 1
- GOTO ext
- END IF
- IF p_getflag(arg_billid,ll_flag,ARG_MSG) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF ll_flag <> 1 AND ll_flag <> 5 THEN
- rslt = 0
- IF ll_flag <> 1 THEN
- ARG_MSG = "欠货单只有在进行状态下才可以执行进仓"
- ELSEIF ll_flag <> 5 THEN
- ARG_MSG = "欠货单只有在自动完成状态下才可以撤消进仓"
- END IF
- GOTO ext
- END IF
- Decimal ls_Qty,ls_acmpqty,ld_stopqty
- String ls_mtrlcode
- SELECT u_owegoodMx.qty,
- u_owegoodMx.acmpqty,
- u_mtrldef.mtrlcode,
- u_owegoodMx.stopqty
- INTO :ls_Qty,
- :ls_acmpqty,
- :ls_mtrlcode,
- :ld_stopqty
- FROM u_owegoodMx ,u_mtrldef
- WHERE ( u_owegoodMx.billid = :arg_billid ) AND
- ( u_owegoodMx.printid = :arg_printid ) AND
- ( u_owegoodMx.stopflag = 0 ) and
- ( u_owegoodMx.mtrlid = u_mtrldef.mtrlid) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品编码["+ls_mtrlcode+"]导致查询欠货单明细信息操作失败"+"~n"+SQLCA.SQLErrText
- GOTO ext
- END IF
- IF ls_Qty < ls_acmpqty + arg_stopqty + ld_stopqty THEN
- rslt = 0
- ARG_MSG = "产品["+ls_mtrlcode+"]的未完成数量只有"+String(ls_Qty - ls_acmpqty - ld_stopqty,'#,##0.0#')+",不能终止"+String(arg_stopqty,'#,##0.0#')
- GOTO ext
- END IF
- UPDATE u_owegoodMx
- SET stopqty = stopqty +:arg_stopqty
- WHERE ( u_owegoodMx.billid = :arg_billid ) AND
- ( u_owegoodMx.printid = :arg_printid ) and
- ( u_owegoodMx.stopflag = 0 ) ;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- ARG_MSG = "因网络或错误产品唯一码导致欠货单已终止数量操作失败"+"~n"+ sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK ;
- ELSEIF arg_ifcommit and rslt = 1 THEN
- COMMIT ;
- END IF
- Return (rslt)
- end function
- on uo_owegood.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_owegood.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|