12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118 |
- $PBExportHeader$uo_order_ml_rqmtrl_chng.sru
- forward
- global type uo_order_ml_rqmtrl_chng from nonvisualobject
- end type
- end forward
- global type uo_order_ml_rqmtrl_chng from nonvisualobject
- end type
- global uo_order_ml_rqmtrl_chng uo_order_ml_rqmtrl_chng
- type variables
- long uo_scid
- long uo_billid
- string uo_billcode
- end variables
- forward prototypes
- public function integer save (s_order_ml_rqmtrl_chng arg_s_main, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_scid, long arg_billid, ref s_order_ml_rqmtrl_chngmx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer audit (long arg_scid, long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getflag (long arg_scid, long arg_billid, ref integer arg_flag, ref string arg_msg)
- public function integer del (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer add_dscrp (long arg_scid, long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg)
- public function integer getinfo2 (long arg_scid, long arg_billid, ref s_order_ml_rqmtrl_chngmx2 arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer uf_add_bom (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer save (s_order_ml_rqmtrl_chng arg_s_main, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
- DateTime server_dt
- Long ll_billid,it_mxbt,i,it_mxbt2, ll_scllflag
- String ls_sccode,ls_billcode, ls_taskcode
- IF IsNull(arg_s_main.scid) THEN arg_s_main.scid = 0
- IF IsNull(arg_s_main.billid) THEN arg_s_main.billid = 0
- //IF IsNull(arg_s_main.relid) THEN arg_s_main.relid = 0
- //IF IsNull(arg_s_main.relprintid) THEN arg_s_main.relprintid = 0
- //IF IsNull(arg_s_main.mtrlid) THEN arg_s_main.mtrlid = 0
- IF IsNull(arg_s_main.CreateBomFlag) THEN arg_s_main.CreateBomFlag = 0
- IF IsNull(arg_s_main.relemp) THEN arg_s_main.relemp = ''
- IF IsNull(arg_s_main.dscrp) THEN arg_s_main.dscrp = ''
- IF arg_s_main.relemp = '' THEN
- arg_msg = '请输入经手人'
- 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_main.arg_s_mx)
- IF it_mxbt <= 0 THEN
- rslt = 0
- arg_msg = "没有正确增料明细内容"
- GOTO ext
- END IF
- it_mxbt2 = UpperBound(arg_s_main.arg_s_mx2)
- IF it_mxbt2 <= 0 THEN
- rslt = 0
- arg_msg = "没有正确销售订单明细内容"
- GOTO ext
- END IF
- FOR i = 1 TO it_mxbt2
- IF arg_s_main.arg_s_mx2[i].relid = 0 &
- OR arg_s_main.arg_s_mx2[i].relprintid = 0 &
- OR arg_s_main.arg_s_mx2[i].mtrlid = 0 THEN
- rslt = 0
- arg_msg = "行["+string(i)+"],请选择销售订单明细内容"
- GOTO ext
- END IF
-
-
- //查订单
- SELECT taskcode
- INTO :ls_taskcode
- FROM u_saletask
- WHERE taskid = :arg_s_main.arg_s_mx2[i].relid
- USING sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询销售订单明细内容信息失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //查订单
- SELECT scllflag
- INTO :ll_scllflag
- FROM u_saletaskmx
- WHERE taskid = :arg_s_main.arg_s_mx2[i].relid
- AND printid = :arg_s_main.arg_s_mx2[i].relprintid
- AND mtrlid = :arg_s_main.arg_s_mx2[i].mtrlid
- USING sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询销售订单明细内容信息失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF ll_scllflag = 0 THEN
- rslt = 0
- arg_msg = "行["+string(i)+"],销售订单["+ls_taskcode+"]未用料审"
- GOTO ext
- END IF
-
- //查物料
- SELECT Count(*)
- INTO :cnt
- FROM u_mtrldef
- WHERE mtrlid = :arg_s_main.arg_s_mx2[i].mtrlid
- USING sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询销售订单明细物料资料信息失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = "行["+string(i)+"],销售订单明细物料资料不存在"
- GOTO ext
- END IF
- NEXT
- IF arg_s_main.billid = 0 THEN
- ll_billid = f_sys_scidentity(arg_s_main.scid,"u_OrderRqMtrl_chng","billid",arg_msg,FALSE,sqlca)
-
- IF ll_billid <= 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- IF f_get_sccode(arg_s_main.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- ls_billcode = getid(arg_s_main.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_OrderRqMtrl_chng
- (scid,
- billid,
- billcode,
- billdate,
- relcode,
- relemp,
- dscrp,
- opdate,
- opemp,
- CreateBomFlag)
- VALUES
- (:arg_s_main.scid,
- :ll_billid,
- :ls_billcode,
- :arg_s_main.billdate,
- :arg_s_main.relcode,
- :arg_s_main.relemp,
- :arg_s_main.dscrp,
- getdate(),
- :arg_opemp,
- :arg_s_main.CreateBomFlag);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- uo_scid = arg_s_main.scid
- uo_billid = ll_billid
- uo_billcode = ls_billcode
-
- ELSE
- UPDATE u_OrderRqMtrl_chng
- SET billdate = :arg_s_main.billdate,
- relemp = :arg_s_main.relemp,
- dscrp = :arg_s_main.dscrp,
- relcode = :arg_s_main.relcode,
- moddate = getdate(),
- modemp = :arg_opemp,
- CreateBomFlag = :arg_s_main.CreateBomFlag
- WHERE scid = :uo_scid
- AND billid = :uo_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_OrderRqMtrl_chngmx2
- WHERE scid = :uo_scid
- AND billid = :uo_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_OrderRqMtrl_chngmx
- WHERE scid = :uo_scid
- AND billid = :uo_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //uo_billid = arg_s_main.billid
-
- END IF
- FOR i = 1 TO it_mxbt2
- INSERT INTO u_OrderRqMtrl_chngmx2
- (scid,
- billid,
- printid,
- mtrlid,
- relid,
- relprintid,
- relcode)
- VALUES
- (:uo_scid,
- :uo_billid,
- :arg_s_main.arg_s_mx2[i].printid,
- :arg_s_main.arg_s_mx2[i].mtrlid,
- :arg_s_main.arg_s_mx2[i].relid,
- :arg_s_main.arg_s_mx2[i].relprintid,
- :arg_s_main.arg_s_mx2[i].relcode);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- uo_billid = arg_s_main.billid
- arg_msg = "因网络或其它原因导致插入销售订单明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
- FOR i = 1 TO it_mxbt
- INSERT INTO u_OrderRqMtrl_chngmx
- (scid,
- billid,
- printid,
- mtrlid,
- truerqqty,
- rqqty,
- wrkgrpid,
- plantype,
- status,
- woodcode,
- pcode,
- plancode)
- VALUES
- (:uo_scid,
- :uo_billid,
- :arg_s_main.arg_s_mx[i].printid,
- :arg_s_main.arg_s_mx[i].mtrlid,
- :arg_s_main.arg_s_mx[i].truerqqty,
- :arg_s_main.arg_s_mx[i].rqqty,
- :arg_s_main.arg_s_mx[i].wrkgrpid,
- :arg_s_main.arg_s_mx[i].plantype,
- :arg_s_main.arg_s_mx[i].status,
- :arg_s_main.arg_s_mx[i].woodcode,
- :arg_s_main.arg_s_mx[i].pcode,
- :arg_s_main.arg_s_mx[i].plancode);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- uo_billid = arg_s_main.billid
- arg_msg = "因网络或其它原因导致插入增料明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- NEXT
- 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_scid, long arg_billid, ref s_order_ml_rqmtrl_chngmx 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_OrderRqMtrl_chngmx.scid,
- u_OrderRqMtrl_chngmx.billid,
- u_OrderRqMtrl_chngmx.printid,
- u_OrderRqMtrl_chngmx.mtrlid,
- u_OrderRqMtrl_chngmx.truerqqty,
- u_OrderRqMtrl_chngmx.rqqty,
- u_OrderRqMtrl_chngmx.wrkgrpid,
- u_OrderRqMtrl_chngmx.plantype,
- u_OrderRqMtrl_chngmx.status,
- u_OrderRqMtrl_chngmx.woodcode,
- u_OrderRqMtrl_chngmx.pcode,
- u_mtrldef.mtrlcode,
- u_OrderRqMtrl_chngmx.plancode
- FROM u_OrderRqMtrl_chngmx inner join u_mtrldef
- on u_OrderRqMtrl_chngmx.mtrlid = u_mtrldef.mtrlid
- WHERE u_OrderRqMtrl_chngmx.scid = :arg_scid
- and u_OrderRqMtrl_chngmx.billid = :arg_billid
- Order By u_OrderRqMtrl_chngmx.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].mtrlid,
- :arg_ref_mx[i].truerqqty,
- :arg_ref_mx[i].rqqty,
- :arg_ref_mx[i].wrkgrpid,
- :arg_ref_mx[i].plantype,
- :arg_ref_mx[i].status,
- :arg_ref_mx[i].woodcode,
- :arg_ref_mx[i].pcode,
- :arg_ref_mx[i].mtrlcode,
- :arg_ref_mx[i].plancode;
-
- 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].mtrlid,
- :arg_ref_mx[i].truerqqty,
- :arg_ref_mx[i].rqqty,
- :arg_ref_mx[i].wrkgrpid,
- :arg_ref_mx[i].plantype,
- :arg_ref_mx[i].status,
- :arg_ref_mx[i].woodcode,
- :arg_ref_mx[i].pcode,
- :arg_ref_mx[i].mtrlcode,
- :arg_ref_mx[i].plancode;
- LOOP
- CLOSE cur_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_OrderRqMtrl_chngmx
- Where scid = :arg_scid
- and 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_scid, long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- Long i, j, k
- Int li_CreateBomFlag
- uo_order_ml_mrp uo_ml_mrp
- uo_ml_mrp = CREATE uo_order_ml_mrp
- uo_mtrl_structure uo_mtrl_str
- uo_mtrl_str = CREATE uo_mtrl_structure
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_scid, 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
- //是否添加BOM
- SELECT CreateBomFlag
- INTO :li_CreateBomFlag
- FROM u_OrderRqMtrl_chng
- WHERE scid = :arg_scid
- AND billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询单据信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- Long ll_relid, ll_relprintid, ll_mtrlid
- DateTime serdate
- SELECT Top 1 getdate() INTO :serdate FROM u_user;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询服务器时间失败'
- rslt = 0
- GOTO ext
- END IF
- s_order_ml_rqmtrl_chngmx s_mx[]
- Long ll_arr_cnt
- s_order_ml_rqmtrl_chngmx2 s_mx2[]
- Long ll_arr_cnt2
- IF getinfo(arg_scid,arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF getinfo2(arg_scid,arg_billid,s_mx2,ll_arr_cnt2,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //订单运算,新增物料
- Long ch_tree, ch, ch_scll
- s_order_ml_rqmtrl s_mtrl,s_mtrl_tree,s_mtrl_scll, s_null
- Dec lde_qty
- String ls_pfcode, ls_pfgroup
- Long ll_mxcnt, ll_printid
- s_structuremx s_mx_str[], s_null_str[]
- FOR j = 1 TO ll_arr_cnt2
- ll_relid = s_mx2[j].relid
- ll_relprintid = s_mx2[j].relprintid
- ll_mtrlid = s_mx2[j].mtrlid
-
- //订单排产数量
- SELECT orderqty
- INTO :lde_qty
- FROM u_saletaskmx
- WHERE taskid = :ll_relid
- AND printid = :ll_relprintid
- AND mtrlid = :ll_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "订单["+s_mx2[j].relcode+"]"+"查询销售订单信息操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
-
- s_mtrl = s_null
- s_mtrl_tree = s_null
- s_mtrl_scll = s_null
- ch_tree = 0
- ch = 0
- ch_scll = 0
- FOR i = 1 TO ll_arr_cnt
- ch_tree++
- s_mtrl_tree.scid[ch_tree] = arg_scid
- s_mtrl_tree.taskid[ch_tree] = ll_relid
- s_mtrl_tree.printid[ch_tree] = ll_relprintid
- s_mtrl_tree.mtrlid[ch_tree] = s_mx[i].mtrlid
- s_mtrl_tree.ifmainmtrlid[ch_tree] = 0
- s_mtrl_tree.plantype[ch_tree] = s_mx[i].plantype
- s_mtrl_tree.qty[ch_tree] = s_mx[i].rqqty * lde_qty
- s_mtrl_tree.cmplqty[ch_tree] = s_mx[i].truerqqty * lde_qty
- s_mtrl_tree.mqty[ch_tree] = 0
- s_mtrl_tree.bqty[ch_tree] = 0
- s_mtrl_tree.wqty[ch_tree] = 0
- s_mtrl_tree.pqty[ch_tree] = 0
- s_mtrl_tree.wrkgrpid_scll[ch_tree] = s_mx[i].wrkgrpid
- s_mtrl_tree.lp[ch_tree] = 1
- s_mtrl_tree.status[ch_tree] = s_mx[i].status
- s_mtrl_tree.woodcode[ch_tree] = s_mx[i].woodcode
- s_mtrl_tree.pcode[ch_tree] = s_mx[i].pcode
- s_mtrl_tree.pmtrlid[ch_tree] = ll_mtrlid
- s_mtrl_tree.ifchanged[ch_tree] = 0
- s_mtrl_tree.pfgroup[ch_tree] = ""
- s_mtrl_tree.plancode[ch_tree] = s_mx[i].plancode
-
-
- IF s_mx[i].rqqty > 0 OR s_mx[i].truerqqty > 0 THEN
- ch++
- s_mtrl.scid[ch] = arg_scid
- s_mtrl.taskid[ch] = ll_relid
- s_mtrl.printid[ch] = ll_relprintid
- s_mtrl.mtrlid[ch] = s_mx[i].mtrlid
- s_mtrl.plantype[ch] = s_mx[i].plantype
- s_mtrl.qty[ch] = s_mx[i].rqqty * lde_qty
- s_mtrl.cmplqty[ch] = s_mx[i].truerqqty * lde_qty
- s_mtrl.mqty[ch] = 0
- s_mtrl.bqty[ch] = 0
- s_mtrl.wqty[ch] = 0
- s_mtrl.pqty[ch] = 0
- s_mtrl.wrkgrpid_scll[ch] = s_mx[i].wrkgrpid
- s_mtrl.status[ch] = s_mx[i].status
- s_mtrl.woodcode[ch] = s_mx[i].woodcode
- s_mtrl.pcode[ch] = s_mx[i].pcode
- s_mtrl.ifchanged[ch] = 0
- s_mtrl.plancode[ch] = s_mx[i].plancode
- END IF
-
- IF s_mx[i].rqqty > 0 THEN //领料
- ch_scll++
- s_mtrl_scll.scid[ch_scll] = arg_scid
- s_mtrl_scll.taskid[ch_scll] = ll_relid
- s_mtrl_scll.printid[ch_scll] = ll_relprintid
- s_mtrl_scll.mtrlid[ch_scll] = s_mx[i].mtrlid
- s_mtrl_scll.qty[ch_scll] = s_mx[i].rqqty * lde_qty
- s_mtrl_scll.cmplqty[ch_scll] = s_mx[i].truerqqty * lde_qty
- s_mtrl_scll.status[ch_scll] = s_mx[i].status
- s_mtrl_scll.woodcode[ch_scll] = s_mx[i].woodcode
- s_mtrl_scll.pcode[ch_scll] = s_mx[i].pcode
- s_mtrl_scll.ifchanged[ch_scll] = 0
- s_mtrl_scll.plancode[ch_scll] = s_mx[i].plancode
- END IF
- NEXT
-
- IF uo_ml_mrp.uof_add_rqmtrl_more(s_mtrl,FALSE,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = "订单["+s_mx2[j].relcode+"]"+'保存物料需求表失败,'+arg_msg
- GOTO ext
- END IF
-
- IF uo_ml_mrp.uof_add_rqmtrl_tree_more(s_mtrl_tree,FALSE,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = "订单["+s_mx2[j].relcode+"]"+'保存物料需求结构表失败,'+arg_msg
- GOTO ext
- END IF
-
- IF uo_ml_mrp.uof_add_rqmtrl_scll_more(s_mtrl_scll,FALSE,arg_msg) = 0 THEN
- rslt = 0
- arg_msg = "订单["+s_mx2[j].relcode+"]"+'保存用料明细表失败,'+arg_msg
- GOTO ext
- END IF
-
- NEXT
- //将物料增加到清单中
- IF li_CreateBomFlag = 1 THEN
- FOR j = 1 TO ll_arr_cnt2
- ll_relid = s_mx2[j].relid
- ll_relprintid = s_mx2[j].relprintid
- ll_mtrlid = s_mx2[j].mtrlid
- // lde_qty =
-
- //如果有相同产品,只执行第一次
- FOR k = 1 TO j - 1
- IF s_mx2[k].mtrlid = s_mx2[j].mtrlid THEN
- GOTO nxtmtrl
- END IF
- NEXT
-
- // SELECT saleqty
- // INTO :lde_qty
- // FROM u_saletaskmx
- // WHERE taskid = :ll_relid
- // AND printid = :ll_relprintid
- // AND mtrlid = :ll_mtrlid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "因网络或其它原因导致查询销售订单信息操作失败"+"~n"+sqlca.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF lde_qty = 0 THEN
- // rslt = 0
- // arg_msg = "销售订单明细行["+String(j)+"],数量为0"
- // GOTO ext
- // END IF
-
- uo_mtrl_str.ul_mtrlid = ll_mtrlid
- ls_pfcode = "组装"
- ls_pfgroup = ""
-
- ll_mxcnt = 0
- s_mx_str = s_null_str
-
- ll_printid = uo_mtrl_str.uof_get_maxprintid(ll_mtrlid,ls_pfcode)
-
- FOR i = 1 TO ll_arr_cnt
- //检查是否存在该物料
- IF uo_mtrl_str.uof_chk_prdpf(ll_mtrlid,ls_pfcode,ls_pfgroup,s_mx[i].mtrlid) = 0 THEN
- CONTINUE //如果有,跳出
- END IF
-
- IF uo_mtrl_str.uof_chk_rand(s_mx[i].mtrlid) = 0 THEN
- rslt = 0
- arg_msg = "销售订单明细行["+String(j)+"],物料明细行["+String(i)+"],发现环,不能添加清单"
- GOTO ext
- END IF
-
- ll_mxcnt++
- ll_printid++
- s_mx_str[ll_mxcnt].mtrlid = s_mx[i].mtrlid
- s_mx_str[ll_mxcnt].sonscale = s_mx[i].rqqty
- s_mx_str[ll_mxcnt].sonloss = 0
- s_mx_str[ll_mxcnt].sondecloss = 0
- s_mx_str[ll_mxcnt].sonahead = 0
- s_mx_str[ll_mxcnt].dscrp = ''
- s_mx_str[ll_mxcnt].updownrate = 0
- s_mx_str[ll_mxcnt].ifreputate = 0
- s_mx_str[ll_mxcnt].ifover = 0
- s_mx_str[ll_mxcnt].pfgroup = ''
- s_mx_str[ll_mxcnt].pfgroupqty = 0
- s_mx_str[ll_mxcnt].pfgroupmode = ''
- s_mx_str[ll_mxcnt].promode = ''
- s_mx_str[ll_mxcnt].printid = ll_printid
- s_mx_str[ll_mxcnt].wrkgrpid = s_mx[i].wrkgrpid
- s_mx_str[ll_mxcnt].status = s_mx[i].status
- s_mx_str[ll_mxcnt].pcode = s_mx[i].pcode
- s_mx_str[ll_mxcnt].woodcode = s_mx[i].woodcode
-
- NEXT
-
- IF ll_mxcnt > 0 THEN
- IF uo_mtrl_str.uof_prdpf_add(ll_mtrlid, ls_pfcode, s_mx_str, FALSE, arg_msg) = 0 THEN
- rslt = 0
- arg_msg = "销售订单明细行["+String(j)+"],物料明细行["+String(i)+"]~r~n"+arg_msg
- GOTO ext
- END IF
- END IF
-
- nxtmtrl:
- NEXT
- END IF
- //更新审核标记
- UPDATE u_OrderRqMtrl_chng
- SET auditingrep = :arg_opemp,
- auditingdate = getdate(),
- flag = 1
- WHERE scid = :arg_scid
- AND 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 = "单据正在审核,请稍后查询。"+"~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_ml_mrp
- DESTROY uo_mtrl_str
- RETURN rslt
- end function
- public function integer p_getflag (long arg_scid, long arg_billid, ref integer arg_flag, ref string arg_msg);Int rslt = 1
- SELECT flag
- INTO :arg_flag
- FROM u_OrderRqMtrl_chng
- WHERE scid = :arg_scid
- and 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 del (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_scid, arg_billid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 1 THEN
- rslt = 0
- arg_msg = '单据不是在待审状态,不可以删除'
- GOTO ext
- END IF
- DELETE FROM u_OrderRqMtrl_chng
- WHERE scid = :arg_scid
- and billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderRqMtrl_chngmx2
- WHERE scid = :arg_scid
- and billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据销售订单明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_OrderRqMtrl_chngmx
- WHERE scid = :arg_scid
- and 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
- RETURN rslt
- end function
- public function integer add_dscrp (long arg_scid, long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- IF arg_newdescppart = '' THEN
- rslt = 0
- arG_MSG = "要添加内容为空,操作取消"
- GOTO ext
- END IF
- IF p_getflag(arg_scid, 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
- UPDATE u_OrderRqMtrl_chng
- SET DSCRP = DSCRP+' '+:arg_newdescppart
- WHERE scid = :arg_scid
- and 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
- Return (rslt)
- end function
- public function integer updatebegin (long arg_scid, long arg_billid, ref string arg_msg);Int rslt = 1
- Int li_flag
- Long cnt
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_scid,arg_billid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 1 THEN
- rslt = 0
- arg_msg = '单据已经审核,不可以再修改'
- GOTO ext
- END IF
- uo_scid = arg_scid
- uo_billid = arg_billid
- ext:
- RETURN rslt
- end function
- public function integer getinfo2 (long arg_scid, long arg_billid, ref s_order_ml_rqmtrl_chngmx2 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
- //用游标读取明细2
- DECLARE cur_mx CURSOR FOR
- SELECT scid,
- billid,
- printid,
- mtrlid,
- relid,
- relprintid,
- relcode
- FROM u_OrderRqMtrl_chngmx2
- WHERE scid = :arg_scid
- and billid = :arg_billid
- Order By 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].mtrlid,
- :arg_ref_mx[i].relid,
- :arg_ref_mx[i].relprintid,
- :arg_ref_mx[i].relcode;
-
- 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].mtrlid,
- :arg_ref_mx[i].relid,
- :arg_ref_mx[i].relprintid,
- :arg_ref_mx[i].relcode;
- LOOP
- CLOSE cur_mx;
- //检验明细2是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_OrderRqMtrl_chngmx2
- Where scid = :arg_scid
- and billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细2数量"
- GOTO ext
- END IF
- IF i <> (no_mxcheck + 1) THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细2"
- GOTO ext
- END IF
- arg_arr_cnt = i - 1
- ext:
- RETURN rslt
- end function
- public function integer uf_add_bom (long arg_scid, long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- Long i, j, k
- Int li_CreateBomFlag
- uo_mtrl_structure uo_mtrl_str
- uo_mtrl_str = CREATE uo_mtrl_structure
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getflag(arg_scid, arg_billid,li_flag,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF li_flag <> 1 THEN
- rslt = 0
- arg_msg = '单据不是在已审核状态,不可以手动添加清单'
- GOTO ext
- END IF
- //是否添加BOM
- SELECT CreateBomFlag
- INTO :li_CreateBomFlag
- FROM u_OrderRqMtrl_chng
- WHERE scid = :arg_scid
- AND billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询单据信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- if li_CreateBomFlag = 1 then
- arg_msg = '单据已经添加清单'
- rslt = 0
- GOTO ext
- end if
- Long ll_relid, ll_relprintid, ll_mtrlid
- s_order_ml_rqmtrl_chngmx s_mx[]
- Long ll_arr_cnt
- s_order_ml_rqmtrl_chngmx2 s_mx2[]
- Long ll_arr_cnt2
- IF getinfo(arg_scid,arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF getinfo2(arg_scid,arg_billid,s_mx2,ll_arr_cnt2,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //订单运算,新增物料
- Long ch_tree, ch, ch_scll
- s_order_ml_rqmtrl s_mtrl,s_mtrl_tree,s_mtrl_scll, s_null
- Dec lde_qty
- String ls_pfcode, ls_pfgroup
- Long ll_mxcnt, ll_printid
- s_structuremx s_mx_str[], s_null_str[]
- //将物料增加到清单中
- IF li_CreateBomFlag = 0 THEN
- FOR j = 1 TO ll_arr_cnt2
- ll_relid = s_mx2[j].relid
- ll_relprintid = s_mx2[j].relprintid
- ll_mtrlid = s_mx2[j].mtrlid
- // lde_qty =
-
- //如果有相同产品,只执行第一次
- FOR k = 1 TO j - 1
- IF s_mx2[k].mtrlid = s_mx2[j].mtrlid THEN
- GOTO nxtmtrl
- END IF
- NEXT
-
- uo_mtrl_str.ul_mtrlid = ll_mtrlid
- ls_pfcode = "组装"
- ls_pfgroup = ""
-
- ll_mxcnt = 0
- s_mx_str = s_null_str
-
- ll_printid = uo_mtrl_str.uof_get_maxprintid(ll_mtrlid,ls_pfcode)
-
- FOR i = 1 TO ll_arr_cnt
- //检查是否存在该物料
- IF uo_mtrl_str.uof_chk_prdpf(ll_mtrlid,ls_pfcode,ls_pfgroup,s_mx[i].mtrlid) = 0 THEN
- CONTINUE //如果有,跳出
- END IF
-
- IF uo_mtrl_str.uof_chk_rand(s_mx[i].mtrlid) = 0 THEN
- rslt = 0
- arg_msg = "销售订单明细行["+String(j)+"],物料明细行["+String(i)+"],发现环,不能添加清单"
- GOTO ext
- END IF
-
- ll_mxcnt++
- ll_printid++
- s_mx_str[ll_mxcnt].mtrlid = s_mx[i].mtrlid
- s_mx_str[ll_mxcnt].sonscale = s_mx[i].rqqty
- s_mx_str[ll_mxcnt].sonloss = 0
- s_mx_str[ll_mxcnt].sondecloss = 0
- s_mx_str[ll_mxcnt].sonahead = 0
- s_mx_str[ll_mxcnt].dscrp = ''
- s_mx_str[ll_mxcnt].updownrate = 0
- s_mx_str[ll_mxcnt].ifreputate = 0
- s_mx_str[ll_mxcnt].ifover = 0
- s_mx_str[ll_mxcnt].pfgroup = ''
- s_mx_str[ll_mxcnt].pfgroupqty = 0
- s_mx_str[ll_mxcnt].pfgroupmode = ''
- s_mx_str[ll_mxcnt].promode = ''
- s_mx_str[ll_mxcnt].printid = ll_printid
- s_mx_str[ll_mxcnt].wrkgrpid = s_mx[i].wrkgrpid
- s_mx_str[ll_mxcnt].status = s_mx[i].status
- s_mx_str[ll_mxcnt].pcode = s_mx[i].pcode
- s_mx_str[ll_mxcnt].woodcode = s_mx[i].woodcode
-
- NEXT
-
- IF ll_mxcnt > 0 THEN
- IF uo_mtrl_str.uof_prdpf_add(ll_mtrlid, ls_pfcode, s_mx_str, FALSE, arg_msg) = 0 THEN
- rslt = 0
- arg_msg = "销售订单明细行["+String(j)+"],物料明细行["+String(i)+"]~r~n"+arg_msg
- GOTO ext
- END IF
- END IF
-
- nxtmtrl:
- NEXT
- END IF
- update u_OrderRqMtrl_chng
- set CreateBomFlag = 1
- WHERE scid = :arg_scid
- AND billid = :arg_billid;
- 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
- DESTROY uo_mtrl_str
- RETURN rslt
- end function
- on uo_order_ml_rqmtrl_chng.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_ml_rqmtrl_chng.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|