$PBExportHeader$uo_finish_tech.sru forward global type uo_finish_tech from nonvisualobject end type end forward global type uo_finish_tech from nonvisualobject end type global uo_finish_tech uo_finish_tech type variables long uo_billid string uo_billcode long wrkgrpid,scid datetime billdate string billcode,opemp,dscrp int flag, secflag string rep int uo_option_inware_mtrlcuscode int uo_option_taskplancode end variables forward prototypes public function integer save (s_finish_tech arg_tech, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) 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 getinfo (long arg_billid, ref s_finish_tech_mx 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 caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer p_getflag (long arg_billid, ref integer arg_flag, ref integer arg_secflag, ref string arg_msg) public function integer uof_find_cust (long arg_scid, long arg_orderid, ref long arg_cusid, ref string arg_plancode, ref string arg_mtrlcuscode, ref string arg_msg) public function integer p_getinfo (long arg_billid, ref string arg_msg) public function integer p_reset () public function integer c_secaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer p_del_inware (long arg_inwareid, long arg_billid, long arg_printid, ref string arg_msg) public function integer p_create_inware (long arg_billid, long arg_printid, long arg_storageid, string arg_location, decimal arg_qty, string arg_mxdscrp, ref string arg_msg) public function integer secaudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) end prototypes public function integer save (s_finish_tech arg_tech, 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_tech.scid) THEN arg_tech.scid = 0 IF IsNull(arg_tech.billid) THEN arg_tech.billid = 0 IF IsNull(arg_tech.rep) THEN arg_tech.rep = '' IF IsNull(arg_tech.wrkgrpid) THEN arg_tech.wrkgrpid = 0 IF IsNull(arg_tech.dscrp) THEN arg_tech.dscrp = '' IF arg_tech.rep = '' THEN rslt = 0 arg_msg = '请填写经手人' 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_tech.arg_s_mx) IF it_mxbt <= 0 THEN rslt = 0 arg_msg = "没有正确明细内容" GOTO ext END IF IF arg_tech.billid = 0 THEN ll_billid = f_sys_scidentity(0,"u_finish_tech","billid",arg_msg,True,id_sqlca) IF ll_billid <= 0 THEN rslt = 0 GOTO ext END IF IF f_get_sccode(arg_tech.scid,sqlca,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF ls_billcode = getid(arg_tech.scid,ls_sccode + 'FT',Date(server_dt),False,sqlca) IF ls_billcode = "err" THEN rslt = 0 arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText GOTO ext END IF INSERT INTO u_finish_tech (scid, billid, billcode, rep, billdate, wrkgrpid, dscrp, opemp, opdate) VALUES (:arg_tech.scid, :ll_billid, :ls_billcode, :arg_tech.rep, :arg_tech.billdate, :arg_tech.wrkgrpid, :arg_tech.dscrp, :arg_opemp, :server_dt); 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_finish_tech_mx (scid, billid, printid, relid, qty, mxdscrp, storageid, location) VALUES (:arg_tech.scid, :ll_billid, :arg_tech.arg_s_mx[i].printid, :arg_tech.arg_s_mx[i].relid, :arg_tech.arg_s_mx[i].qty, :arg_tech.arg_s_mx[i].mxdscrp, :arg_tech.arg_s_mx[i].storageid, :arg_tech.arg_s_mx[i].location); 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_finish_tech SET rep = :arg_tech.rep, billdate = :arg_tech.billdate, wrkgrpid = :arg_tech.wrkgrpid, dscrp = :arg_tech.dscrp, modemp = :arg_opemp, moddate = :server_dt WHERE billid = :arg_tech.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_finish_tech_mx WHERE billid = :arg_tech.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_finish_tech_mx (scid, billid, printid, relid, qty, mxdscrp, storageid, location) VALUES (:arg_tech.scid, :arg_tech.billid, :arg_tech.arg_s_mx[i].printid, :arg_tech.arg_s_mx[i].relid, :arg_tech.arg_s_mx[i].qty, :arg_tech.arg_s_mx[i].mxdscrp, :arg_tech.arg_s_mx[i].storageid, :arg_tech.arg_s_mx[i].location); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF NEXT uo_billid = arg_tech.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 updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1 Int li_flag,li_secflag IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误的单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,li_flag,li_secflag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag = 1 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 Int li_flag,li_secflag IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误的单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,li_flag,li_secflag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag <> 0 THEN rslt = 0 arg_msg = '单据不是待审核状态,不能删除' GOTO ext END IF DELETE FROM u_finish_tech_mx Where billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF DELETE FROM u_finish_tech 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 RETURN rslt end function public function integer getinfo (long arg_billid, ref s_finish_tech_mx 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 If p_getinfo(arg_billid,arg_msg) = 0 Then rslt = 0 Goto ext End If Declare cur_mx Cursor For Select u_finish_tech_mx.scid, u_finish_tech_mx.printid, u_finish_tech_mx.relid, u_finish_tech_mx.qty, u_finish_tech_mx.mxdscrp, u_OrderMtrl_workgroup_tree.iflast, u_finish_tech_mx.storageid, u_finish_tech_mx.location, u_finish_tech_mx.relinwareid, u_finish_tech_mx.relinwarecode From u_OrderMtrl_workgroup_tree RIGHT Outer JOIN u_order_plan_tech ON u_OrderMtrl_workgroup_tree.scid = u_order_plan_tech.scid And u_OrderMtrl_workgroup_tree.orderid = u_order_plan_tech.orderid And u_OrderMtrl_workgroup_tree.printid = u_order_plan_tech.printid RIGHT Outer JOIN u_finish_tech_mx ON u_order_plan_tech.billid = u_finish_tech_mx.relid Where u_finish_tech_mx.billid = :arg_billid Order By u_finish_tech_mx.printid; Open cur_mx; Fetch cur_mx Into :arg_ref_mx[i].scid, :arg_ref_mx[i].printid, :arg_ref_mx[i].relid, :arg_ref_mx[i].qty, :arg_ref_mx[i].mxdscrp, :arg_ref_mx[i].iflast, :arg_ref_mx[i].storageid, :arg_ref_mx[i].location, :arg_ref_mx[i].relinwareid, :arg_ref_mx[i].relinwarecode; Do While sqlca.SQLCode = 0 i++ Fetch cur_mx Into :arg_ref_mx[i].scid, :arg_ref_mx[i].printid, :arg_ref_mx[i].relid, :arg_ref_mx[i].qty, :arg_ref_mx[i].mxdscrp, :arg_ref_mx[i].iflast, :arg_ref_mx[i].storageid, :arg_ref_mx[i].location, :arg_ref_mx[i].relinwareid, :arg_ref_mx[i].relinwarecode; Loop Close cur_mx; //检验明细是否读入完整 Select count(*) Into :no_mxcheck From u_finish_tech_mx 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 Int li_flag,li_secflag s_finish_tech_mx s_mx[] Long ll_arr_cnt,ll_i uo_order_plan_tech uo_plan uo_plan = Create uo_order_plan_tech IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,li_flag,li_secflag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag <> 0 THEN rslt = 0 arg_msg = '单据不是待审核状态,不能审核' GOTO ext END IF IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF FOR ll_i = 1 To ll_arr_cnt IF s_mx[ll_i].relid > 0 THEN IF uo_plan.addcmpqty(s_mx[ll_i].relid,s_mx[ll_i].qty,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT UPDATE u_finish_tech SET flag = 1, auditemp = :arg_opemp, auditdate = getdate() WHERE billid = :arg_billid And flag = 0 ; IF sqlca.SQLCode <> 0 And 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_plan RETURN rslt end function public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Int li_flag,li_secflag s_finish_tech_mx s_mx[] Long ll_arr_cnt,ll_i DateTime null_dt SetNull(null_dt) uo_order_plan_tech uo_plan uo_plan = Create uo_order_plan_tech IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF p_getflag(arg_billid,li_flag,li_secflag,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF li_flag <> 1 THEN rslt = 0 arg_msg = '单据不是已审核状态,不能撤审' GOTO ext END IF IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF FOR ll_i = 1 To ll_arr_cnt IF s_mx[ll_i].relid > 0 THEN IF uo_plan.addcmpqty(s_mx[ll_i].relid,0 - s_mx[ll_i].qty,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT UPDATE u_finish_tech SET flag = 0, auditemp = '', auditdate = :null_dt WHERE billid = :arg_billid And flag = 1 ; IF sqlca.SQLCode <> 0 And 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_plan RETURN rslt end function public function integer p_getflag (long arg_billid, ref integer arg_flag, ref integer arg_secflag, ref string arg_msg);Int rslt = 1 SELECT flag,secflag INTO :arg_flag,:arg_secflag FROM u_finish_tech 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 uof_find_cust (long arg_scid, long arg_orderid, ref long arg_cusid, ref string arg_plancode, ref string arg_mtrlcuscode, ref string arg_msg);Int rslt = 1 IF uo_option_inware_mtrlcuscode = -1000 THEN rslt = 0 arg_msg = '选项:[138]生产进仓单产品批号策略按指令单号,读取初始默认值失败,操作取消!' GOTO ext END IF IF uo_option_taskplancode = -1000 THEN rslt = 0 arg_msg = '选项:[038]使用客户批号库存,读取初始默认值失败,操作取消!' GOTO ext END IF Long li_ordertype,cnt Long ll_cusid String ls_cuscode,ls_cusname,ls_plancode Long ll_mtrlid,ll_mtrlid_p,ll_porderid Boolean lb_ifsameorder Int li_ifmtrlcuscode String ls_ordercode SELECT ordercode,ordertype,mtrlid,porderid INTO :ls_ordercode,:li_ordertype,:ll_mtrlid,:ll_porderid FROM u_order_ml WHERE scid = :arg_scid AND orderid = :arg_orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF IF li_ordertype = 0 THEN ll_cusid = 0 GOTO ext END IF SELECT count(*) INTO :cnt FROM u_order_ml_mx WHERE orderid = :arg_orderid AND scid = :arg_scid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF IF cnt <> 1 THEN ll_cusid = 0 GOTO ext END IF SELECT ifmtrlcuscode INTO :li_ifmtrlcuscode FROM u_mtrldef Where mtrlid = :ll_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料是否使用产品批号属性失败,'+sqlca.SQLErrText GOTO ext END IF IF uo_option_inware_mtrlcuscode = 1 AND li_ifmtrlcuscode = 1 THEN arg_mtrlcuscode = ls_ordercode ELSE arg_mtrlcuscode = '' END IF IF li_ordertype = 4 THEN SELECT mtrlid INTO :ll_mtrlid_p FROM u_order_ml WHERE scid = :arg_scid AND orderid = :ll_porderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF IF ll_mtrlid_p = ll_mtrlid THEN lb_ifsameorder = TRUE SELECT u_cust.cusid, u_cust.cuscode, u_cust.name, u_order_ml.taskrelcode INTO :ll_cusid, :ls_cuscode, :ls_cusname, :ls_plancode FROM u_cust,u_order_ml WHERE u_cust.cusid = u_order_ml.cusid AND u_order_ml.scid = :arg_scid AND u_order_ml.orderid = :ll_porderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF END IF ELSE SELECT u_cust.cusid, u_cust.cuscode, u_cust.name, u_order_ml.taskrelcode INTO :ll_cusid, :ls_cuscode, :ls_cusname, :ls_plancode FROM u_cust,u_order_ml WHERE u_cust.cusid = u_order_ml.cusid AND u_order_ml.scid = :arg_scid AND u_order_ml.orderid = :arg_orderid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText GOTO ext END IF END IF IF lb_ifsameorder AND uo_option_taskplancode = 1 THEN arg_plancode = ls_plancode ELSE arg_plancode = '' END IF ext: arg_cusid = ll_cusid RETURN rslt end function public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 If arg_billid <= 0 Then rslt = 0 arg_msg = '错误生产任务单唯一码' Goto ext End If Select scid, billcode, rep, billdate, wrkgrpid, dscrp, opemp, flag, secflag Into :scid, :billcode, :rep, :billdate, :wrkgrpid, :dscrp, :opemp, :flag, :secflag From u_finish_tech Where billid = :arg_billid ; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询生产任务完工单内容失败(错误生产任务完工单唯一码)' Goto ext End If ext: IF rslt = 0 THEN p_reset() Return rslt end function public function integer p_reset ();scid = 0 billcode = '' rep = '' setnull(billdate) wrkgrpid = 0 dscrp = '' opemp = '' flag = 0 secflag = 0 return 1 end function public function integer c_secaudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1,i DateTime null_dt SetNull(null_dt) s_finish_tech_mx s_mx[] Long ll_arr_cnt IF arg_billid = 0 THEN rslt = 0 arg_msg = "没有撤审对象" GOTO ext END IF IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 1 THEN rslt = 0 arg_msg = "确认状态有误,请核对" GOTO ext END IF IF secflag <> 1 THEN rslt = 0 arg_msg = "只有在已仓库审核状态才可以执行仓库撤审,请核对" GOTO ext END IF UPDATE u_finish_tech SET secauditrep = '', secauditdate = :null_dt, secflag = 0 WHERE billid = :arg_billid AND flag = 1 AND secflag = 1; IF sqlca.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致完工单仓库撤审操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF FOR i = 1 TO ll_arr_cnt IF s_mx[i].relinwareid > 0 THEN IF p_del_inware(s_mx[i].relinwareid,arg_billid,s_mx[i].printid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF p_reset() RETURN rslt end function public function integer p_del_inware (long arg_inwareid, long arg_billid, long arg_printid, ref string arg_msg);Int rslt = 1 Long ll_cnt,ll_flag String ls_inwarecode uo_inware uo_ware uo_ware = Create uo_inware uo_ware.commit_transaction = sqlca uo_ware.if_getid_ture = False If arg_inwareid <= 0 Then rslt = 0 arg_msg = '错误的进仓单ID' Goto ext End If Select count(*) Into :ll_cnt From u_inware Where inwareid = :arg_inwareid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = "因网络或其它原因导致查询相关进仓单失败"+"~n"+sqlca.SQLErrText Goto ext End If If ll_cnt = 0 Then rslt = 1 Goto ext ElseIf ll_cnt > 0 Then Select flag Into :ll_flag From u_inware Where inwareid = :arg_inwareid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = "因网络或其它原因导致查询相关进仓单审核标记失败"+"~n"+sqlca.SQLErrText Goto ext End If End If If ll_flag = 1 Then rslt = 0 arg_msg = '第'+String(arg_printid)+'行,相关进仓单已经审核,请先撤审' Goto ext // IF uo_ware.getinfo(scid,arg_inwareid,arg_msg) = 0 THEN // rslt = 0 // GOTO ext // END IF // // IF uo_ware.c_auditing(false,arg_msg) = 0 THEN // rslt = 0 // GOTO ext // END IF End If If uo_ware.del(scid,arg_inwareid,arg_msg,False) = 0 Then rslt = 0 Goto ext End If Update u_finish_tech_mx Set relinwareid = 0, relinwarecode = '' Where billid = :arg_billid And printid = :arg_printid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '更新完工单明细相关进仓单失败' Goto ext End If ext: Destroy uo_ware If rslt = 0 Then Rollback; End If Return rslt end function public function integer p_create_inware (long arg_billid, long arg_printid, long arg_storageid, string arg_location, decimal arg_qty, string arg_mxdscrp, ref string arg_msg);Long rslt = 1 Long i Long ll_wrkid,mtrlid,orderid,balctype,cusid,ll_ref_inwareid String status,woodcode,pcode,mtrlcode,unit,ls_ref_inwarecode String ls_plancode,ls_mtrlcuscode Decimal ld_planprice uo_inware uo_ware uo_ware = Create uo_inware uo_ware.commit_transaction = sqlca uo_ware.if_getid_ture = False Select storageid Into :ll_wrkid From u_sc_workgroup Where wrkgrpid = :wrkgrpid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查找工组对应车间失败' Goto ext End If Select u_Order_ml.mtrlid, u_Order_ml.status_mode, u_Order_ml.woodcode, u_Order_ml.pcode, u_mtrldef.mtrlcode, u_Order_ml.OrderID, u_mtrldef.unit Into :mtrlid, :status, :woodcode, :pcode, :mtrlcode, :orderid, :unit From u_finish_tech_mx LEFT Outer JOIN u_order_plan_tech LEFT Outer JOIN u_mtrldef Inner JOIN u_Order_ml ON u_mtrldef.mtrlid = u_Order_ml.mtrlid ON u_order_plan_tech.scid = u_Order_ml.scid And u_order_plan_tech.orderid = u_Order_ml.OrderID ON u_finish_tech_mx.relid = u_order_plan_tech.billid Where u_finish_tech_mx.billid = :arg_billid And u_finish_tech_mx.printid = :arg_printid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询明细信息失败,'+sqlca.SQLErrText Goto ext End If Select balctype Into :balctype From u_storage Where storageid = :arg_storageid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '查询仓库资料失败' Goto ext End If f_get_planprice_mtrl(mtrlid,status,woodcode,pcode,ld_planprice) If balctype = 1 Then If uof_find_cust(scid,orderid,cusid,ls_plancode,ls_mtrlcuscode,arg_msg) = 0 Then rslt = 0 Goto ext End If End If If uo_ware.newbegin(scid,3,arg_msg) = 0 Then rslt = 0 Goto ext End If uo_ware.indate = billdate uo_ware.inrep = opemp uo_ware.part = billcode uo_ware.dscrp = '' uo_ware.storageid = arg_storageid uo_ware.sptname = '工序完工单自动生成' uo_ware.relid = ll_wrkid If mtrlid > 0 Then If uo_ware.acceptmx(1,& mtrlid,& mtrlcode,& ls_plancode,& status,& arg_qty,& ld_planprice,& 1,& arg_mxdscrp,& arg_msg,& 0,& orderid,& 1,& woodcode,& pcode,& cusid,& unit,& 1,arg_qty,0,0,'','',0,0,ls_mtrlcuscode,arg_location,& arg_qty,& 0) = 0 Then rslt = 0 Goto ext End If End If If uo_ware.Save(False,arg_msg) = 0 Then rslt = 0 Goto ext End If ll_ref_inwareid = uo_ware.inwareid ls_ref_inwarecode = uo_ware.inwarecode //IF uo_ware.getinfo(scid,ll_ref_inwareid,arg_msg) = 0 THEN // rslt = 0 // GOTO ext //END IF // //IF uo_ware.auditing(false,arg_msg) = 0 THEN // rslt = 0 // GOTO ext //END IF Update u_finish_tech_mx Set relinwareid = :ll_ref_inwareid, relinwarecode = :ls_ref_inwarecode Where billid = :arg_billid And printid = :arg_printid; If sqlca.SQLCode <> 0 Then rslt = 0 arg_msg = '更新完工单明细相关进仓单失败' Goto ext End If ext: Destroy uo_ware If rslt = 0 Then Rollback; End If Return rslt end function public function integer secaudit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1 ,i Long ll_taskid Int li_flag,li_secflag String ls_taskcode s_finish_tech_mx s_mx[] Long ll_arr_cnt If arg_billid = 0 Then rslt = 0 arg_msg = "没有审核对象" Goto ext End If IF getinfo(arg_billid,s_mx,ll_arr_cnt,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF If flag <> 1 Then rslt = 0 arg_msg = "完工单只有在已确认状态才可以执行仓库审核" Goto ext End If If secflag <> 0 Then rslt = 0 arg_msg = "完工单只有在待仓库核状态才可以执行仓库审核" Goto ext End If Update u_finish_tech Set secauditrep = :arg_opemp, secauditdate = getdate(), secflag = 1 Where billid = :arg_billid And flag = 1 And secflag = 0; If sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 Then rslt = 0 arg_msg = "因网络或其它原因导致完工单仓库审批操作失败"+"~n"+sqlca.SQLErrText Goto ext End If FOR i = 1 TO ll_arr_cnt IF s_mx[i].iflast = 1 AND s_mx[i].storageid > 0 THEN IF p_create_inware(arg_billid,s_mx[i].printid,s_mx[i].storageid,s_mx[i].location,s_mx[i].qty,s_mx[i].mxdscrp,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF NEXT ext: If rslt = 0 Then Rollback; ElseIf rslt = 1 And arg_ifcommit Then Commit; End If p_reset() Return rslt end function on uo_finish_tech.create call super::create TriggerEvent( this, "constructor" ) end on on uo_finish_tech.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String str_optionvalue,arg_msg f_get_sys_option_value('138',str_optionvalue,arg_msg) uo_option_inware_mtrlcuscode = Long(str_optionvalue) f_get_sys_option_value('038',str_optionvalue,arg_msg) uo_option_taskplancode = Long(str_optionvalue) end event