$PBExportHeader$uo_inware_wfjg.sru forward global type uo_inware_wfjg from nonvisualobject end type end forward global type uo_inware_wfjg from nonvisualobject end type global uo_inware_wfjg uo_inware_wfjg type variables PUBLIC PROTECTEDWRITE Long scid = 0 //分部id PUBLIC PROTECTEDWRITE Long inwareid //进仓单表自动增量id PUBLIC PROTECTEDWRITE String inwarecode //单据的唯一编号 PUBLIC PROTECTEDWRITE Int billtype = 0 //业务类型 PUBLIC PROTECTEDWRITE DateTime opdate //建立时间,自动 PUBLIC PROTECTEDWRITE String opemp //建立操作员 PUBLIC PROTECTEDWRITE DateTime moddate //修改时间,自动 PUBLIC PROTECTEDWRITE String modemp //修改操作员 PUBLIC PROTECTEDWRITE Int flag = 0 //仓库审核标志 PUBLIC PROTECTEDWRITE Int balcflag = 0 //仓库结存标志 PUBLIC PROTECTEDWRITE DateTime auditingdate //审核时间 PUBLIC PROTECTEDWRITE String auditingrep //审核操作员 PUBLIC PROTECTEDWRITE Decimal sum_amt = 0 //单据总金额 PUBLIC PROTECTEDWRITE Decimal jgsum_amt = 0 //单据加工总金额 PUBLIC PROTECTEDWRITE Int secflag = 0 //财务审核标志 PUBLIC PROTECTEDWRITE DateTime secauditingdate //二审核时间 PUBLIC PROTECTEDWRITE String secauditingrep //二审核操作员 Long relid = 0 //关联id Long storageid = 0 //进仓仓库 DateTime indate //进仓发生时间 String inrep = '' //经手人 String part = '' //相关号码 String dscrp = '' //备注 Long sptid = 0 //供应商id String sptname = '' //供应商名称(不记帐模式使用) Int dxflag = 0 //代销标记 Int thflag = 0 //退货标记 Decimal otheramt = 0 //单据费用 Long relint_1 = 0 Long relint_2 = 0 Long relint_3 = 0 String relstr_1 = '' String relstr_2 = '' String relstr_3 = '' long moneyid = 0 Boolean if_getid_ture = TRUE Transaction commit_transaction //数据commit事务 s_wfjgmx_in_aft inwaremx[] //明细结构数组 s_wfjgmx_in_bef inwaremx_bef[] //明细结构数组 Long it_mxbt = 0 //明细结构数组末指针 Long it_mxbt_bef = 0 //明细结构数组末指针 Boolean it_newbegin = FALSE //新建标志 Boolean it_updatebegin = FALSE //修改标志 end variables forward prototypes public function integer save (boolean arg_ifcommit, ref string arg_msg) public function integer getinfo (long arg_scid, long arg_inwareid, ref string arg_msg) public function integer auditing (boolean arg_ifcommit, ref string arg_msg) public function integer del (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit) public function integer add_dscrp (long arg_scid, long arg_inwareid, string arg_newdescppart, ref string arg_msg) public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg) public function integer p_clearmx () public function integer p_getinfo (long arg_scid, long arg_inwareid, ref string arg_msg) public function integer p_reset () public function integer p_create_inware (boolean arg_ifcommit, ref string arg_msg) public function integer p_destroy_inware (boolean arg_ifcommit, ref string arg_msg) public function integer secauditing (boolean arg_ifcommit, ref string arg_msg) public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg) public function integer p_update_mtrlware (long arg_mtrlwareid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_price, long arg_sptid, string arg_woodcode, string arg_pcode, ref string arg_msg) public function integer newbegin (long arg_scid, integer arg_billtype, ref string arg_msg) public function integer updatebegin (long arg_scid, long arg_inwareid, integer arg_billtype, ref string arg_msg) public function integer p_update_cost (long arg_mtrlwareid, string arg_mtrlcode, long arg_printid, ref decimal arg_ref_cost, ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx_bef (long arg_mtrlwareid, decimal arg_qty, decimal arg_price, string arg_mxdscrp, long arg_printid, ref string arg_msg, string arg_unit, decimal arg_uqty, decimal arg_rate) public function integer acceptmx_bef_th (long arg_mtrlwareid, decimal arg_qty, decimal arg_price, string arg_mxdscrp, long arg_printid, ref string arg_msg, string arg_unit, decimal arg_uqty, decimal arg_rate, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, string arg_woodcode, string arg_pcode) public function integer mod_price (long arg_scid, long arg_inwareid, long arg_printid, decimal arg_fprice, decimal arg_jgprice, decimal arg_rebate, decimal arg_tax, ref string arg_msg, boolean arg_ifcommit) public function integer acceptmx (long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_uqty, decimal arg_fprice, decimal arg_rebate, string arg_mxdscrp, ref string arg_msg, decimal arg_jgprice, long arg_relid, long arg_relprintid, integer arg_ifrel, string arg_woodcode, string arg_pcode, long arg_cusid_sptid, string arg_unit, decimal arg_qty, long arg_storageid, decimal arg_rate, decimal arg_addqty, string arg_mxdscrp2, string arg_mxdscrp3, string arg_mxdscrp4) end prototypes public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1,cnt = 0,i DateTime server_dt Long ls_newid String ls_sccode IF IsNull(relid) THEN relid = 0 IF IsNull(storageid) THEN storageid = 0 IF IsNull(inrep) THEN inrep = '' IF IsNull(dscrp) THEN dscrp = '' IF IsNull(part) THEN part = '' IF IsNull(sptid) THEN sptid = 0 IF IsNull(sptname) THEN sptname = '' IF IsNull(dxflag) THEN dxflag = 0 IF IsNull(thflag) THEN thflag = 0 IF IsNull(relint_1) THEN relint_1 = 0 IF IsNull(relint_2) THEN relint_2 = 0 IF IsNull(relint_3) THEN relint_3 = 0 IF IsNull(relstr_1) THEN relstr_1 = '' IF IsNull(relstr_2) THEN relstr_2 = '' IF IsNull(relstr_3) THEN relstr_3 = '' IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以提交" GOTO ext END IF SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ; //取得系统时间,借用操作员表 IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,日期 " GOTO ext END IF IF billtype <> 9 THEN IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空 rslt = 0 arg_msg = "没有正确的外协收货明细内容" GOTO ext END IF IF sys_option_wfjg_outmx = 1 And it_mxbt_bef = 0 THEN rslt = 0 arg_msg = "系统选项[079]限制,没有正确的外协商库存内容" GOTO ext END IF IF relint_1 = 0 THEN arg_msg = '请选择结算方式' rslt = 0 GOTO ext END IF ELSE IF it_mxbt_bef = 0 THEN //如果输入物料资料错则已经清空 rslt = 0 arg_msg = "没有正确进仓内容" GOTO ext END IF END IF IF Year(Date(indate)) < 2000 Or IsNull(indate) THEN rslt = 0 arg_msg = "缺少进仓发生时间或不合理" GOTO ext END IF //==================================================================== // Script - save ( boolean arg_ifcommit, ref string arg_msg ) // Reason: //-------------------------------------------------------------------- // Modified By: yyx Date: 2004.01.02 //-------------------------------------------------------------------- IF DaysAfter(Date(String(server_dt,'yyyy-mm-dd')),Date(String(indate,'yyyy-mm-dd'))) > sys_option_input_days THEN rslt = 0 arg_msg = '进仓日期错误,日期不能超前系统日期' GOTO ext END IF IF DaysAfter(Date(String(indate,'yyyy-mm-dd')),Date(String(server_dt,'yyyy-mm-dd'))) > sys_option_input_days THEN rslt = 0 arg_msg = '进仓日期错误,日期不能落后系统日期' GOTO ext END IF //==================================================================== SELECT name INTO :sptname FROM u_spt Where sptid = :sptid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,供应商资料" GOTO ext END IF sptname = left(trim(sptname),30) ////////////////////////////////////////////// //开始区分:新建/更新 处理 IF inwareid = 0 THEN //新建 ls_newid = f_sys_scidentity(scid,"ow_wfjg_in","inwareid",arg_msg,if_getid_ture,commit_transaction) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF //取分部代号 IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF //取得新单据编号 CHOOSE CASE billtype CASE 4 //仓库外协 IF thflag = 0 THEN inwarecode = getid(scid,ls_sccode + 'WI',Date(server_dt),if_getid_ture,commit_transaction) ELSE inwarecode = getid(scid,ls_sccode + 'WT',Date(server_dt),if_getid_ture,commit_transaction) END IF CASE 5 //车间外协 IF thflag = 0 THEN inwarecode = getid(scid,ls_sccode + 'SI',Date(server_dt),if_getid_ture,commit_transaction) ELSE inwarecode = getid(scid,ls_sccode + 'ST',Date(server_dt),if_getid_ture,commit_transaction) END IF CASE 9 //外协盘亏 WK inwarecode = getid(scid,ls_sccode + 'WK',Date(server_dt),if_getid_ture,commit_transaction) END CHOOSE IF inwarecode = "err" THEN inwarecode = '' rslt = 0 arg_msg = "无法获取进仓单编号"+"~n"+commit_transaction.SQLErrText GOTO ext END IF INSERT INTO ow_wfjg_in ( scid, inwareid, inwarecode, billtype, relid, storageid, indate, inrep, part, dscrp, sptid, sptname, thflag, dxflag, otheramt, opdate, opemp, relint_1, relint_2, relint_3, relstr_1, relstr_2, relstr_3) VALUES ( :scid, :ls_newid, :inwarecode, :billtype, :relid, :storageid, :indate, :inrep, :part, :dscrp, :sptid, :sptname, :thflag, :dxflag, :otheramt, :server_dt, :publ_operator, :relint_1, :relint_2, :relint_3, :relstr_1, :relstr_2, :relstr_3) Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjg_in') > 0 THEN arg_msg = '插入操作失败,关键字分部ID、单据ID重复' ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_ow_wfjg_in') > 0 THEN arg_msg = '插入操作失败,单据编号重复' ELSE arg_msg = "插入操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF //读取新inwareid inwareid = ls_newid ELSE //////////////////////////////////////////////// //更新 UPDATE ow_wfjg_in SET billtype = :billtype, relid = :relid, storageid = :storageid, indate = :indate, inrep = :inrep, part = :part, dscrp = :dscrp, sptid = :sptid, sptname = :sptname, thflag = :thflag, dxflag = :dxflag, otheramt = :otheramt, moddate = :server_dt, modemp = :publ_operator, relint_1 = :relint_1, relint_2 = :relint_2, relint_3 = :relint_3, relstr_1 = :relstr_1, relstr_2 = :relstr_2, relstr_3 = :relstr_3 WHERE ow_wfjg_in.inwareid = :inwareid AND ow_wfjg_in.scid = :scid And flag = 0 Using commit_transaction; IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjg_in') > 0 THEN arg_msg = '插入操作失败,关键字分部ID、单据ID重复' ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_ow_wfjg_in') > 0 THEN arg_msg = '插入操作失败,单据编号重复' ELSE arg_msg = "插入操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF //删除原有明细 DELETE FROM ow_wfjgmx_in_aft WHERE ow_wfjgmx_in_aft.inwareid = :inwareid And ow_wfjgmx_in_aft.scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF //删除原有明细 DELETE FROM ow_wfjgmx_in_bef WHERE ow_wfjgmx_in_bef.inwareid = :inwareid And ow_wfjgmx_in_bef.scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF END IF FOR i = 1 To it_mxbt INSERT INTO ow_wfjgmx_in_aft (scid, inwareid, printid, mtrlid, plancode, status, qty, fprice, rebate, price, planprice, mxdscrp, jgprice, relid, relprintid, ifrel, woodcode, relcode, pcode, sptid_cusid, cost, sptmtrlname, unit, rate, uprice, uqty, bootqty, noauditqty, storageid, addqty, mxdscrp2, mxdscrp3, mxdscrp4) VALUES ( :scid, :inwareid, :inwaremx[i].printid, :inwaremx[i].mtrlid, :inwaremx[i].plancode, :inwaremx[i].status, :inwaremx[i].qty, :inwaremx[i].fprice, :inwaremx[i].rebate, :inwaremx[i].price, :inwaremx[i].planprice, :inwaremx[i].mxdscrp, :inwaremx[i].jgprice, :inwaremx[i].relid, :inwaremx[i].relprintid, :inwaremx[i].ifrel, :inwaremx[i].woodcode, :inwaremx[i].relcode, :inwaremx[i].pcode, :inwaremx[i].sptid, :inwaremx[i].cost, :inwaremx[i].sptmtrlname, :inwaremx[i].unit, :inwaremx[i].rate, :inwaremx[i].uprice, :inwaremx[i].uqty, :inwaremx[i].bootqty, :inwaremx[i].noauditqty, :inwaremx[i].storageid, :inwaremx[i].addqty, :inwaremx[i].mxdscrp2, :inwaremx[i].mxdscrp3, :inwaremx[i].mxdscrp4) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN IF it_newbegin THEN inwareid = 0 //还原inwareid rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgmx_in_aft') > 0 THEN arg_msg = '插入收货明细操作失败,关键字分部ID、单据ID、明细ID重复' ELSE arg_msg = "插入收货明细操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF NEXT //messagebox("",it_mxbt_bef) FOR i = 1 To it_mxbt_bef INSERT INTO ow_wfjgmx_in_bef (scid, inwareid, mtrlwareid, mtrlid, status, woodcode, pcode, plancode, qty, fprice, printid, mxdscrp, rate, uqty, unit) VALUES ( :scid, :inwareid, :inwaremx_bef[i].mtrlwareid, :inwaremx_bef[i].mtrlid, :inwaremx_bef[i].status, :inwaremx_bef[i].woodcode, :inwaremx_bef[i].pcode, :inwaremx_bef[i].plancode, abs(:inwaremx_bef[i].qty), :inwaremx_bef[i].fprice, :inwaremx_bef[i].printid, :inwaremx_bef[i].mxdscrp, :inwaremx_bef[i].rate, abs(:inwaremx_bef[i].uqty), :inwaremx_bef[i].unit ) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN IF it_newbegin THEN inwareid = 0 //还原inwareid rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgmx_in_bef') > 0 THEN arg_msg = '插入发料明细操作失败,关键字分部ID、单据ID、明细ID重复' ELSE arg_msg = "插入发料明细操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF NEXT it_newbegin = False it_updatebegin = False ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; p_clearmx() ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF ELSEIF billtype = 9 THEN arg_msg = '外协盘亏单,'+ arg_msg END IF RETURN rslt end function public function integer getinfo (long arg_scid, long arg_inwareid, ref string arg_msg);//getinfo(arg_scid,arg_inwareid,arg_msg) //0 失败 1成功 Int rslt = 1,i = 1,no_mxcheck = 0,j = 1,no_mxcheck_bef = 0 jgsum_amt = 0 sum_amt = 0 IF arg_inwareid <= 0 THEN rslt = 0 arg_msg = "非法进仓单唯一码" GOTO ext END IF rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg) IF rslt = 0 THEN GOTO ext //用游标读取明细 DECLARE cur_inwaermx CURSOR FOR SELECT ow_wfjgmx_in_aft.printid, ow_wfjgmx_in_aft.mtrlid, ow_wfjgmx_in_aft.plancode, ow_wfjgmx_in_aft.status, ow_wfjgmx_in_aft.qty, ow_wfjgmx_in_aft.fprice, ow_wfjgmx_in_aft.rebate, ow_wfjgmx_in_aft.price, ow_wfjgmx_in_aft.planprice, ow_wfjgmx_in_aft.mxdscrp, u_mtrldef.mtrlcode, ow_wfjgmx_in_aft.jgprice, ow_wfjgmx_in_aft.relid, ow_wfjgmx_in_aft.relprintid, ow_wfjgmx_in_aft.ifrel, ow_wfjgmx_in_aft.woodcode, ow_wfjgmx_in_aft.pcode, ow_wfjgmx_in_aft.plancode, ow_wfjgmx_in_aft.sptid_cusid, ow_wfjgmx_in_aft.cost, ow_wfjgmx_in_aft.sptmtrlname, ow_wfjgmx_in_aft.unit, ow_wfjgmx_in_aft.uqty, ow_wfjgmx_in_aft.uprice, ow_wfjgmx_in_aft.rate, ow_wfjgmx_in_aft.bootqty, ow_wfjgmx_in_aft.noauditqty, ow_wfjgmx_in_aft.storageid, ow_wfjgmx_in_aft.addqty FROM ow_wfjgmx_in_aft,u_mtrldef,ow_wfjg_in WHERE ow_wfjg_in.inwareid = :arg_inwareid AND ow_wfjgmx_in_aft.mtrlid = u_mtrldef.mtrlid AND ow_wfjg_in.scid = :arg_scid AND ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid AND ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid USING commit_transaction; OPEN cur_inwaermx; FETCH cur_inwaermx INTO :inwaremx[i].printid,:inwaremx[i].mtrlid,:inwaremx[i].plancode, :inwaremx[i].status,:inwaremx[i].qty,:inwaremx[i].fprice, :inwaremx[i].rebate,:inwaremx[i].price,:inwaremx[i].planprice, :inwaremx[i].mxdscrp,:inwaremx[i].mtrlcode,:inwaremx[i].jgprice, :inwaremx[i].relid,:inwaremx[i].relprintid,:inwaremx[i].ifrel,:inwaremx[i].woodcode, :inwaremx[i].pcode,:inwaremx[i].plancode,:inwaremx[i].sptid, :inwaremx[i].cost,:inwaremx[i].sptmtrlname,:inwaremx[i].unit, :inwaremx[i].uqty,:inwaremx[i].uprice,:inwaremx[i].rate, :inwaremx[i].bootqty,:inwaremx[i].noauditqty,:inwaremx[i].storageid, :inwaremx[i].addqty; inwaremx[i].dxflag = dxflag DO WHILE commit_transaction.SQLCode = 0 jgsum_amt = jgsum_amt+ round( inwaremx[i].uqty * inwaremx[i].jgprice * inwaremx[i].rebate,2) //计算单据加工总金额 sum_amt = sum_amt+ round( inwaremx[i].uqty * inwaremx[i].uprice * inwaremx[i].rebate,2) //计算单据总金额 i++ FETCH cur_inwaermx INTO :inwaremx[i].printid,:inwaremx[i].mtrlid,:inwaremx[i].plancode, :inwaremx[i].status,:inwaremx[i].qty,:inwaremx[i].fprice, :inwaremx[i].rebate,:inwaremx[i].price,:inwaremx[i].planprice, :inwaremx[i].mxdscrp,:inwaremx[i].mtrlcode,:inwaremx[i].jgprice, :inwaremx[i].relid,:inwaremx[i].relprintid,:inwaremx[i].ifrel,:inwaremx[i].woodcode, :inwaremx[i].pcode,:inwaremx[i].plancode,:inwaremx[i].sptid, :inwaremx[i].cost,:inwaremx[i].sptmtrlname,:inwaremx[i].unit, :inwaremx[i].uqty,:inwaremx[i].uprice,:inwaremx[i].rate, :inwaremx[i].bootqty,:inwaremx[i].noauditqty,:inwaremx[i].storageid, :inwaremx[i].addqty; inwaremx[i].dxflag = dxflag LOOP CLOSE cur_inwaermx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM ow_wfjgmx_in_aft,u_mtrldef,ow_wfjg_in WHERE ow_wfjg_in.inwareid = :arg_inwareid AND ow_wfjgmx_in_aft.mtrlid = u_mtrldef.mtrlid AND ow_wfjg_in.scid = :arg_scid AND ow_wfjg_in.inwareid = ow_wfjgmx_in_aft.inwareid AND ow_wfjg_in.scid = ow_wfjgmx_in_aft.scid 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 //用游标读取明细 DECLARE cur_inwaermx_bef CURSOR FOR SELECT ow_wfjgmx_in_bef.mtrlwareid, ow_wfjgmx_in_bef.printid, ow_wfjgmx_in_bef.mtrlid, ow_wfjgmx_in_bef.plancode, ow_wfjgmx_in_bef.status, ow_wfjgmx_in_bef.qty, ow_wfjgmx_in_bef.fprice, ow_wfjgmx_in_bef.mxdscrp, u_mtrldef.mtrlcode, ow_wfjgmx_in_bef.woodcode, ow_wfjgmx_in_bef.pcode, ow_wfjgmx_in_bef.plancode FROM ow_wfjgmx_in_bef,u_mtrldef,ow_wfjg_in WHERE ow_wfjg_in.inwareid = :arg_inwareid AND ow_wfjgmx_in_bef.mtrlid = u_mtrldef.mtrlid AND ow_wfjg_in.scid = :arg_scid AND ow_wfjg_in.inwareid = ow_wfjgmx_in_bef.inwareid AND ow_wfjg_in.scid = ow_wfjgmx_in_bef.scid USING commit_transaction; OPEN cur_inwaermx_bef; FETCH cur_inwaermx_bef INTO :inwaremx_bef[j].mtrlwareid, :inwaremx_bef[j].printid, :inwaremx_bef[j].mtrlid,:inwaremx_bef[j].plancode, :inwaremx_bef[j].status,:inwaremx_bef[j].qty,:inwaremx_bef[j].fprice, :inwaremx_bef[j].mxdscrp, :inwaremx_bef[j].mtrlcode,:inwaremx_bef[j].woodcode, :inwaremx_bef[j].pcode,:inwaremx_bef[j].plancode; DO WHILE commit_transaction.SQLCode = 0 j++ FETCH cur_inwaermx_bef INTO :inwaremx_bef[j].mtrlwareid, :inwaremx_bef[j].printid, :inwaremx_bef[j].mtrlid,:inwaremx_bef[j].plancode, :inwaremx_bef[j].status,:inwaremx_bef[j].qty,:inwaremx_bef[j].fprice, :inwaremx_bef[j].mxdscrp, :inwaremx_bef[j].mtrlcode,:inwaremx_bef[j].woodcode, :inwaremx_bef[j].pcode,:inwaremx_bef[j].plancode; LOOP CLOSE cur_inwaermx_bef; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck_bef FROM ow_wfjgmx_in_bef,u_mtrldef,ow_wfjg_in WHERE ow_wfjg_in.inwareid = :arg_inwareid AND ow_wfjgmx_in_bef.mtrlid = u_mtrldef.mtrlid AND ow_wfjg_in.scid = :arg_scid AND ow_wfjg_in.inwareid = ow_wfjgmx_in_bef.inwareid AND ow_wfjg_in.scid = ow_wfjgmx_in_bef.scid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,外协收货单相关发外明细数量" GOTO ext END IF IF j <> (no_mxcheck_bef+1) THEN rslt = 0 arg_msg = "查询操作失败,外协收货单相关发外明细" GOTO ext END IF inwareid = arg_inwareid scid = arg_scid it_mxbt = i - 1 it_mxbt_bef = j - 1 it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN p_reset() if billtype = 4 then if thflag = 0 then arg_msg = '仓库外协收货单,'+ arg_msg else arg_msg = '仓库外协返工单,'+ arg_msg end if elseif billtype = 5 then if thflag = 0 then arg_msg = '车间外协收货单,'+ arg_msg else arg_msg = '车间外协返工单,'+ arg_msg end if end if RETURN rslt end function public function integer auditing (boolean arg_ifcommit, ref string arg_msg); Long rslt = 1,cnt = 0,i Dec new_noallocqty = 0 Long ls_newid decimal ls_qty uo_order_wfjg uo_wfjg uo_wfjg = CREATE uo_order_wfjg uo_wfjg.commit_transaction = commit_transaction uo_spt_price uo_sptprice uo_sptprice = CREATE uo_spt_price IF inwareid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF it_newbegin OR it_updatebegin THEN rslt = 0 arg_msg = "编辑状态下不可以执行审核" GOTO ext END IF IF flag = 1 THEN rslt = 0 arg_msg = "单据已经审核" GOTO ext END IF UPDATE ow_wfjg_in SET auditingrep = :publ_operator, auditingdate = getdate(), flag = 1 WHERE ow_wfjg_in.inwareid = :inwareid AND flag = 0 AND scid = :scid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "审核单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在审核,请稍后查询。" GOTO ext END IF IF billtype = 4 THEN IF p_create_inware( FALSE, arg_msg ) = 0 THEN rslt = 0 GOTO ext END IF END IF FOR i = 1 TO it_mxbt_bef Decimal ld_ref_cost IF p_update_cost(inwaremx_bef[i].mtrlwareid,inwaremx_bef[i].mtrlcode,& inwaremx_bef[i].printid,ld_ref_cost,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF IF thflag = 1 THEN //DXY ls_qty = 0 - abs(inwaremx_bef[i].qty) ELSE ls_qty = inwaremx_bef[i].qty END IF IF p_update_mtrlware( inwaremx_bef[i].mtrlwareid,& inwaremx_bef[i].mtrlid,& inwaremx_bef[i].mtrlcode,& inwaremx_bef[i].plancode,& inwaremx_bef[i].status,& ls_qty,& ld_ref_cost,& sptid,& inwaremx_bef[i].woodcode,& inwaremx_bef[i].pcode,& arg_msg) = 0 THEN rslt = 0 GOTO ext END IF // IF f_update_mtrlware_spt_in(billtype,& // thflag,& // inwaremx_bef[i].mtrlwareid,& // inwaremx_bef[i].mtrlid,& // inwaremx_bef[i].mtrlcode,& // inwaremx_bef[i].plancode,& // inwaremx_bef[i].status,& // inwaremx_bef[i].qty,& // ld_ref_cost,& // sptid,& // inwaremx_bef[i].woodcode,& // inwaremx_bef[i].pcode,& // arg_msg,FALSE,commit_transaction) = 0 THEN // rslt = 0 // GOTO ext // END IF NEXT FOR i = 1 TO it_mxbt IF inwaremx[i].relid > 0 THEN IF uo_wfjg.addmxcmpl(scid,inwaremx[i].relid,inwaremx[i].mtrlid,0,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwaremx[i].qty,arg_msg,FALSE,inwaremx[i].relprintid) <> 1 THEN rslt = 0 GOTO ext END IF IF uo_wfjg.trycmplbuytask(scid,inwaremx[i].relid,arg_msg,FALSE) = 0 THEN rslt = 0 GOTO ext END IF END IF IF uo_sptprice.uf_update_sptprice(thflag,sptid,inwaremx[i].mtrlid,inwaremx[i].unit,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,& inwareid,moneyid,inwaremx[i].jgprice,inwaremx[i].rebate,inwaremx[i].rate,inwaremx[i].price,indate,inwarecode,0,inwaremx[i].mxdscrp,inwaremx[i].printid,4,FALSE,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF NEXT flag = 1 ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; END IF IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF DESTROY uo_wfjg DESTROY uo_sptprice RETURN rslt end function public function integer del (long arg_scid, long arg_inwareid, ref string arg_msg, boolean arg_ifcommit);//del(arg_scid,arg_inwareid,arg_msg) //如果单据还没有审核删除单据极其明细 //0 fail, 1 success Int rslt = 1 IF arg_inwareid = 0 THEN rslt = 0 arg_msg = "没有删除对象,操作取消" GOTO ext END IF rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg) IF rslt = 0 THEN GOTO ext IF flag = 1 THEN rslt = 0 arg_msg = "单据已经审核,不可以删除" GOTO ext END IF DELETE FROM ow_wfjgmx_in_aft WHERE ow_wfjgmx_in_aft.inwareid = :arg_inwareid And ow_wfjgmx_in_aft.scid = :arg_scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除外协收货单明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF DELETE FROM ow_wfjgmx_in_bef WHERE ow_wfjgmx_in_bef.inwareid = :arg_inwareid And ow_wfjgmx_in_bef.scid = :arg_scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除外协收货单相关发外明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF DELETE FROM ow_wfjg_in WHERE ow_wfjg_in.inwareid = :arg_inwareid And scid = :arg_scid 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 rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF p_reset() IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF RETURN rslt end function public function integer add_dscrp (long arg_scid, long arg_inwareid, string arg_newdescppart, ref string arg_msg);//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 rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg) IF rslt = 0 THEN GOTO ext IF flag = 0 THEN rslt = 0 arg_msg = "非审核状态下不可用" GOTO ext END IF UPDATE ow_wfjg_in SET dscrp = dscrp+' '+:arg_newdescppart WHERE ow_wfjg_in.inwareid = :inwareid And scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "添加单据备注操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF dscrp = dscrp+' '+arg_newdescppart ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSE COMMIT Using commit_transaction; END IF IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF Return (rslt) end function public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg); Long rslt = 1,cnt = 0,i Dec new_noallocqty = 0 Long ls_newid DateTime null_dt decimal ls_qty uo_order_wfjg uo_wfjg uo_wfjg = Create uo_order_wfjg uo_wfjg.commit_transaction = commit_transaction uo_spt_price uo_sptprice uo_sptprice = Create uo_spt_price SetNull(null_dt) IF inwareid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF it_newbegin Or it_updatebegin THEN rslt = 0 arg_msg = "编辑状态下不可以执行审核" GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "单据还未审核" GOTO ext END IF IF balcflag = 1 THEN rslt = 0 arg_msg = "单据已经结存,不能撤审" GOTO ext END IF UPDATE ow_wfjg_in SET auditingrep = '', auditingdate = :null_dt, flag = 0 WHERE ow_wfjg_in.inwareid = :inwareid And flag = 1 And scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "审核单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在撤审,请稍后查询。" GOTO ext END IF IF billtype = 4 THEN IF p_destroy_inware( False, arg_msg ) = 0 THEN rslt = 0 GOTO ext END IF END IF FOR i = 1 To it_mxbt_bef IF thflag = 1 THEN //DXY ls_qty = abs(inwaremx_bef[i].qty) ELSE ls_qty = 0 - inwaremx_bef[i].qty END IF IF p_update_mtrlware( inwaremx_bef[i].mtrlwareid,& inwaremx_bef[i].mtrlid,& inwaremx_bef[i].mtrlcode,& inwaremx_bef[i].plancode,& inwaremx_bef[i].status,& ls_qty,& inwaremx_bef[i].fprice,& sptid,& inwaremx_bef[i].woodcode,& inwaremx_bef[i].pcode,& arg_msg) = 0 THEN rslt = 0 GOTO ext END IF // IF f_update_mtrlware_spt_in(billtype,& // thflag,& // inwaremx_bef[i].mtrlwareid,& // inwaremx_bef[i].mtrlid,& // inwaremx_bef[i].mtrlcode,& // inwaremx_bef[i].plancode,& // inwaremx_bef[i].status,& // 0 - inwaremx_bef[i].qty,& // inwaremx_bef[i].fprice,& // sptid,& // inwaremx_bef[i].woodcode,& // inwaremx_bef[i].pcode,& // arg_msg,false,commit_transaction) = 0 THEN // rslt = 0 // GOTO ext // END IF NEXT FOR i = 1 To it_mxbt //更新合同完成数量 IF inwaremx[i].relid > 0 THEN IF uo_wfjg.addmxcmpl(scid,inwaremx[i].relid,inwaremx[i].mtrlid,0,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode, 0 - inwaremx[i].qty,arg_msg,False,inwaremx[i].relprintid) <> 1 THEN rslt = 0 GOTO ext END IF IF uo_wfjg.trycmplbuytask(scid,inwaremx[i].relid,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF IF uo_sptprice.uf_del_sptprice(thflag,sptid,inwaremx[i].mtrlid,inwaremx[i].unit,inwaremx[i].status,inwaremx[i].woodcode,inwaremx[i].pcode,inwareid,inwaremx[i].printid,moneyid,False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF NEXT flag = 0 ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF Destroy uo_wfjg Destroy uo_sptprice RETURN rslt end function public function integer p_clearmx ();//int p_clearmx() //清除明细 it_mxbt=0 it_mxbt_bef=0 return 1 end function public function integer p_getinfo (long arg_scid, long arg_inwareid, ref string arg_msg);//p_getinfo(arg_scid,arg_inwareid,arg_msg) //0 失败 1成功 Int rslt = 1 IF arg_inwareid <= 0 THEN rslt = 0 arG_MSG = "非法进仓单唯一码" GOTO ext END IF SELECT ow_wfjg_in.inwarecode, ow_wfjg_in.billtype, ow_wfjg_in.relid, ow_wfjg_in.storageid, ow_wfjg_in.indate, ow_wfjg_in.inrep, ow_wfjg_in.part, ow_wfjg_in.sptid, ow_wfjg_in.sptname, ow_wfjg_in.dscrp, ow_wfjg_in.thflag, ow_wfjg_in.secflag, ow_wfjg_in.dxflag, ow_wfjg_in.flag, ow_wfjg_in.balcflag, ow_wfjg_in.otheramt, ow_wfjg_in.relint_1, ow_wfjg_in.relint_2, ow_wfjg_in.relint_3, ow_wfjg_in.relstr_1, ow_wfjg_in.relstr_2, ow_wfjg_in.relstr_3 INTO :inwarecode, :billtype, :relid, :storageid, :indate, :inrep, :part, :sptid, :sptname, :dscrp, :thflag, :secflag, :dxflag, :flag, :balcflag, :otheramt, :relint_1, :relint_2, :relint_3, :relstr_1, :relstr_2, :relstr_3 FROM ow_wfjg_in WHERE ow_wfjg_in.inwareid = :arg_inwareid AND scid = :arg_scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN arG_MSG = '查询进仓单操作失败,查询数据返回值多于一个' ELSE arG_MSG = "查询操作失败(错误进仓单唯一码)" END IF GOTO ext END IF //币种, 默认本位币 SELECT moneyid INTO :moneyid FROM cw_currency WHERE native = 1 Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arG_MSG = '查询本位币失败! '+commit_transaction.SQLErrText GOTO ext END IF inwareid = arg_inwareid scid = arg_scid ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer p_reset ();//int p_reset() //清除对象及其明细 scid=0 inwareid=0 inwarecode='' billtype=0 opemp='' modemp='' auditingrep='' secauditingrep = '' secflag = 0 flag=0 relid=0 storageid=0 inrep='' part='' dscrp='' sptid=0 sptname='' Dxflag=0 thflag=0 otheramt=0 relint_1=0 relint_2=0 relint_3=0 relstr_1='' relstr_2='' relstr_3='' sum_amt = 0 jgsum_amt = 0 it_newbegin=false it_updatebegin=false //清除明细 p_clearmx() return 1 end function public function integer p_create_inware (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1,i Long rst_inwareid,o_scid datastore ds_wfjginware_mx ds_wfjginware_mx = CREATE datastore ds_wfjginware_mx.DataObject = "dw_wfjgmx_in_aft_edit" ds_wfjginware_mx.SetTransObject(sqlca) ds_wfjginware_mx.Retrieve(scid,inwareid,sys_option_2unit) ds_wfjginware_mx.SetSort("ow_wfjgmx_in_aft_storageid A") ds_wfjginware_mx.Sort() Long ls_rowcount,ll_storageid ls_rowcount = ds_wfjginware_mx.RowCount() IF ls_rowcount <> it_mxbt THEN rslt = 0 arg_msg = "单据明细数量错误" GOTO ext END IF FOR i = 1 TO it_mxbt uo_inware uo_in uo_in = CREATE uo_inware uo_in.commit_transaction = commit_transaction uo_in.if_getid_ture = FALSE //2.原事务生成进仓单 ll_storageid = ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_storageid[i] SELECT scid INTO :o_scid FROM u_storage Where storageid = :ll_storageid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询进仓库所属分部资料失败' rslt = 0 GOTO ext END IF IF uo_in.newbegin(scid,4,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF uo_in.relid = inwareid uo_in.relint_2 = relint_2 uo_in.relint_1 = relint_1 uo_in.sptid = sptid uo_in.inrep = inrep uo_in.indate = indate uo_in.part = inwarecode uo_in.dscrp = dscrp uo_in.storageid = ll_storageid DO While (ll_storageid = ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_storageid[i]) datetime ld_inworkdate setnull(ld_inworkdate) //ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_printid[i] 这个不能随意改,关系到生成的进仓单的修改单价功能 //用库存单位进仓 IF uo_in.acceptmx(ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_printid[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_mtrlid[i],& ds_wfjginware_mx.Object.u_mtrldef_mtrlcode[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_plancode[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_status[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_qty[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_addqty[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_fprice[i] + ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_uprice[i] * ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_rebate[i],& 1,& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_mxdscrp[i],& arg_msg,& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_uprice[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_relid[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_relprintid[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_ifrel[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_woodcode[i],& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_pcode[i],& '',& ds_wfjginware_mx.Object.ow_wfjgmx_in_aft_sptid_cusid[i],& ds_wfjginware_mx.Object.u_mtrldef_unit[i],& 1,'','',ld_inworkdate,0) = 0 THEN rslt = 0 GOTO ext END IF i++ IF i > it_mxbt THEN EXIT LOOP IF uo_in.Save(FALSE,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF rst_inwareid = uo_in.inwareid //4.原事务审核进仓单 IF uo_in.getinfo(o_scid,rst_inwareid,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 DESTROY uo_in i = i - 1 NEXT ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT USING commit_transaction; END IF RETURN rslt end function public function integer p_destroy_inware (boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i Int rslt = 1 Long chc Long in_out //Long rst_outwareid[],out_i = 1 //出仓出仓id Long rst_inwareid[],in_i = 1 //出仓出仓id Long s_scid Long o_scid Long lay_storageid[],ll_storageid DateTime null_dt SetNull(null_dt) uo_inware uo_in uo_in = Create uo_inware uo_in.commit_transaction = sqlca uo_in.if_getid_ture = False IF inwareid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF Boolean lb_f = False Long j,k,ch //统计仓库数量,确定出或出仓单数 FOR i = 1 To it_mxbt FOR j = 1 To UpperBound(lay_storageid) IF lay_storageid[j] = inwaremx[i].storageid THEN lb_f = True NEXT IF lb_f = False THEN ch++ lay_storageid[ch] = inwaremx[i].storageid END IF lb_f = False NEXT IF UpperBound(lay_storageid) = 0 THEN rslt = 0 arg_msg = '查询相关进仓单据失败' GOTO ext END IF //2.查询出仓单相关的入仓单,撤审,删除 FOR k = 1 To UpperBound(lay_storageid) ll_storageid = lay_storageid[k] SELECT scid INTO :o_scid FROM u_storage Where storageid = :ll_storageid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询仓库所属分部资料失败' rslt = 0 GOTO ext END IF DECLARE cur_in_2 CURSOR FOR SELECT inwareid FROM u_inware WHERE scid = :o_scid AND relid = :inwareid AND storageid = :ll_storageid And billtype = 4 Using commit_transaction; OPEN cur_in_2; FETCH cur_in_2 Into :rst_inwareid[in_i]; DO WHILE commit_transaction.SQLCode = 0 in_i++ FETCH cur_in_2 Into :rst_inwareid[in_i]; LOOP in_i = in_i - 1 CLOSE cur_in_2; IF in_i = 0 THEN arg_msg = '查询该外协单相关进仓单失败' rslt = 0 GOTO ext END IF FOR in_out = 1 To in_i //撤审出仓单,再删除 IF uo_in.getinfo(o_scid,rst_inwareid[in_out],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(o_scid,rst_inwareid[in_out],arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF NEXT NEXT ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF arg_ifcommit And rslt = 1 THEN COMMIT Using commit_transaction; END IF Destroy uo_in RETURN rslt end function public function integer secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i String ls_about,ls_dscrp uo_mustpay uo_pay uo_pay = Create uo_mustpay Decimal ld_payamt = 0,ld_mstpayamt = 0 IF inwareid = 0 THEN rslt = 0 arg_msg = "没有审核对象" GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = "单据还没有经过仓库审核" GOTO ext END IF IF secflag = 1 THEN rslt = 0 arg_msg = "单据已经过财务审核" GOTO ext END IF Int li_btype Long ll_accountsid SELECT btype,accountsid INTO :li_btype,:ll_accountsid FROM cw_banktype Where banktypeid = :relint_1 Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN arg_msg = '查询结算方式类型失败,查询数据返回值多于一个' ELSE arg_msg = '查询结算方式类型失败(错误结算方式唯一码)' END IF GOTO ext END IF SELECT count(*) INTO :cnt FROM u_user Where username = :publ_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 UPDATE ow_wfjg_in SET secauditingrep = :publ_operator, secauditingdate = getdate(), secflag = 1 WHERE ow_wfjg_in.inwareid = :inwareid And flag = 1 And secflag = 0 And scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "财务审核单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在财务审核,请稍后查询。" GOTO ext END IF IF jgsum_amt <> 0 THEN ld_mstpayamt = jgsum_amt - otheramt IF li_btype = 1 THEN ld_payamt = ld_mstpayamt ELSE ld_payamt = 0 END IF Long ll_dft_itemid IF thflag = 1 THEN ls_about = inwarecode + "退货款,相关号:"+part IF f_get_itemid(5,ll_dft_itemid, arg_msg) = 0 THEN // 采购外协退货项目 rslt = 0 GOTO ext END IF // SELECT itemid INTO :ll_dft_itemid // FROM u_itemdef // Where dfttype = 5 Using commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN // arg_msg = '查询默认采购外协付款项目资料失败,查询数据返回值多于一个' // ELSE // arg_msg = '查询默认采购外协付款项目资料失败 ' // END IF // rslt = 0 // GOTO ext // END IF ELSE ls_about = inwarecode + "应付款,相关号:"+part IF f_get_itemid(2,ll_dft_itemid, arg_msg) = 0 THEN //采购外协付款项目 rslt = 0 GOTO ext END IF // SELECT itemid INTO :ll_dft_itemid // FROM u_itemdef // Where dfttype = 2 Using commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN // arg_msg = '查询默认采购外协退货项目资料失败,查询数据返回值多于一个' // ELSE // arg_msg = '查询默认采购外协退货项目资料失败' // END IF // rslt = 0 // GOTO ext // END IF END IF ls_dscrp = ls_about Long ll_moneyid DateTime plandate SetNull(plandate) SELECT moneyid Into :ll_moneyid From cw_currency Where native = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询本位币失败! '+sqlca.SQLErrText GOTO ext END IF IF uo_pay.add_payrec (scid,sptid,indate,inrep,ld_mstpayamt,ld_mstpayamt,ld_payamt,ls_about,& inwarecode,relint_1,1,publ_operator,inwareid,0,arg_msg,False,plandate,ll_accountsid,ll_dft_itemid,ll_moneyid,part) = 0 THEN rslt = 0 GOTO ext END IF UPDATE ow_wfjg_in SET relint_2 = :uo_pay.ref_payid WHERE ow_wfjg_in.inwareid = :inwareid AND scid = :scid And flag = 1 Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '更新外协单相关应收帐ID失败' rslt = 0 GOTO ext END IF END IF secflag = 1 ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF Destroy uo_pay IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF RETURN rslt end function public function integer c_secauditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i DateTime null_dt uo_mustpay uo_pay uo_pay = Create uo_mustpay String ls_mtrlname SetNull(null_dt) IF inwareid = 0 THEN rslt = 0 arg_msg = "没有撤审对象" GOTO ext END IF IF it_newbegin Or it_updatebegin THEN rslt = 0 arg_msg = "编辑状态下不可以执行撤审" GOTO ext END IF IF secflag = 0 THEN rslt = 0 arg_msg = "该单据财务未审,不能进行财务撤审" GOTO ext END IF SELECT count(*) INTO :cnt FROM u_user Where username = :publ_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 UPDATE ow_wfjg_in SET secauditingrep = '', secauditingdate = :null_dt, secflag = 0,relint_3 = 0 WHERE ow_wfjg_in.inwareid = :inwareid And secflag = 1 And scid = :scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "财务审核单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext ELSEIF commit_transaction.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在财务审核,请稍后查询。" GOTO ext END IF IF jgsum_amt <> 0 THEN IF uo_pay.del_payrec(scid,1,relint_2,sptid,arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF END IF secflag = 0 ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF Destroy uo_pay IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF RETURN rslt end function public function integer p_update_mtrlware (long arg_mtrlwareid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_qty, decimal arg_price, long arg_sptid, string arg_woodcode, string arg_pcode, ref string arg_msg);//==================================================================== // 事件: uo_inware_wfjg.p_update_mtrlware() //-------------------------------------------------------------------- // 描述: //-------------------------------------------------------------------- // 参数: // value long arg_mtrlwareid // value long arg_mtrlid // value string arg_mtrlcode // value string arg_plancode // value string arg_status // value decimal arg_qty // value decimal arg_price // value long arg_sptid // value string arg_woodcode // value string arg_pcode // reference string arg_msg //-------------------------------------------------------------------- // 返回: intege //-------------------------------------------------------------------- // 作者: LHD 日期: 2013年08月17日 //-------------------------------------------------------------------- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved. //-------------------------------------------------------------------- // 修改历史: // //==================================================================== //外协商库存减少 Int rslt = 1 Long ls_newid String or_err_part Decimal ld_cost //-------------------------------------------更新库存 ld_cost = arg_price UPDATE ow_wfjgware SET noallocqty = noallocqty - :arg_qty , wareamt = case when :sys_option_wfjgware_nocost = 1 then 0 else (case noallocqty + :arg_qty when 0 then 0 else (case when (wareamt - round(:arg_qty * :arg_price,2)) * (noallocqty - :arg_qty) < 0 then 0 - (wareamt - round(:arg_qty * :arg_price,2)) else wareamt - round(:arg_qty * :arg_price,2) END) END) END, cost = case when :sys_option_wfjgware_nocost = 1 then 0 else (case noallocqty - :arg_qty when 0 then cost else (case when round((wareamt - round(:arg_qty * :arg_price,2))/(noallocqty - :arg_qty),10) < 0 then :ld_cost else round((wareamt - round(:arg_qty * :arg_price,2))/(noallocqty - :arg_qty),10) END) END) END, newprice = :arg_price, waredate = getdate(), indate = case when :arg_qty < 0 then getdate() else indate END, outdate = case when :arg_qty > 0 then getdate() else outdate END WHERE ( mtrlwareid = :arg_mtrlwareid ) AND ( scid = :scid ) Using commit_transaction ; IF commit_transaction.SQLCode = 0 THEN IF commit_transaction.SQLNRows = 0 THEN ///////////////////////// // ls_newid = f_sys_scidentity(scid,"ow_wfjgware","mtrlwareid",arg_msg,False,commit_transaction) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF ///////////////////////// // INSERT INTO ow_wfjgware ( scid, sptid, mtrlwareid, mtrlid, plancode, status, woodcode, pcode, noallocqty, allocqty, wareamt, cost, indate) VALUES ( :scid, :arg_sptid, :ls_newid, :arg_mtrlid, :arg_plancode, :arg_status, :arg_woodcode, :arg_pcode, :arg_qty, 0, case when :sys_option_wfjgware_nocost = 1 then 0 else round(:arg_price * :arg_qty,2) END, case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_cost END, getdate()) Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgware') > 0 THEN arg_msg = '插入外协商库存操作失败,关键字分部ID、库存ID重复' ELSE arg_msg = "物料["+arg_mtrlcode+"]外协商库存建立操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF END IF ELSE rslt = 0 or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement' IF commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 THEN arg_msg = "物料["+arg_mtrlcode+"]同外协商内同批号没有足够的库存支持冲减" ELSE arg_msg = "物料["+arg_mtrlcode+"]外协商库存更新操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF //-----------------------------------更新结存 Decimal ld_balcqty,ld_balcamt Decimal ld_outqty,ld_outamt Decimal ld_reoutqty,ld_reoutamt Decimal ld_pypkqty,ld_pypkamt Decimal ld_wasteqty,ld_wasteamt ld_balcqty = arg_qty ld_balcamt = Round(arg_qty * arg_price,2) CHOOSE CASE billtype CASE 4,5 IF thflag = 0 THEN ld_outqty = arg_qty ld_outamt = Round(arg_qty * arg_price,2) ld_reoutqty = 0 ld_reoutamt = 0 ld_pypkqty = 0 ld_pypkamt = 0 ld_wasteqty = 0 ld_wasteamt = 0 ELSE ld_outqty = 0 ld_outamt = 0 ld_reoutqty = 0 - arg_qty ld_reoutamt = 0 - Round(arg_qty * arg_price,2) ld_pypkqty = 0 ld_pypkamt = 0 ld_wasteqty = 0 ld_wasteamt = 0 END IF CASE 9 ld_outqty = 0 ld_outamt = 0 ld_reoutqty = 0 ld_reoutamt = 0 ld_pypkqty = 0 - arg_qty ld_pypkamt = 0 - Round(arg_qty * arg_price,2) ld_wasteqty = 0 ld_wasteamt = 0 CASE 10 ld_outqty = 0 ld_outamt = 0 ld_reoutqty = 0 ld_reoutamt = 0 ld_pypkqty = 0 ld_pypkamt = 0 ld_wasteqty = arg_qty ld_wasteamt = Round(arg_qty * arg_price,2) END CHOOSE UPDATE ow_wfjgbalc SET balcqty = balcqty - :ld_balcqty, balcamt = case when :sys_option_wfjgware_nocost = 1 then 0 else balcamt - :ld_balcamt end, outqty = outqty + :ld_outqty , outamt = case when :sys_option_wfjgware_nocost = 1 then 0 else outamt + :ld_outamt end, reoutqty = reoutqty + :ld_reoutqty , reoutamt = case when :sys_option_wfjgware_nocost = 1 then 0 else reoutamt + :ld_reoutamt end, pypkqty = pypkqty + :ld_pypkqty, pypkamt = case when :sys_option_wfjgware_nocost = 1 then 0 else pypkamt + :ld_pypkamt end, wasteqty = wasteqty + :ld_wasteqty, wasteamt = case when :sys_option_wfjgware_nocost = 1 then 0 else wasteamt + :ld_wasteamt end WHERE ( mtrlid = :arg_mtrlid ) AND ( sptid = :arg_sptid ) AND ( balcdateint = 0) AND ( status = :arg_status ) AND ( woodcode = :arg_woodcode ) AND ( pcode = :arg_pcode ) Using commit_transaction ; IF commit_transaction.SQLCode = 0 THEN IF commit_transaction.SQLNRows = 0 THEN INSERT INTO ow_wfjgbalc ( balcdateint, mtrlid, sptid, bgqty, bgamt, inqty, inamt, outqty, outamt, reoutqty, reoutamt, thqty, thamt, balcqty, balcamt, wasteqty, wasteamt, pypkqty, pypkamt, status, woodcode, pcode, scid) VALUES ( 0, :arg_mtrlid, :arg_sptid, 0, 0, 0, 0, :ld_outqty, case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_outamt end, :ld_reoutqty, case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_reoutamt end, 0, 0, 0 - :ld_balcqty, case when :sys_option_wfjgware_nocost = 1 then 0 else 0 - :ld_balcamt end, :ld_wasteqty, case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_wasteamt end, :ld_pypkqty, case when :sys_option_wfjgware_nocost = 1 then 0 else :ld_pypkamt end, :arg_status, :arg_woodcode, :arg_pcode, :scid) Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgbalc') > 0 THEN arg_msg = '插入外协商结存操作失败,关键字重复' ELSE arg_msg = "物料["+arg_mtrlcode+"]外协商结存建立操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF END IF ELSE rslt = 0 or_err_part = 'column insert or update conflicts with a rule imposed by a previous create rule statement' IF commit_transaction.SQLCode = 513 Or Pos(Lower(commit_transaction.SQLErrText),or_err_part) > 0 THEN arg_msg = "物料["+arg_mtrlcode+"]同外协商内同批号没有足够的结存支持冲减" ELSE arg_msg = "物料["+arg_mtrlcode+"]外协商结存更新操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; END IF RETURN rslt end function public function integer newbegin (long arg_scid, integer arg_billtype, ref string arg_msg);//==================================================================== // Function: newbegin(long arg_scid,int arg_billtype,ref string arg_msg) //-------------------------------------------------------------------- // Description: 从置对象,设定业务类型,准备建立新进仓单 //-------------------------------------------------------------------- // Arguments: // value long arg_scid // value integer arg_billtype // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.12 //-------------------------------------------------------------------- // Modify History: // //==================================================================== Int rslt = 1 IF arg_scid < 0 THEN arg_msg = '请选择分部' rslt = 0 GOTO ext END IF p_reset() scid = arg_scid billtype = arg_billtype it_newbegin = True it_updatebegin = False ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer updatebegin (long arg_scid, long arg_inwareid, integer arg_billtype, ref string arg_msg);//==================================================================== // Function: updatebegin(arg_scid,arg_inwareid,arg_billtype,arg_msg) //-------------------------------------------------------------------- // Description: 从置对象,设定业务类型与关联ID,准备更新进仓单 //-------------------------------------------------------------------- // Arguments: // value long arg_scid // value long arg_inwareid // value integer arg_billtype // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.12 //-------------------------------------------------------------------- // Modify History: // //==================================================================== Long rslt = 1 IF arg_scid < 0 THEN arg_msg = '请选择分部' rslt = 0 GOTO ext END IF IF arg_inwareid <= 0 THEN rslt = 0 GOTO ext END IF rslt = p_getinfo(arg_scid,arg_inwareid,arg_msg) IF rslt = 0 THEN GOTO ext IF flag = 1 THEN rslt = 0 arg_msg = '单据已经审核,不可以修改' GOTO ext END IF inwareid = arg_inwareid scid = arg_scid billtype = arg_billtype it_newbegin = False it_updatebegin = True p_clearmx() //清除明细 ext: IF rslt = 0 THEN p_reset() IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF RETURN rslt end function public function integer p_update_cost (long arg_mtrlwareid, string arg_mtrlcode, long arg_printid, ref decimal arg_ref_cost, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Decimal ld_cost //IF sys_option_wfjgth_wareamt = 0 THEN SELECT cost INTO :ld_cost FROM ow_wfjgware WHERE sptid = :sptid And mtrlwareid = :arg_mtrlwareid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询'+arg_mtrlcode+'供应商库存成本价失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF //ELSE // SELECT price INTO :ld_cost // FROM ow_wfjgmx_in_bef // WHERE inwareid = :inwareid // And printid = :arg_printid Using commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // arg_msg = '查询'+arg_mtrlcode+'退货单价价失败,'+commit_transaction.SQLErrText // rslt = 0 // GOTO ext // END IF //END IF UPDATE ow_wfjgmx_in_bef SET fprice = :ld_cost WHERE inwareid = :inwareid And printid = :arg_printid; IF sqlca.SQLCode <> 0 THEN arg_msg = '更新'+arg_mtrlcode+'成本价失败,'+sqlca.SQLErrText rslt = 0 GOTO ext END IF arg_ref_cost = ld_cost ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer acceptmx_bef (long arg_mtrlwareid, decimal arg_qty, decimal arg_price, string arg_mxdscrp, long arg_printid, ref string arg_msg, string arg_unit, decimal arg_uqty, decimal arg_rate);Long rslt = 1,cnt = 0,LS_i Long i_mtrlid,i_sptid String i_plancode,i_mtrlcode,i_status,i_woodcode,i_pcode Double i_cost,i_newprice Decimal i_allouseqty String ls_relcode Decimal ld_rate = 1 IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0 IF IsNull(arg_printid) THEN arg_printid = 0 IF IsNull(arg_qty) THEN arg_qty = 0 IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' //messagebox("",arg_mtrlwareid) IF arg_mtrlwareid = 0 Or arg_qty = 0 THEN rslt = 1 GOTO ext END IF SELECT ow_wfjgware.mtrlid, ow_wfjgware.sptid, ow_wfjgware.plancode, ow_wfjgware.status, ow_wfjgware.cost, u_mtrldef.mtrlcode, ow_wfjgware.woodcode, ow_wfjgware.pcode, ow_wfjgware.noallocqty INTO :i_mtrlid, :i_sptid, :i_plancode, :i_status, :i_cost, :i_mtrlcode, :i_woodcode, :i_pcode, :i_allouseqty FROM ow_wfjgware ,u_mtrldef WHERE ( ow_wfjgware.mtrlwareid = :arg_mtrlwareid ) AND ( ow_wfjgware.mtrlid = u_mtrldef.mtrlid ) And ( ow_wfjgware.scid = :scid ) Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'more than') > 0 THEN arg_msg = '库存查询操作失败,查询数据返回值多于一个' ELSE arg_msg = "查询操作失败(错误库存编号唯一码)" END IF GOTO ext END IF IF IsNull(i_cost) THEN i_cost = 0 IF IsNull(i_plancode) THEN i_plancode = '' IF IsNull(i_status) THEN i_status = '' IF IsNull(i_mtrlid) THEN i_mtrlid = 0 IF IsNull(i_sptid) THEN i_sptid = 0 IF IsNull(i_woodcode) THEN i_woodcode = '' IF IsNull(i_pcode) THEN i_pcode = '' IF sptid <> i_sptid THEN arg_msg = "物料:" + String(i_mtrlcode) + '所属加工商资料不对应' rslt = 0 GOTO ext END IF IF i_cost < 0 THEN //检查进仓价 rslt = 0 arg_msg = "物料:" + String(i_mtrlcode)+" 单价错误" GOTO ext END IF IF sys_option_2unit = 0 THEN arg_uqty = arg_qty END IF //写入内容 it_mxbt_bef++ inwaremx_bef[it_mxbt_bef].mtrlwareid = arg_mtrlwareid inwaremx_bef[it_mxbt_bef].mtrlid = i_mtrlid inwaremx_bef[it_mxbt_bef].status = i_status inwaremx_bef[it_mxbt_bef].qty = arg_qty inwaremx_bef[it_mxbt_bef].sptid = i_sptid inwaremx_bef[it_mxbt_bef].cost = i_cost inwaremx_bef[it_mxbt_bef].costamt = Round(i_cost * arg_qty,2) inwaremx_bef[it_mxbt_bef].plancode = i_plancode inwaremx_bef[it_mxbt_bef].mtrlcode = i_mtrlcode inwaremx_bef[it_mxbt_bef].mxdscrp = arg_mxdscrp inwaremx_bef[it_mxbt_bef].printid = arg_printid inwaremx_bef[it_mxbt_bef].woodcode = i_woodcode inwaremx_bef[it_mxbt_bef].pcode = i_pcode //messagebox("",it_mxbt_bef) IF thflag = 0 THEN inwaremx_bef[it_mxbt_bef].fprice = i_cost ELSE inwaremx_bef[it_mxbt_bef].fprice = arg_price END IF IF sys_option_2unit = 0 THEN IF arg_rate = 0 THEN arg_rate = arg_qty/arg_uqty ELSE arg_uqty = arg_qty/arg_rate END IF END IF IF arg_uqty <> 0 THEN inwaremx_bef[it_mxbt_bef].rate = arg_qty / arg_uqty ELSE inwaremx_bef[it_mxbt_bef].rate = 0 END IF inwaremx_bef[it_mxbt_bef].unit = arg_unit inwaremx_bef[it_mxbt_bef].uqty = arg_uqty ext: IF rslt = 0 THEN p_clearmx() IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF RETURN rslt end function public function integer acceptmx_bef_th (long arg_mtrlwareid, decimal arg_qty, decimal arg_price, string arg_mxdscrp, long arg_printid, ref string arg_msg, string arg_unit, decimal arg_uqty, decimal arg_rate, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, string arg_woodcode, string arg_pcode);Long rslt = 1,cnt = 0,LS_i Long i_mtrlid,i_sptid String i_plancode,i_mtrlcode,i_status,i_woodcode,i_pcode Double i_cost,i_newprice Decimal i_allouseqty String ls_relcode Decimal ld_rate = 1 Long ls_newid IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0 IF IsNull(arg_printid) THEN arg_printid = 0 IF IsNull(arg_qty) THEN arg_qty = 0 IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' SELECT ow_wfjgware.mtrlid, ow_wfjgware.sptid, ow_wfjgware.plancode, ow_wfjgware.status, ow_wfjgware.cost, u_mtrldef.mtrlcode, ow_wfjgware.woodcode, ow_wfjgware.pcode, ow_wfjgware.noallocqty INTO :i_mtrlid, :i_sptid, :i_plancode, :i_status, :i_cost, :i_mtrlcode, :i_woodcode, :i_pcode, :i_allouseqty FROM ow_wfjgware ,u_mtrldef WHERE ( ow_wfjgware.mtrlwareid = :arg_mtrlwareid ) AND ( ow_wfjgware.mtrlid = u_mtrldef.mtrlid ) And ( ow_wfjgware.scid = :scid ) Using commit_transaction; IF commit_transaction.SQLCode = 0 THEN IF commit_transaction.SQLNRows = 0 THEN END IF //ELSEIF commit_transaction.SQLCode = 100 THEN // ls_newid = f_sys_scidentity(0,"ow_wfjgware","mtrlwareid",arg_msg,False,commit_transaction) // IF ls_newid <= 0 THEN // rslt = 0 // GOTO ext // END IF // ///////////////////////// // // INSERT INTO ow_wfjgware // ( // scid, // mtrlwareid, // mtrlid, // plancode, // status, // noallocqty, // allocqty, // wareamt, // sptid, // woodcode, // pcode, // cost, // indate) // VALUES ( // :scid, // :ls_newid, // :arg_mtrlid, // :arg_plancode, // :arg_status, // 0, // 0, // 0, // :sptid, // :arg_woodcode, // :arg_pcode, // 0, // getdate()) Using commit_transaction ; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // IF Pos(Lower(commit_transaction.SQLErrText),'pk_ow_wfjgware') > 0 THEN // arg_msg = '插入外协商库存操作失败,关键字分部ID、库存ID重复' // ELSE // arg_msg = "物料["+arg_mtrlcode+"]库存建立操作失败"+"~n"+commit_transaction.SQLErrText // END IF // GOTO ext // END IF // arg_mtrlwareid = ls_newid // i_sptid=sptid ELSEIF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败(错误库存编号唯一码)" GOTO ext END IF IF IsNull(i_cost) THEN i_cost = 0 IF IsNull(i_plancode) THEN i_plancode = '' IF IsNull(i_status) THEN i_status = '' IF IsNull(i_mtrlid) THEN i_mtrlid = 0 IF IsNull(i_sptid) THEN i_sptid = 0 IF IsNull(i_woodcode) THEN i_woodcode = '' IF IsNull(i_pcode) THEN i_pcode = '' IF sptid <> i_sptid THEN arg_msg = "物料:" + String(i_mtrlcode) + '所属加工商资料不对应' rslt = 0 GOTO ext END IF IF i_cost < 0 THEN //检查进仓价 rslt = 0 arg_msg = "物料:" + String(i_mtrlcode)+" 单价错误" GOTO ext END IF //写入内容 it_mxbt_bef++ inwaremx_bef[it_mxbt_bef].mtrlwareid = arg_mtrlwareid inwaremx_bef[it_mxbt_bef].mtrlid = i_mtrlid inwaremx_bef[it_mxbt_bef].status = i_status inwaremx_bef[it_mxbt_bef].qty = arg_qty inwaremx_bef[it_mxbt_bef].sptid = i_sptid inwaremx_bef[it_mxbt_bef].cost = i_cost inwaremx_bef[it_mxbt_bef].costamt = Round(i_cost * arg_qty,2) inwaremx_bef[it_mxbt_bef].plancode = i_plancode inwaremx_bef[it_mxbt_bef].mtrlcode = i_mtrlcode inwaremx_bef[it_mxbt_bef].mxdscrp = arg_mxdscrp inwaremx_bef[it_mxbt_bef].printid = arg_printid inwaremx_bef[it_mxbt_bef].woodcode = i_woodcode inwaremx_bef[it_mxbt_bef].pcode = i_pcode IF thflag = 0 THEN inwaremx_bef[it_mxbt_bef].fprice = i_cost ELSE inwaremx_bef[it_mxbt_bef].fprice = arg_price END IF IF sys_option_2unit = 0 THEN IF arg_rate = 0 THEN arg_rate = arg_qty/arg_uqty ELSE arg_uqty = arg_qty/arg_rate END IF END IF IF arg_uqty <> 0 THEN inwaremx_bef[it_mxbt_bef].rate = arg_qty / arg_uqty ELSE inwaremx_bef[it_mxbt_bef].rate = 0 END IF inwaremx_bef[it_mxbt_bef].unit = arg_unit inwaremx_bef[it_mxbt_bef].uqty = arg_uqty ext: IF rslt = 0 THEN p_clearmx() IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF RETURN rslt end function public function integer mod_price (long arg_scid, long arg_inwareid, long arg_printid, decimal arg_fprice, decimal arg_jgprice, decimal arg_rebate, decimal arg_tax, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 uo_inware uo_in uo_in = CREATE uo_inware uo_in.commit_transaction = sqlca IF p_getinfo(arg_scid,arg_inwareid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF flag = 0 THEN rslt = 0 arg_msg = '待审核状态不能执行修改单价功能' GOTO ext END IF IF secflag = 1 THEN rslt = 0 arg_msg = '已财审状态不能执行修改单价功能' GOTO ext END IF Decimal ld_jgprice,ld_fprice,ld_uqty,ld_rate,ld_qty,ld_rebate,lde_tax Long ll_mtrlid String ls_status,ls_woodcode,ls_pcode Long ll_storageid SELECT jgprice, fprice, tax, uqty, qty, rebate, mtrlid, status, woodcode, pcode, storageid INTO :ld_jgprice, :ld_fprice, :lde_tax, :ld_uqty, :ld_qty, :ld_rebate, :ll_mtrlid, :ls_status, :ls_woodcode, :ls_pcode, :ll_storageid FROM ow_wfjgmx_in_aft WHERE scid = :arg_scid AND inwareid = :arg_inwareid AND printid = :arg_printid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询单据明细内容失败'+commit_transaction.SQLErrText GOTO ext END IF if arg_tax = -1 then arg_tax = lde_tax if arg_rebate = -1 then arg_rebate = ld_rebate IF arg_jgprice = ld_jgprice AND arg_fprice = ld_fprice AND ld_rebate = arg_rebate and lde_tax = arg_tax THEN rslt = 0 arg_msg = '加工价、材料成本价、折扣、税率没有任何修改,不能保存' GOTO ext END IF Decimal ld_uprice_new,ld_price_new,ld_cost_new IF ld_qty <> 0 THEN ld_uprice_new = Round(arg_jgprice * ld_uqty/ld_qty,5) ELSE ld_uprice_new = 0 END IF ld_cost_new = ld_uprice_new * arg_rebate + arg_fprice ld_price_new = ld_uprice_new * arg_rebate + arg_fprice UPDATE ow_wfjgmx_in_aft SET jgprice = :arg_jgprice, fprice = :arg_fprice, uprice = :ld_uprice_new, price = :ld_price_new, cost = :ld_cost_new WHERE scid = :arg_scid AND inwareid = :arg_inwareid AND printid = :arg_printid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新单据明细失败'+commit_transaction.SQLErrText GOTO ext END IF IF billtype = 4 THEN Long ll_inwareid SELECT inwareid INTO :ll_inwareid FROM u_inware WHERE scid = :arg_scid AND relid = :arg_inwareid AND storageid = :ll_storageid AND billtype = 4 USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询相关进仓单失败'+commit_transaction.SQLErrText GOTO ext END IF //进仓单用库存单位进仓 IF uo_in.mod_price(arg_scid,ll_inwareid,arg_printid,ld_uprice_new * arg_rebate + arg_fprice,arg_jgprice,-1,-1,arg_msg,false) = 0 THEN rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; END IF RETURN rslt end function public function integer acceptmx (long arg_printid, long arg_mtrlid, string arg_mtrlcode, string arg_plancode, string arg_status, decimal arg_uqty, decimal arg_fprice, decimal arg_rebate, string arg_mxdscrp, ref string arg_msg, decimal arg_jgprice, long arg_relid, long arg_relprintid, integer arg_ifrel, string arg_woodcode, string arg_pcode, long arg_cusid_sptid, string arg_unit, decimal arg_qty, long arg_storageid, decimal arg_rate, decimal arg_addqty, string arg_mxdscrp2, string arg_mxdscrp3, string arg_mxdscrp4); Decimal ld_planprice,ld_cost Decimal ld_noauditqty,ld_bootqty String ls_relcode,ls_saletaskcode Int li_iflimitprice Long rslt = 1,cnt = 0,ls_i uo_spt_price uo_sptprice uo_sptprice = Create uo_spt_price String ls_sptmtrlname IF it_newbegin = False And it_updatebegin = False THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF //清除空值 IF IsNull(arg_printid) THEN arg_printid = 0 IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = '' IF IsNull(arg_plancode) THEN arg_plancode = '' IF IsNull(arg_status) THEN arg_status = '' IF IsNull(arg_uqty) THEN arg_uqty = 0 IF IsNull(arg_fprice) THEN arg_fprice = 0 IF IsNull(arg_rebate) THEN arg_rebate = 0 IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' IF IsNull(arg_jgprice) THEN arg_jgprice = 0 IF IsNull(arg_relid) THEN arg_relid = 0 IF IsNull(arg_relprintid) THEN arg_relprintid = 0 IF IsNull(arg_ifrel) THEN arg_ifrel = 0 IF IsNull(arg_mxdscrp) THEN arg_woodcode = '' IF IsNull(arg_pcode) THEN arg_pcode = '' IF IsNull(arg_cusid_sptid) THEN arg_cusid_sptid = 0 IF IsNull(arg_storageid) THEN arg_storageid = 0 IF IsNull(arg_unit) THEN arg_unit = '' IF IsNull(arg_rate) THEN arg_rate = 1 IF IsNull(arg_addqty) THEN arg_addqty = 0 IF IsNull(arg_mxdscrp2) THEN arg_mxdscrp2 = '' IF IsNull(arg_mxdscrp3) THEN arg_mxdscrp3 = '' IF IsNull(arg_mxdscrp4) THEN arg_mxdscrp4 = '' IF arg_mtrlid = 0 Or arg_qty = 0 THEN rslt = 1 GOTO ext END IF IF sys_option_2unit = 1 THEN IF arg_uqty = 0 THEN arg_msg = '行:'+String(arg_printid)+ ',请输入计价数量' rslt = 0 GOTO ext END IF IF Trim(arg_unit) = '' THEN arg_msg = '行:'+String(arg_printid)+ ',请输入计价单位' rslt = 0 GOTO ext END IF ELSE arg_uqty = arg_qty/arg_rate END IF IF billtype = 4 THEN Decimal ol_mtrl_qty = 0 Int ls_noallocflag Decimal lde_nouseqty SELECT noallocflag INTO :ls_noallocflag FROM u_storage Where storageid = :arg_storageid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询仓库允许使用未开单库存属性失败'+commit_transaction.SQLErrText GOTO ext END IF IF ls_noallocflag = 1 AND thflag = 1 THEN SELECT sum(u_mtrlware.noallocqty - isnull(uv_mtrlware_noauditingqty.noauditingqty, 0)) INTO :lde_nouseqty FROM u_mtrlware LEFT OUTER JOIN uv_mtrlware_noauditingqty ON (u_mtrlware.mtrlwareid = uv_mtrlware_noauditingqty.mtrlwareid) AND (u_mtrlware.scid = uv_mtrlware_noauditingqty.scid) WHERE u_mtrlware.scid = :scid AND u_mtrlware.mtrlid = :arg_mtrlid AND u_mtrlware.STATUS = :arg_status AND u_mtrlware.plancode = :arg_plancode AND u_mtrlware.woodcode = :arg_woodcode AND u_mtrlware.pcode = :arg_pcode AND u_mtrlware.storageid = :arg_storageid AND u_mtrlware.dxflag = :dxflag AND u_mtrlware.sptid = :arg_cusid_sptid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,仓库" GOTO ext END IF If (Abs(arg_qty) > lde_nouseqty ) THEN rslt = 0 arg_msg = '行:'+String(arg_printid)+"物料:" + arg_mtrlcode+' 未开单数:'+String(lde_nouseqty,'#,##0.##########')+'少于本次返工数量:'+String(Abs(arg_qty),'#,##0.##########') GOTO ext END IF END IF END IF IF f_check_status(1, arg_status) = 0 THEN rslt = 0 arg_msg = "查询操作失败,可能颜色未定义,"+arg_mtrlcode+",颜色:"+arg_status GOTO ext END IF //检查物料id SELECT planprice INTO :ld_planprice FROM u_mtrldef Where u_mtrldef.mtrlid = :arg_mtrlid Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,编码:"+arg_mtrlcode GOTO ext END IF //检查物料限价属性 SELECT iflimitprice INTO :li_iflimitprice FROM u_mtrldef Where u_mtrldef.mtrlid = :arg_mtrlid Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询物料限价属性失败:"+arg_mtrlcode GOTO ext END IF //查询采购限价并检查进仓价 IF billtype = 1 Or billtype = 4 THEN IF li_iflimitprice = 1 THEN IF uo_sptprice.uf_check_price_save(thflag,sptid,arg_mtrlid,arg_mtrlcode,arg_unit,arg_status,arg_woodcode,arg_pcode,arg_jgprice,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF END IF IF arg_ifrel > 0 THEN IF arg_relid = 0 THEN arg_msg = '请先择相应的加工计划' rslt = 0 GOTO ext END IF SELECT u_order_wfjg.taskcode,a = CASE when u_order_wfjg.billtype = 1 THEN u_order_wfjgmx.relcode ELSE '' END Into :ls_relcode,:ls_saletaskcode From u_order_wfjgmx,u_order_wfjg Where u_order_wfjgmx.wfjgid = :arg_relid And u_order_wfjgmx.printid = :arg_relprintid And u_order_wfjgmx.mtrlid = :arg_mtrlid And u_order_wfjgmx.status = :arg_status And u_order_wfjgmx.woodcode = :arg_woodcode And u_order_wfjgmx.pcode = :arg_pcode And u_order_wfjgmx.wfjgid = u_order_wfjg.wfjgid And u_order_wfjgmx.scid = u_order_wfjg.scid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询加工计划是否有加工产品:'+arg_mtrlcode+'失败' rslt = 0 GOTO ext END IF END IF IF arg_fprice * arg_rebate < 0 THEN //检查进仓价 rslt = 0 arg_msg = "编码:" + String(arg_mtrlcode)+" 单价错误" GOTO ext END IF //写入内容 it_mxbt++ inwaremx[it_mxbt].noauditqty = ld_noauditqty inwaremx[it_mxbt].printid = arg_printid inwaremx[it_mxbt].mtrlid = arg_mtrlid inwaremx[it_mxbt].mtrlcode = arg_mtrlcode inwaremx[it_mxbt].unit = arg_unit inwaremx[it_mxbt].storageid = arg_storageid inwaremx[it_mxbt].bootqty = ld_bootqty Long ll_if_plancode,ll_inwaretype IF arg_storageid > 0 THEN SELECT if_plancode,inwaretype INTO :ll_if_plancode,:ll_inwaretype FROM u_storage Where storageid = :arg_storageid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询仓库资料失败' GOTO ext END IF IF ll_if_plancode = 0 THEN inwaremx[it_mxbt].plancode = '' ELSEIF ll_inwaretype = 1 THEN inwaremx[it_mxbt].plancode = arg_plancode ELSEIF ll_inwaretype = 2 THEN inwaremx[it_mxbt].plancode = String(Round(arg_fprice * arg_rebate,5)) ELSEIF ll_inwaretype = 3 THEN IF ls_saletaskcode <> '' THEN inwaremx[it_mxbt].plancode = ls_saletaskcode ELSE inwaremx[it_mxbt].plancode = arg_plancode END IF END IF END IF inwaremx[it_mxbt].uqty = arg_uqty inwaremx[it_mxbt].jgprice = arg_jgprice inwaremx[it_mxbt].rebate = arg_rebate IF arg_qty <> 0 THEN inwaremx[it_mxbt].uprice = Round(arg_jgprice * arg_uqty/arg_qty,5) //加工价,本位币,库存单位 ELSE inwaremx[it_mxbt].uprice = 0 END IF IF arg_uqty <> 0 THEN inwaremx[it_mxbt].rate = arg_qty/arg_uqty ELSE inwaremx[it_mxbt].rate = 0 END IF inwaremx[it_mxbt].qty = arg_qty inwaremx[it_mxbt].addqty = arg_addqty inwaremx[it_mxbt].fprice = arg_fprice //材料成本价 inwaremx[it_mxbt].price = inwaremx[it_mxbt].uprice * arg_rebate + arg_fprice //进仓成本价,本位币,库存单位 inwaremx[it_mxbt].planprice = ld_planprice inwaremx[it_mxbt].mxdscrp = arg_mxdscrp inwaremx[it_mxbt].dxflag = dxflag inwaremx[it_mxbt].ifrel = arg_ifrel inwaremx[it_mxbt].relid = arg_relid inwaremx[it_mxbt].relprintid = arg_relprintid inwaremx[it_mxbt].relcode = ls_relcode inwaremx[it_mxbt].status = arg_status inwaremx[it_mxbt].woodcode = arg_woodcode inwaremx[it_mxbt].pcode = arg_pcode IF dxflag = 0 THEN inwaremx[it_mxbt].sptid = arg_cusid_sptid ELSE inwaremx[it_mxbt].sptid = sptid END IF inwaremx[it_mxbt].mxdscrp2 = arg_mxdscrp2 inwaremx[it_mxbt].mxdscrp3 = arg_mxdscrp3 inwaremx[it_mxbt].mxdscrp4 = arg_mxdscrp4 IF billtype = 1 THEN IF uo_sptprice.uf_getmtrlname(sptid,arg_mtrlid,ls_sptmtrlname,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF inwaremx[it_mxbt].sptmtrlname = ls_sptmtrlname END IF IF thflag = 1 THEN IF sys_option_wfjgth_wareamt = 0 THEN SELECT cost INTO :ld_cost FROM u_mtrlware WHERE scid = :scid AND mtrlid = :arg_mtrlid AND status = :arg_status AND plancode = :arg_plancode AND woodcode = :arg_woodcode AND pcode = :arg_pcode AND storageid = :arg_storageid AND dxflag = :dxflag And sptid = :arg_cusid_sptid; IF sqlca.SQLCode <> 0 Or IsNull(ld_cost) THEN ld_cost = 0 inwaremx[it_mxbt].cost = ld_cost ELSE inwaremx[it_mxbt].cost = inwaremx[it_mxbt].price END IF ELSE inwaremx[it_mxbt].cost = inwaremx[it_mxbt].price END IF ext: Destroy uo_sptprice IF rslt = 0 THEN p_clearmx() IF billtype = 4 THEN IF thflag = 0 THEN arg_msg = '仓库外协收货单,'+ arg_msg ELSE arg_msg = '仓库外协返工单,'+ arg_msg END IF ELSEIF billtype = 5 THEN IF thflag = 0 THEN arg_msg = '车间外协收货单,'+ arg_msg ELSE arg_msg = '车间外协返工单,'+ arg_msg END IF END IF Return(rslt) end function on uo_inware_wfjg.create call super::create TriggerEvent( this, "constructor" ) end on on uo_inware_wfjg.destroy TriggerEvent( this, "destructor" ) call super::destroy end on