$PBExportHeader$uo_mtrldef_adjust.sru forward global type uo_mtrldef_adjust from nonvisualobject end type type s_mtrldef from structure within uo_mtrldef_adjust end type end forward TYPE s_mtrldef FROM structure Long billid[] String mtrlcode[] Long mtrlid[] String zxmtrlmode[] Decimal { 5 } rate[] String unit_buy[] Decimal { 5 } rate_buy[] String unit_scll[] Decimal { 5 } rate_scll[] String unit_sale[] Decimal { 5 } rate_sale[] Decimal { 5 } net_weight[] Decimal { 5 } gross_weight[] String zxmtrlmode1[] Decimal { 5 } rate1[] String unit_buy1[] Decimal { 5 } rate_buy1[] String unit_scll1[] Decimal { 5 } rate_scll1[] String unit_sale1[] Decimal { 5 } rate_sale1[] Decimal { 5 } net_weight1[] Decimal { 5 } gross_weight1[] END TYPE global type uo_mtrldef_adjust from nonvisualobject end type global uo_mtrldef_adjust uo_mtrldef_adjust type variables PUBLIC PROTECTEDWRITE Long scid = 0 PUBLIC PROTECTEDWRITE Long billid = 0 PUBLIC PROTECTEDWRITE String billcode = '' PUBLIC PROTECTEDWRITE DateTime opdate PUBLIC PROTECTEDWRITE String operator = '' PUBLIC PROTECTEDWRITE DateTime Accomplishdate PUBLIC PROTECTEDWRITE String Permit_emp = '' Int billtype DateTime billdate Int flag,secflag Long relid = 0 Int Kind = 0 Long empid = 0 String dscrp String relcode Transaction commit_transaction PRIVATE: s_mtrldef_adjust s_mx Long it_MXBT = 0 //明细结构数组末指针 Boolean IT_NEWBEGIN = TRUE //新建标志 Boolean IT_UPDATEBEGIN = FALSE//修改标志 end variables forward prototypes public function integer p_reset () PUBLIC FUNCTION Integer p_clearmx () public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit) public function integer getinfo (long arg_taskid, ref string arg_msg) PUBLIC FUNCTION Integer newbegin (Long arg_scid, REF String arg_msg) public function integer p_getinfo (long arg_billid, ref string arg_msg) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit) public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit) PUBLIC FUNCTION Integer updatebegin (Long arg_billid, REF String arg_msg) public function integer cancelpermit (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit) public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit) PUBLIC FUNCTION Integer secauditing (Long arg_billid, REF String arg_msg, Boolean arg_ifcommit) PUBLIC FUNCTION Integer c_secauditing (Long arg_billid, REF String arg_msg, Boolean arg_ifcommit) public function integer acceptmx (s_mtrldef_adjust arg_mx, ref string arg_msg) end prototypes public function integer p_reset (); //INT p_RESET() //清除对象及其明细 billid = 0 billcode = '' operator = '' relcode = '' SetNull(opdate) SetNull(Accomplishdate) Permit_emp = '' flag = 0 secflag = 0 IT_NEWBEGIN = FALSE IT_UPDATEBEGIN = FALSE //清除明细 P_CLEARMX() RETURN 1 end function PUBLIC FUNCTION Integer p_clearmx (); //INT p_clearmx() //清除明细 it_MXBT = 0 RETURN 1 END FUNCTION public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit); Integer rslt = 1,cnt = 0,i Long LS_NEWbillid DateTime server_datetime String ls_sccode Long ll_billid If IsNull(dscrp) Then dscrp = '' If IsNull(arg_operator) Then arg_operator = '' //==================================================================== // Script - save ( ref string arg_msg, boolean arg_ifcommit ) // Reason: //-------------------------------------------------------------------- // Modified By: yyx Date: 2004.02.20 //-------------------------------------------------------------------- If Len(dscrp) > 0 Then dscrp = ' ' + dscrp //==================================================================== operator = arg_operator If IT_NEWBEGIN = False And IT_UPDATEBEGIN = False Then rslt = 0 arg_msg = "非编辑状态不可以提交" Goto ext End If cnt = 0 Select count(*) Into :cnt From u_rs_empinfo Where empid = :empid Using commit_transaction; If commit_transaction.SQLCode <> 0 Then rslt = 0 arg_msg = "查询操作失败,员工资料" Goto ext End If If cnt = 0 Then rslt = 0 arg_msg = "员工资料未定义或错误" Goto ext End If Select Top 1 getdate() Into :server_datetime From u_user Using commit_transaction; //取得系统时间,借用操作员表 If commit_transaction.SQLCode <> 0 Then rslt = 0 arg_msg = "查询操作失败,日期 " Goto ext End If If it_MXBT = 0 Then //如果输入物料资料错则已经清空 rslt = 0 arg_msg = "没有正确调整单明细内容" Goto ext End If cnt = 0 Select count(*) Into :cnt From u_user Where username = :operator Using commit_transaction ; If commit_transaction.SQLCode <> 0 Then rslt = 0 arg_msg = "查询操作失败,操作员!" Goto ext End If If cnt = 0 Then rslt = 0 arg_msg = "操作员姓名未登记或已取消!" Goto ext End If opdate = server_datetime //填写单据建立时间(最近修改时间) ////////////////////////////////////////////// //开始区分:新建/更新 处理 If billid = 0 Then //新建 ll_billid = f_sys_scidentity(0,"u_mtrldef_adjust","billid",arg_msg,False, commit_transaction) //数据commit事务) If ll_billid <= 0 Then rslt = 0 Goto ext End If If f_get_sccode(0,commit_transaction,ls_sccode,arg_msg) = 0 Then rslt = 0 Goto ext End If billcode = getid(0,ls_sccode + 'MG',Date(server_datetime),False,commit_transaction) If billcode = "err" Then billcode = '' rslt = 0 arg_msg = "无法获取调整单编号"+"~n"+commit_transaction.SQLErrText Goto ext End If Insert Into u_mtrldef_adjust ( billid, billcode, empid, Opemp, Dscrp, opdate, relcode, relid, billdate, billtype) Values ( :ll_billid, :billcode, :empid, :Operator, :Dscrp, :opdate, :relcode, :relid, :billdate, :billtype) Using commit_transaction ; If commit_transaction.SQLCode <> 0 Then rslt = 0 arg_msg = "因网络或其它原因导致插入调整单操作失败"+"~n"+commit_transaction.SQLErrText Rollback Using commit_transaction; Goto ext End If //读取新billid billid = ll_billid Else //////////////////////////////////////////////// //更新 Update u_mtrldef_adjust Set modemp = :publ_operator , Dscrp = :Dscrp, moddate = getdate(), relid = :relid, relcode = :relcode, billdate = :billdate, billtype = :billtype Where u_mtrldef_adjust.billid = :billid And flag = 0 Using commit_transaction; If commit_transaction.SQLCode <> 0 Or sqlca.SQLNRows <= 0 Then rslt = 0 arg_msg = "因网络或其它原因导致更新调整单操作失败"+"~n"+commit_transaction.SQLErrText Rollback Using commit_transaction; Goto ext End If //删除原有明细 Delete From u_mtrldef_adjustmx Where u_mtrldef_adjustmx.billid = :billid Using commit_transaction; If commit_transaction.SQLCode <> 0 Then rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText Rollback Using commit_transaction; Goto ext End If End If For i = 1 To it_MXBT Insert Into u_mtrldef_adjustmx ( billid, mtrlid, zxmtrlmode, unit_buy, rate_buy, unit_scll, rate_scll, unit_sale, rate_sale, net_weight, gross_weight, zxmtrlmode1, unit_buy1, rate_buy1, unit_scll1, rate_scll1, unit_sale1, rate_sale1, net_weight1, gross_weight1, dftsptid, dftsptid1, billtype, buydays1, buydays, wfjgdays1, wfjgdays, rebuylot, buy_autoday, rebuytype, minbuyqty, ifsendlot, upbuyqty, buydec, buy_ceiling, cubage, rebuylot1, buy_autoday1, rebuytype1, minbuyqty1, ifsendlot1, upbuyqty1, buydec1, buy_ceiling1, cubage1, expday, expday1, orderdays, orderdays1, maxzjday, maxzjday1, wfjgdays_bx, wfjgdays_bx1, buydays_bx, buydays_bx1, buyer,buyer1, mtrlarea, mtrlarea1, mtrlarea2 ) Values ( :billid, :s_mx.mtrlid[i], :s_mx.zxmtrlmode[i], :s_mx.unit_buy[i], :s_mx.rate_buy[i], :s_mx.unit_scll[i], :s_mx.rate_scll[i], :s_mx.unit_sale[i], :s_mx.rate_sale[i], :s_mx.net_weight[i], :s_mx.gross_weight[i], :s_mx.zxmtrlmode1[i], :s_mx.unit_buy1[i], :s_mx.rate_buy1[i], :s_mx.unit_scll1[i], :s_mx.rate_scll1[i], :s_mx.unit_sale1[i], :s_mx.rate_sale1[i], :s_mx.net_weight1[i], :s_mx.gross_weight1[i], :s_mx.dftsptid[i], :s_mx.dftsptid1[i], :s_mx.billtype[i], :s_mx.buydays1[i], :s_mx.buydays[i], :s_mx.wfjgdays1[i], :s_mx.wfjgdays[i], :s_mx.rebuylot[i], :s_mx.buy_autoday[i], :s_mx.rebuytype[i], :s_mx.minbuyqty[i], :s_mx.ifsendlot[i], :s_mx.upbuyqty[i], :s_mx.buydec[i], :s_mx.buy_ceiling[i], :s_mx.cubage[i], :s_mx.rebuylot1[i], :s_mx.buy_autoday1[i], :s_mx.rebuytype1[i], :s_mx.minbuyqty1[i], :s_mx.ifsendlot1[i], :s_mx.upbuyqty1[i], :s_mx.buydec1[i], :s_mx.buy_ceiling1[i], :s_mx.cubage1[i], :s_mx.expday[i], :s_mx.expday1[i], :s_mx.orderdays[i], :s_mx.orderdays1[i], :s_mx.maxzjday[i], :s_mx.maxzjday1[i], :s_mx.wfjgdays_bx[i], :s_mx.wfjgdays_bx1[i], :s_mx.buydays_bx[i], :s_mx.buydays_bx1[i], :s_mx.buyer[i], :s_mx.buyer1[i], :s_mx.mtrlarea[i], :s_mx.mtrlarea1[i], :s_mx.mtrlarea2[i]) Using commit_transaction; If commit_transaction.SQLCode <> 0 Then If IT_NEWBEGIN Then billid = 0 //还原billid rslt = 0 arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText Rollback Using commit_transaction; Goto ext End If Next IT_NEWBEGIN = False IT_UPDATEBEGIN = False ext: If rslt = 0 Then p_clearmx() Rollback Using commit_transaction; ElseIf arg_ifcommit And rslt = 1 Then Commit Using commit_transaction; End If Return(rslt) end function public function integer getinfo (long arg_taskid, ref string arg_msg); //getinfo(long arg_taskid,string arg_msg) //0 失败 1成功 Int rslt = 1,i = 1,NO_MXCHECK = 0 IF arg_taskid <= 0 THEN rslt = 0 arg_msg = '错误调整单唯一码' GOTO ext END IF IF p_getinfo(arg_taskid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF //用游标读取明细 DECLARE CUR_INWAERMX CURSOR FOR SELECT u_mtrldef_adjustmx.billid, u_mtrldef_adjustmx.mtrlid, u_mtrldef_adjustmx.zxmtrlmode, u_mtrldef_adjustmx.unit_buy, u_mtrldef_adjustmx.rate_buy, u_mtrldef_adjustmx.unit_scll, u_mtrldef_adjustmx.rate_scll, u_mtrldef_adjustmx.unit_sale, u_mtrldef_adjustmx.rate_sale, u_mtrldef_adjustmx.net_weight, u_mtrldef_adjustmx.gross_weight, u_mtrldef_adjustmx.zxmtrlmode1, u_mtrldef_adjustmx.unit_buy1, u_mtrldef_adjustmx.rate_buy1, u_mtrldef_adjustmx.unit_scll1, u_mtrldef_adjustmx.rate_scll1, u_mtrldef_adjustmx.unit_sale1, u_mtrldef_adjustmx.rate_sale1, u_mtrldef_adjustmx.net_weight1, u_mtrldef_adjustmx.gross_weight1, u_mtrldef_adjustmx.dftsptid1, u_mtrldef_adjustmx.dftsptid, u_mtrldef_adjustmx.billtype, u_mtrldef_adjustmx.buydays1, u_mtrldef_adjustmx.buydays, u_mtrldef_adjustmx.wfjgdays1, u_mtrldef_adjustmx.wfjgdays FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid WHERE u_mtrldef_adjustmx.billid = :arg_taskid USING commit_transaction; OPEN CUR_INWAERMX; FETCH CUR_INWAERMX INTO :s_mx.billid[i], :s_mx.mtrlid[i], :s_mx.zxmtrlmode[i], :s_mx.unit_buy[i], :s_mx.rate_buy[i], :s_mx.unit_scll[i], :s_mx.rate_scll[i], :s_mx.unit_sale[i], :s_mx.rate_sale[i], :s_mx.net_weight[i], :s_mx.gross_weight[i], :s_mx.zxmtrlmode1[i], :s_mx.unit_buy1[i], :s_mx.rate_buy1[i], :s_mx.unit_scll1[i], :s_mx.rate_scll1[i], :s_mx.unit_sale1[i], :s_mx.rate_sale1[i], :s_mx.net_weight1[i], :s_mx.gross_weight1[i], :s_mx.dftsptid1[i], :s_mx.dftsptid[i], :s_mx.billtype[i], :s_mx.buydays1[i], :s_mx.buydays[i], :s_mx.wfjgdays1[i], :s_mx.wfjgdays[i]; DO WHILE commit_transaction.SQLCode = 0 i++ FETCH CUR_INWAERMX INTO :s_mx.billid[i], :s_mx.mtrlid[i], :s_mx.zxmtrlmode[i], :s_mx.unit_buy[i], :s_mx.rate_buy[i], :s_mx.unit_scll[i], :s_mx.rate_scll[i], :s_mx.unit_sale[i], :s_mx.rate_sale[i], :s_mx.net_weight[i], :s_mx.gross_weight[i], :s_mx.zxmtrlmode1[i], :s_mx.unit_buy1[i], :s_mx.rate_buy1[i], :s_mx.unit_scll1[i], :s_mx.rate_scll1[i], :s_mx.unit_sale1[i], :s_mx.rate_sale1[i], :s_mx.net_weight1[i], :s_mx.gross_weight1[i], :s_mx.dftsptid1[i], :s_mx.dftsptid[i], :s_mx.billtype[i], :s_mx.buydays1[i], :s_mx.buydays[i], :s_mx.wfjgdays1[i], :s_mx.wfjgdays[i]; LOOP CLOSE CUR_INWAERMX; //检验明细是否读入完整 SELECT COUNT(*) INTO :NO_MXCHECK FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid Where u_mtrldef_adjustmx.billid = :arg_taskid USING commit_transaction; IF commit_transaction.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 it_MXBT = i - 1 IT_NEWBEGIN = FALSE IT_UPDATEBEGIN = FALSE ext: IF rslt = 0 THEN p_reset() RETURN rslt end function PUBLIC FUNCTION Integer newbegin (Long arg_scid, REF String arg_msg); //重置对象,设定业务类型与关联ID,准备建立新单 //0 fail 1 success Long rslt = 1,cnt = 0 IF arg_scid < 0 THEN arg_msg = '请选择分部' rslt = 0 GOTO ext END IF p_reset() IT_NEWBEGIN = TRUE IT_UPDATEBEGIN = FALSE scid = arg_scid ext: IF rslt = 0 THEN p_reset() RETURN rslt END FUNCTION public function integer p_getinfo (long arg_billid, ref string arg_msg); Int rslt = 1 SELECT billid, billCode, empid, Dscrp, relcode, flag, secflag INTO :billid, :billCode, :empid, :Dscrp, :relcode, :flag, :secflag FROM u_mtrldef_adjust Where u_mtrldef_adjust.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询订单内容失败(错误订单唯一码)' GOTO ext END IF ext: RETURN rslt end function public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit); //add_dscrp(string arg_newdescppart) //0 fail 1 SUCCESS Int rslt = 1 arg_newdescppart = Trim(arg_newdescppart) IF IT_UPDATEBEGIN OR IT_NEWBEGIN THEN rslt = 0 arg_msg = "编辑状态下不可用" GOTO ext END IF IF arg_newdescppart = '' THEN rslt = 0 arg_msg = "要添加内容为空,操作取消" GOTO ext END IF IF p_getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "待审核状态下不可用" GOTO ext END IF UPDATE u_mtrldef_adjust SET DSCRP = DSCRP+' '+:arg_newdescppart Where u_mtrldef_adjust.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+commit_transaction.SQLErrText ROLLBACK USING commit_transaction; GOTO ext END IF dscrp = dscrp+' '+arg_newdescppart IT_NEWBEGIN = FALSE IT_UPDATEBEGIN = FALSE ext: IF arg_ifcommit AND rslt = 1 THEN COMMIT USING commit_transaction; END IF p_reset() Return (rslt) end function public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit); //删除未审核的单据 //0 FAIL, 1 SUCCESS Int rslt = 1 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 if flag <> 0 then rslt = 0 arg_msg = "单据已经审核,不可以删除" GOTO ext end if Long cnt cnt = 0 DELETE FROM u_mtrldef_adjust Where u_mtrldef_adjust.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据操作失败"+"~n"+commit_transaction.SQLErrText ROLLBACK USING commit_transaction; GOTO ext END IF DELETE FROM u_mtrldef_adjustmx Where u_mtrldef_adjustmx.billid = :arg_billid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText ROLLBACK USING commit_transaction; GOTO ext END IF IT_NEWBEGIN = FALSE IT_UPDATEBEGIN = FALSE IF arg_ifcommit AND rslt = 1 THEN COMMIT USING commit_transaction; END IF ext: p_reset() Return (rslt) end function PUBLIC FUNCTION Integer updatebegin (Long arg_billid, REF String arg_msg); //UPDATEbegin(long arg_billid,ref string arg_msg) //从置对象,设定业务类型与关联ID,准备更新进仓单 //0 fail 1 success Long rslt = 1,cnt = 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 IF flag <> 0 THEN rslt = 0 arg_msg = '已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核' GOTO ext END IF IT_NEWBEGIN = FALSE IT_UPDATEBEGIN = TRUE p_clearmx() //清除明细 ext: IF rslt = 0 THEN p_reset() RETURN rslt END FUNCTION public function integer cancelpermit (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1,cnt = 0 DateTime NULLDT SetNull(NULLDT) IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 1 THEN rslt = 0 arg_msg = "订单只有在已审核状态才可以执行撤消审核,请核对" GOTO ext END IF UPDATE u_mtrldef_adjust SET Status = 0,Permit_date = :NULLDT, Permit_Emp = '' Where billid = :arg_billid AND status = 1 USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致单据撤消审核操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF IT_NEWBEGIN = FALSE IT_UPDATEBEGIN = FALSE ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT USING commit_transaction; END IF p_reset() Return (rslt) end function public function integer auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1,i IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo( arg_billid, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 1 THEN rslt = 0 arg_msg = "调价单还没有审核,请核对" GOTO ext END IF //更新审核标记 UPDATE u_mtrldef_adjust SET auditingrep = :publ_operator , 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 END IF UPDATE u_mtrldef SET zxmtrlmode = u_mtrldef_adjustmx.zxmtrlmode, unit_buy = u_mtrldef_adjustmx.unit_buy, rate_buy = u_mtrldef_adjustmx.rate_buy, unit_scll = u_mtrldef_adjustmx.unit_scll, rate_scll = u_mtrldef_adjustmx.rate_scll, unit_sale = u_mtrldef_adjustmx.unit_sale, rate_sale = u_mtrldef_adjustmx.rate_sale, net_weight = u_mtrldef_adjustmx.net_weight, gross_weight = u_mtrldef_adjustmx.gross_weight, dftsptid = u_mtrldef_adjustmx.dftsptid, mtrlarea = u_mtrldef_adjustmx.mtrlarea, mtrlarea1 = u_mtrldef_adjustmx.mtrlarea1, mtrlarea2 = u_mtrldef_adjustmx.mtrlarea2 FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid Where u_mtrldef_adjustmx.billid = :arg_billid AND u_mtrldef_adjustmx.billtype = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料/产品资料常规属性失败'+sqlca.SQLErrText GOTO ext END IF UPDATE u_mtrldef SET wfjgdays = u_mtrldef_adjustmx.wfjgdays, expday = u_mtrldef_adjustmx.expday, orderdays = u_mtrldef_adjustmx.orderdays, maxzjday = u_mtrldef_adjustmx.maxzjday, wfjgdays_bx = u_mtrldef_adjustmx.wfjgdays_bx FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid Where u_mtrldef_adjustmx.billid = :arg_billid AND u_mtrldef_adjustmx.billtype = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料/产品资料生产属性失败'+sqlca.SQLErrText GOTO ext END IF UPDATE u_mtrldef SET net_weight = u_mtrldef_adjustmx.net_weight, gross_weight = u_mtrldef_adjustmx.gross_weight, dftsptid = u_mtrldef_adjustmx.dftsptid, buydays = u_mtrldef_adjustmx.buydays, rebuylot = u_mtrldef_adjustmx.rebuylot, buy_autoday = u_mtrldef_adjustmx.buy_autoday, rebuytype = u_mtrldef_adjustmx.rebuytype, minbuyqty = u_mtrldef_adjustmx.minbuyqty, ifsendlot = u_mtrldef_adjustmx.ifsendlot, upbuyqty = u_mtrldef_adjustmx.upbuyqty, buydec = u_mtrldef_adjustmx.buydec, buy_ceiling = u_mtrldef_adjustmx.buy_ceiling, cubage = u_mtrldef_adjustmx.cubage, buydays_bx = u_mtrldef_adjustmx.buydays_bx, buyer = u_mtrldef_adjustmx.buyer FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid Where u_mtrldef_adjustmx.billid = :arg_billid AND u_mtrldef_adjustmx.billtype = 2; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料/产品资料采购属性失败'+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 c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1,i Long cnt DateTime ls_null SetNull(ls_null) IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo( arg_billid, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "调价单还没有审核,请核对" GOTO ext END IF //更新审核标记 UPDATE u_mtrldef_adjust SET auditingrep = '' , Auditingdate = :ls_null, flag = 0 WHERE billid = :arg_billid AND flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF cnt = 0 SELECT count(1) INTO :cnt FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid WHERE u_mtrldef_adjustmx.billid = :arg_billid AND u_mtrldef_adjustmx.BILLTYPE = 0 AND (u_mtrldef.zxmtrlmode <> u_mtrldef_adjustmx.zxmtrlmode OR u_mtrldef.unit_buy <> u_mtrldef_adjustmx.unit_buy OR u_mtrldef.rate_buy <> u_mtrldef_adjustmx.rate_buy OR u_mtrldef.unit_scll <> u_mtrldef_adjustmx.unit_scll OR u_mtrldef.rate_scll <> u_mtrldef_adjustmx.rate_scll OR u_mtrldef.unit_sale <> u_mtrldef_adjustmx.unit_sale OR u_mtrldef.rate_sale <> u_mtrldef_adjustmx.rate_sale OR u_mtrldef.net_weight <> u_mtrldef_adjustmx.net_weight OR u_mtrldef.gross_weight <> u_mtrldef_adjustmx.gross_weight OR u_mtrldef.dftsptid <> u_mtrldef_adjustmx.dftsptid ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料/产品资料失败'+sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '部分资料数据与当前物料资料数据已不同,不能撤审' GOTO ext END IF cnt = 0 SELECT count(1) INTO :cnt FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid WHERE u_mtrldef_adjustmx.billid = :arg_billid AND u_mtrldef_adjustmx.BILLTYPE = 1 AND ( u_mtrldef_adjustmx.wfjgdays <> u_mtrldef.wfjgdays ); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料/产品资料失败'+sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '部分资料数据与当前物料资料数据已不同,不能撤审' GOTO ext END IF //检查采购属性 cnt = 0 SELECT count(1) INTO :cnt FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid WHERE u_mtrldef_adjustmx.billid = :arg_billid AND u_mtrldef_adjustmx.BILLTYPE = 2 AND ( u_mtrldef_adjustmx.buydays <> u_mtrldef.buydays or u_mtrldef.net_weight <> u_mtrldef_adjustmx.net_weight OR u_mtrldef.gross_weight <> u_mtrldef_adjustmx.gross_weight OR u_mtrldef.dftsptid <> u_mtrldef_adjustmx.dftsptid OR u_mtrldef.rebuylot <> u_mtrldef_adjustmx.rebuylot OR u_mtrldef.buy_autoday <> u_mtrldef_adjustmx.buy_autoday OR u_mtrldef.rebuytype <> u_mtrldef_adjustmx.rebuytype OR u_mtrldef.minbuyqty <> u_mtrldef_adjustmx.minbuyqty OR u_mtrldef.ifsendlot <> u_mtrldef_adjustmx.ifsendlot OR u_mtrldef.upbuyqty <> u_mtrldef_adjustmx.upbuyqty OR u_mtrldef.buydec <> u_mtrldef_adjustmx.buydec OR u_mtrldef.buy_ceiling <> u_mtrldef_adjustmx.buy_ceiling OR u_mtrldef.cubage <> u_mtrldef_adjustmx.cubage); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料/产品资料失败'+sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '部分资料数据与当前物料资料数据已不同,不能撤审' GOTO ext END IF UPDATE u_mtrldef SET zxmtrlmode = u_mtrldef_adjustmx.zxmtrlmode1, unit_buy = u_mtrldef_adjustmx.unit_buy1, rate_buy = u_mtrldef_adjustmx.rate_buy1, unit_scll = u_mtrldef_adjustmx.unit_scll1, rate_scll = u_mtrldef_adjustmx.rate_scll1, unit_sale = u_mtrldef_adjustmx.unit_sale1, rate_sale = u_mtrldef_adjustmx.rate_sale1 FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid Where u_mtrldef_adjustmx.billid = :arg_billid and u_mtrldef_adjustmx.billtype=0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料/产品资料失败'+sqlca.SQLErrText GOTO ext END IF UPDATE u_mtrldef SET wfjgdays = u_mtrldef_adjustmx.wfjgdays1 FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid Where u_mtrldef_adjustmx.billid = :arg_billid and u_mtrldef_adjustmx.billtype=1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料/产品资料失败'+sqlca.SQLErrText GOTO ext END IF UPDATE u_mtrldef SET net_weight = u_mtrldef_adjustmx.net_weight1, gross_weight = u_mtrldef_adjustmx.gross_weight1, dftsptid = u_mtrldef_adjustmx.dftsptid, buydays = u_mtrldef_adjustmx.buydays1, rebuylot = u_mtrldef_adjustmx.rebuylot1, buy_autoday = u_mtrldef_adjustmx.buy_autoday1, rebuytype = u_mtrldef_adjustmx.rebuytype1, minbuyqty = u_mtrldef_adjustmx.minbuyqty1, ifsendlot = u_mtrldef_adjustmx.ifsendlot1, upbuyqty = u_mtrldef_adjustmx.upbuyqty1, buydec = u_mtrldef_adjustmx.buydec1, buy_ceiling = u_mtrldef_adjustmx.buy_ceiling1, cubage = u_mtrldef_adjustmx.cubage1, buyer = u_mtrldef_adjustmx.buyer1 FROM u_mtrldef_adjustmx INNER JOIN u_mtrldef ON u_mtrldef_adjustmx.mtrlid = u_mtrldef.mtrlid Where u_mtrldef_adjustmx.billid = :arg_billid AND u_mtrldef_adjustmx.billtype = 2; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料/产品资料采购属性失败'+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 secauditing (Long arg_billid, REF String arg_msg, Boolean arg_ifcommit); Int rslt = 1,i IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo( arg_billid, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 2 THEN rslt = 0 arg_msg = "调价单已高审,请核对" GOTO ext END IF //更新审核标记 UPDATE u_mtrldef_adjust SET secauditingrep = :publ_operator , secauditingdate = getdate(), flag = 2 WHERE billid = :arg_billid AND flag = 1; 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 c_secauditing (Long arg_billid, REF String arg_msg, Boolean arg_ifcommit); Int rslt = 1,i DateTime ls_null SetNull(ls_null) IF arg_billid <= 0 THEN rslt = 0 arg_msg = '错误单据唯一码' GOTO ext END IF IF getinfo( arg_billid, arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag <> 2 THEN rslt = 0 arg_msg = "调价单未高审,不能撤审,请核对" GOTO ext END IF //更新审核标记 UPDATE u_mtrldef_adjust SET secauditingrep = '' , secauditingdate = :ls_null, flag = 1 WHERE billid = :arg_billid AND flag = 2; 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 acceptmx (s_mtrldef_adjust arg_mx, ref string arg_msg);Long rslt = 1,cnt = 0,LS_i //写入内容 For LS_i = 1 To UpperBound(arg_mx.mtrlid) If arg_mx.mtrlid[LS_i] = 0 Then Continue it_mxbt++ s_mx.mtrlid[it_mxbt] = arg_mx.mtrlid[LS_i] s_mx.zxmtrlmode[it_mxbt] = arg_mx.zxmtrlmode[LS_i] s_mx.unit_buy[it_mxbt] = arg_mx.unit_buy[LS_i] s_mx.rate_buy[it_mxbt] = arg_mx.rate_buy[LS_i] s_mx.unit_scll[it_mxbt] = arg_mx.unit_scll[LS_i] s_mx.rate_scll[it_mxbt] = arg_mx.rate_scll[LS_i] s_mx.unit_sale[it_mxbt] = arg_mx.unit_sale[LS_i] s_mx.rate_sale[it_mxbt] = arg_mx.rate_sale[LS_i] s_mx.zxmtrlmode1[it_mxbt] = arg_mx.zxmtrlmode1[LS_i] s_mx.unit_buy1[it_mxbt] = arg_mx.unit_buy1[LS_i] s_mx.rate_buy1[it_mxbt] = arg_mx.rate_buy1[LS_i] s_mx.unit_scll1[it_mxbt] = arg_mx.unit_scll1[LS_i] s_mx.rate_scll1[it_mxbt] = arg_mx.rate_scll1[LS_i] s_mx.unit_sale1[it_mxbt] = arg_mx.unit_sale1[LS_i] s_mx.rate_sale1[it_mxbt] = arg_mx.rate_sale1[LS_i] s_mx.wfjgdays1[it_mxbt] = arg_mx.wfjgdays1[LS_i] s_mx.wfjgdays[it_mxbt] = arg_mx.wfjgdays[LS_i] s_mx.billtype[it_mxbt] = arg_mx.billtype[LS_i] s_mx.mtrlarea[it_mxbt] = arg_mx.mtrlarea[LS_i] s_mx.mtrlarea1[it_mxbt] = arg_mx.mtrlarea1[LS_i] s_mx.mtrlarea2[it_mxbt] = arg_mx.mtrlarea2[LS_i] //采购属性 s_mx.buydays1[it_mxbt] = arg_mx.buydays1[LS_i] s_mx.buydays[it_mxbt] = arg_mx.buydays[LS_i] s_mx.net_weight[it_mxbt] = arg_mx.net_weight[LS_i] s_mx.gross_weight[it_mxbt] = arg_mx.gross_weight[LS_i] s_mx.dftsptid[it_mxbt] = arg_mx.dftsptid[LS_i] s_mx.net_weight1[it_mxbt] = arg_mx.net_weight1[LS_i] s_mx.gross_weight1[it_mxbt] = arg_mx.gross_weight1[LS_i] s_mx.dftsptid1[it_mxbt] = arg_mx.dftsptid1[LS_i] s_mx.rebuylot[it_mxbt] = arg_mx.rebuylot[LS_i] s_mx.rebuylot1[it_mxbt] = arg_mx.rebuylot1[LS_i] s_mx.buy_autoday[it_mxbt] = arg_mx.buy_autoday[LS_i] s_mx.buy_autoday1[it_mxbt] = arg_mx.buy_autoday1[LS_i] s_mx.rebuytype[it_mxbt] = arg_mx.rebuytype[LS_i] s_mx.rebuytype1[it_mxbt] = arg_mx.rebuytype1[LS_i] s_mx.minbuyqty[it_mxbt] = arg_mx.minbuyqty[LS_i] s_mx.minbuyqty1[it_mxbt] = arg_mx.minbuyqty1[LS_i] s_mx.ifsendlot[it_mxbt] = arg_mx.ifsendlot[LS_i] s_mx.ifsendlot1[it_mxbt] = arg_mx.ifsendlot1[LS_i] s_mx.upbuyqty[it_mxbt] = arg_mx.upbuyqty[LS_i] s_mx.upbuyqty1[it_mxbt] = arg_mx.upbuyqty1[LS_i] s_mx.buydec[it_mxbt] = arg_mx.buydec[LS_i] s_mx.buydec1[it_mxbt] = arg_mx.buydec1[LS_i] s_mx.buy_ceiling[it_mxbt] = arg_mx.buy_ceiling[LS_i] s_mx.buy_ceiling1[it_mxbt] = arg_mx.buy_ceiling1[LS_i] s_mx.cubage[it_mxbt] = arg_mx.cubage[LS_i] s_mx.cubage1[it_mxbt] = arg_mx.cubage1[LS_i] s_mx.expday[it_mxbt] = arg_mx.expday[LS_i] s_mx.expday1[it_mxbt] = arg_mx.expday1[LS_i] s_mx.orderdays[it_mxbt] = arg_mx.orderdays[LS_i] s_mx.orderdays1[it_mxbt] = arg_mx.orderdays1[LS_i] s_mx.maxzjday[it_mxbt] = arg_mx.maxzjday[LS_i] s_mx.maxzjday1[it_mxbt] = arg_mx.maxzjday1[LS_i] s_mx.wfjgdays_bx[it_mxbt] = arg_mx.wfjgdays_bx[LS_i] s_mx.wfjgdays_bx1[it_mxbt] = arg_mx.wfjgdays_bx1[LS_i] s_mx.buydays_bx[it_mxbt] = arg_mx.buydays_bx[LS_i] s_mx.buydays_bx1[it_mxbt] = arg_mx.buydays_bx1[LS_i] s_mx.buyer1[it_mxbt] = arg_mx.buyer1[LS_i] s_mx.buyer[it_mxbt] = arg_mx.buyer[LS_i] Next //ext: If rslt = 0 Then p_clearmx() Return(rslt) end function on uo_mtrldef_adjust.create call super::create TriggerEvent( this, "constructor" ) end on on uo_mtrldef_adjust.destroy TriggerEvent( this, "destructor" ) call super::destroy end on