$PBExportHeader$uo_warepdb_bill.sru forward global type uo_warepdb_bill from nonvisualobject end type type s_dismantle_install from structure within uo_warepdb_bill end type end forward type s_dismantle_install from structure long printid long storageid long mtrlwareid long mtrlid decimal { 5 } qty decimal { 10 } price string status string plancode string woodcode string mxdscrp string mtrlcode string pcode integer dxflag long sptid long standardqty decimal { 5 } addqty string unit end type global type uo_warepdb_bill from nonvisualobject end type global uo_warepdb_bill uo_warepdb_bill type variables PUBLIC PROTECTEDWRITE Long billid PUBLIC PROTECTEDWRITE String billcode PUBLIC PROTECTEDWRITE DateTime opdate PUBLIC PROTECTEDWRITE String opemp PUBLIC PROTECTEDWRITE DateTime moddate PUBLIC PROTECTEDWRITE String modemp PUBLIC PROTECTEDWRITE Int flag PUBLIC PROTECTEDWRITE DateTime Permit_date PUBLIC PROTECTEDWRITE String Permit_emp DateTime billdate Long storageid String dscrp String assign_emp long scid String part Transaction commit_transaction //数据commit事务 long ifpypk PRIVATE: s_warepdb_billmx d_i[] //明细结构数组 Long it_mxbt = 0 //明细结构数组末指针 Boolean it_newbegin = FALSE //新建标志 Boolean it_updatebegin = FALSE//修改标志 end variables forward prototypes public function integer p_clearmx () public function integer p_reset () public function integer updatebegin (long arg_billid, ref string arg_msg) public function integer save (ref string arg_msg, boolean arg_ifcommit) public function integer del (long arg_billid, ref string arg_msg) public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg) public function integer p_getinfo (long arg_billid, ref string arg_msg) public function integer getinfo (long arg_billid, ref string arg_msg) public function integer auditing (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg) public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg) public function integer newbegin (ref string arg_msg) public function integer pypk (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg) public function integer uof_create_pypk (ref string arg_msg) public function integer uof_destroy_pypk (ref string arg_msg) public function integer acceptmx (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg) public function integer acceptmx2 (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg, string arg_waredscrp) end prototypes public function integer p_clearmx ();//INT p_clearmx() //清除明细 it_mxbt=0 RETURN 1 end function public function integer p_reset ();//INT p_RESET() //清除对象及其明细 billid = 0 billcode = '' opemp = '' Permit_emp = '' flag = 0 storageid = 0 dscrp = '' part = '' it_newbegin = FALSE it_updatebegin = FALSE //清除明细 P_CLEARMX() RETURN 1 end function public function integer updatebegin (long arg_billid, ref string arg_msg);int rslt = 1 if arg_billid <= 0 then billid = 0 goto ext end if if p_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 billid = arg_billid p_clearmx() it_newbegin = false it_updatebegin = true ext: if rslt = 0 then p_reset() return rslt end function public function integer save (ref string arg_msg, boolean arg_ifcommit); Integer rslt = 1,i,cnt = 0 DateTime server_dt Long ls_newid // IF IsNull(storageid) THEN storageid = 0 IF IsNull(dscrp) THEN dscrp = '' IF IsNull(assign_emp) THEN assign_emp = '' 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; //取得系统时间,借用操作员表 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 ////////////////////////////////////////////// //开始区分:新建/更新 处理 IF billid = 0 THEN //新建 ls_newid = f_sys_scidentity(0,"u_warepdb_bill","billid",arg_msg,True,commit_transaction) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF billcode = getid(0,"PD",Date(server_dt),True,commit_transaction) //取得新单据编号 IF billcode = "err" THEN billcode = '' rslt = 0 arg_msg = "无法获取拆装单编号" GOTO ext END IF INSERT INTO u_warepdb_bill ( billid, billcode, Assign_Emp, billdate, opemp, opdate, Dscrp, storageid, scid, part ) VALUES ( :ls_newid, :billcode, :Assign_Emp, :billdate, :publ_operator, :server_dt, :Dscrp, :storageid, :scid, :part) ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_warepdb_bill') > 0 THEN arg_msg = '插入单据资料失败,关键字ID重复' ELSEIF Pos(Lower(commit_transaction.SQLErrText),'IX_u_warepdb_bill') > 0 THEN arg_msg = '插入单据资料失败,单据编号重复' ELSE arg_msg = '插入单据资料失败,'+commit_transaction.SQLErrText END IF GOTO ext END IF billid = ls_newid ELSE //////////////////////////////////////////////// //更新 UPDATE u_warepdb_bill SET Assign_Emp = :Assign_Emp, billdate = :billdate, modemp = :publ_operator, moddate = :server_dt, Dscrp = :Dscrp, storageid = :storageid, part = :part WHERE u_warepdb_bill.billid = :billid And flag = 0; IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN rslt = 0 arg_msg = "更新单据操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF //删除原有明细 DELETE FROM u_warepdb_billmx Where u_warepdb_billmx.billid = :billid; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF // FOR i = 1 TO it_mxbt // INSERT INTO u_warepdb_billmx // ( mtrlid, // status, // qty, // factqty, // plancode, // Sptid, // scid, // mtrlwareid, // Dxflag, // woodcode, // pcode, // wareamt, // cost, // factaddqty, // addqty, // billid, // printid, // mxdscrp ) // VALUES ( :d_i[i].mtrlid, // :d_i[i].status, // :d_i[i].qty, // :d_i[i].factqty, // :d_i[i]. plancode, // :d_i[i].Sptid, // :scid, // :d_i[i].mtrlwareid, // :d_i[i].Dxflag, // :d_i[i].woodcode, // :d_i[i].pcode, // :d_i[i].wareamt, // :d_i[i].cost, // :d_i[i].factaddqty, // :d_i[i].addqty, // :billid, // :d_i[i].printid, // :d_i[i].mxdscrp ) ; // IF commit_transaction.SQLCode <> 0 THEN // billid = 0 //还原billid // rslt = 0 // // IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_warepdb_billmx') > 0 THEN // arg_msg = '插入单据明细资料失败,关键字ID重复' // ELSE // arg_msg = '插入单据明细资料失败,'+commit_transaction.SQLErrText // END IF // ROLLBACK ; // GOTO ext // END IF // NEXT END IF FOR i = 1 To it_mxbt INSERT INTO u_warepdb_billmx (scid, billid, printid, mtrlid, status, qty, factqty, plancode, Sptid, mtrlwareid, Dxflag, woodcode, pcode, wareamt, cost, factaddqty, addqty, mxdscrp, packqty,waredscrp) VALUES ( :scid, :billid, :d_i[i].printid, :d_i[i].mtrlid, :d_i[i].status, :d_i[i].qty, :d_i[i].factqty, :d_i[i]. plancode, :d_i[i].Sptid, :d_i[i].mtrlwareid, :d_i[i].Dxflag, :d_i[i].woodcode, :d_i[i].pcode, :d_i[i].wareamt, :d_i[i].cost, :d_i[i].factaddqty, :d_i[i].addqty, :d_i[i].mxdscrp, :d_i[i].packqty,:d_i[i].waredscrp) ; IF commit_transaction.SQLCode <> 0 THEN IF it_newbegin THEN billid = 0 //还原billid rslt = 0 arg_msg = '插入单据明细资料失败,'+commit_transaction.SQLErrText 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 Return(rslt) end function public function integer del (long arg_billid, ref string arg_msg);//==================================================================== // Function: del(arg_billid,arg_msg) //-------------------------------------------------------------------- // Description: //-------------------------------------------------------------------- // Arguments: // value long arg_billid // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.21 //-------------------------------------------------------------------- // Modify History: // //==================================================================== int rslt = 1 if arg_billid <= 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 select u_warepdb_bill.flag into :flag from u_warepdb_bill where u_warepdb_bill.billid = :arg_billid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '查询拆装单操作失败' goto ext end if if flag = 1 then rslt = 0 arg_msg = "单据已经审核,不可以删除" goto ext end if delete from u_warepdb_bill where u_warepdb_bill.billid = :arg_billid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = "删除仓库盘点单操作失败"+"~n"+sqlca.sqlerrtext goto ext end if delete from u_warepdb_billmx where u_warepdb_billmx.billid = :arg_billid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = "删除仓库盘点单明细操作失败"+"~n"+sqlca.sqlerrtext goto ext end if commit; it_newbegin = false it_updatebegin = false if rslt = 0 then rollback; p_reset() end if ext: return (rslt) end function public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg);//==================================================================== // Function: add_dscrp(arg_billid,arg_newdescppart,arg_msg) //-------------------------------------------------------------------- // Description: //-------------------------------------------------------------------- // Arguments: // value long arg_billid // value string arg_newdescppart // reference string arg_msg //-------------------------------------------------------------------- // Returns: integer //-------------------------------------------------------------------- // Author: yyx Date: 2003.11.21 //-------------------------------------------------------------------- // Modify History: // //==================================================================== int rslt = 1 arg_newdescppart = trim(arg_newdescppart) if arg_billid <= 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 select u_warepdb_bill.flag into :flag from u_warepdb_bill where u_warepdb_bill.billid = :arg_billid; if sqlca.sqlcode <> 0 then rslt = 0 arg_msg = '查询仓库盘点单操作失败' goto ext end if if flag = 0 then rslt = 0 arg_msg = "非审核状态下不可用" goto ext end if update u_warepdb_bill set dscrp = dscrp+' '+:arg_newdescppart where u_warepdb_bill.billid = :billid; if sqlca.sqlcode <> 0 then rollback ; rslt = 0 arg_msg = "因网络或其它原因导致添加单据备注操作失败"+"~n"+sqlca.sqlerrtext goto ext end if commit; dscrp = dscrp+' '+arg_newdescppart ext: return (rslt) end function public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1 IF arg_billid <= 0 THEN rslt = 0 arG_MSG = "非法单据唯一码" GOTO ext END IF SELECT u_warepdb_bill.billid, u_warepdb_bill.billcode, u_warepdb_bill.Assign_Emp, u_warepdb_bill.flag, u_warepdb_bill.billdate, u_warepdb_bill.Dscrp, u_warepdb_bill.storageid, u_warepdb_bill.part, u_warepdb_bill.scid, u_warepdb_bill.ifpypk INTO :billid, :billcode, :Assign_Emp, :flag, :billdate, :Dscrp, :storageid, :part, :scid, :ifpypk FROM u_warepdb_bill Where u_warepdb_bill.billid = :arg_billid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arG_MSG = "查询操作失败(错误单据唯一码)"+sqlca.SQLErrText GOTO ext END IF billid = arg_billid ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer getinfo (long arg_billid, ref string arg_msg);Int rslt = 1,i = 1,no_mxcheck = 0 IF arg_billid <= 0 THEN rslt = 0 arg_msg = "非法单据唯一码" GOTO ext END IF IF p_getinfo(arg_billid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF //用游标读取明细 DECLARE cur_d_i_mx CURSOR FOR SELECT u_mtrldef.mtrlcode, u_warepdb_billmx.factqty, u_warepdb_billmx.factaddqty, u_warepdb_billmx.mxdscrp, u_warepdb_billmx.mtrlwareid, u_warepdb_billmx.status, u_warepdb_billmx.plancode, u_warepdb_billmx.woodcode, u_warepdb_billmx.pcode, u_warepdb_billmx.mtrlid, u_warepdb_billmx.qty, u_warepdb_billmx.addqty, u_mtrldef.unit, u_mtrldef.mtrlmode, u_mtrldef.mtrlname, u_warepdb_billmx.Sptid, u_warepdb_billmx.Dxflag, u_warepdb_billmx.wareamt, IsNull(u_cust.Name,'') as sptname , IsNull(u_cust.cuscode,'') as sptcode , u_mtrldef.mtrlsectype, u_mtrldef.zxmtrlmode, u_warepdb_billmx.billid, u_warepdb_billmx.printid, u_mtrldef.scllflag, u_mtrlware.waredscrp, u_mtrlware.inworkdate, u_warepdb_billmx.factqty - u_warepdb_billmx.qty , u_warepdb_billmx.factaddqty - u_warepdb_billmx.addqty FROM u_warepdb_billmx INNER JOIN u_mtrldef ON u_warepdb_billmx.mtrlid = u_mtrldef.mtrlid left OUTER join u_cust ON u_warepdb_billmx.Sptid = u_cust.cusid INNER JOIN u_mtrlware on u_mtrlware.mtrlwareid = u_warepdb_billmx.mtrlwareid WHERE ( u_mtrldef.mtrlid = u_warepdb_billmx.mtrlid ) AND ( u_warepdb_billmx.billid = :arg_billid); OPEN cur_d_i_mx; FETCH cur_d_i_mx INTO :d_i[i].mtrlcode, :d_i[i].factqty, :d_i[i].factaddqty, :d_i[i].mxdscrp, :d_i[i].mtrlwareid, :d_i[i].status, :d_i[i].plancode, :d_i[i].woodcode, :d_i[i].pcode, :d_i[i].mtrlid, :d_i[i].qty, :d_i[i].addqty, :d_i[i].unit, :d_i[i].mtrlmode, :d_i[i].mtrlname, :d_i[i].Sptid, :d_i[i].Dxflag, :d_i[i].wareamt, :d_i[i].sptname , :d_i[i].sptcode , :d_i[i].mtrlsectype, :d_i[i].zxmtrlmode, :d_i[i].billid, :d_i[i].printid, :d_i[i].scllflag, :d_i[i].waredscrp, :d_i[i].inworkdate, :d_i[i].pypkqty, :d_i[i].pypkaddqty; DO WHILE sqlca.SQLCode = 0 i++ FETCH cur_d_i_mx INTO :d_i[i].mtrlcode, :d_i[i].factqty, :d_i[i].factaddqty, :d_i[i].mxdscrp, :d_i[i].mtrlwareid, :d_i[i].status, :d_i[i].plancode, :d_i[i].woodcode, :d_i[i].pcode, :d_i[i].mtrlid, :d_i[i].qty, :d_i[i].addqty, :d_i[i].unit, :d_i[i].mtrlmode, :d_i[i].mtrlname, :d_i[i].Sptid, :d_i[i].Dxflag, :d_i[i].wareamt, :d_i[i].sptname , :d_i[i].sptcode , :d_i[i].mtrlsectype, :d_i[i].zxmtrlmode, :d_i[i].billid, :d_i[i].printid, :d_i[i].scllflag, :d_i[i].waredscrp, :d_i[i].inworkdate, :d_i[i].pypkqty, :d_i[i].pypkaddqty; LOOP CLOSE cur_d_i_mx; //检验明细是否读入完整 SELECT count(*) INTO :no_mxcheck FROM u_warepdb_billmx INNER JOIN u_mtrldef ON u_warepdb_billmx.mtrlid = u_mtrldef.mtrlid left OUTER join u_cust ON u_warepdb_billmx.Sptid = u_cust.cusid WHERE ( u_mtrldef.mtrlid = u_warepdb_billmx.mtrlid ) AND ( u_warepdb_billmx.billid = :arg_billid); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,单据明细数量" GOTO ext END IF IF i <> (no_mxcheck+1) THEN rslt = 0 arg_msg = "查询操作失败,单据明细" GOTO ext END IF billid = arg_billid it_mxbt = i - 1 it_newbegin = FALSE it_updatebegin = FALSE ext: IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer auditing (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i Int rslt = 1 IF billid = 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 u_warepdb_bill SET Permit_emp = :arg_auditingrep, Permit_date = getdate(), flag = 1 Where u_warepdb_bill.billid = :billid And flag = 0; 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 = "仓库盘点单正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF IF uof_create_pypk(arg_msg) = 0 THEN rslt = 0 GOTO ext END IF flag = 1 ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSE COMMIT Using commit_transaction; END IF RETURN rslt end function public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i Int rslt = 1 datetime null_dt setnull(null_dt) IF billid = 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 UPDATE u_warepdb_bill SET Permit_emp = '', Permit_date = :null_dt, flag = 0 Where u_warepdb_bill.billid = :billid AND flag = 1; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致撤审单据操作失败"+"~n"+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = "单据正在撤审,请稍后查询。"+"~n"+sqlca.SQLErrText GOTO ext END IF IF uof_destroy_pypk(arg_msg) = 0 THEN rslt = 0 GOTO ext END IF flag = 1 ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit AND rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer newbegin (ref string arg_msg);Int rslt = 1 p_reset() it_newbegin = TRUE it_updatebegin = FALSE IF rslt = 0 THEN p_reset() RETURN rslt end function public function integer pypk (string arg_auditingrep, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i Int rslt = 1 IF billid = 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 IF ifpypk = 1 THEN rslt = 0 arg_msg = "单据已盘盈盘亏,不能再盘盈盘亏!" GOTO ext END IF Long ls_storageid,ls_warepdbid,ls_mtrlid Decimal ld_cost,ld_cost_mtrlware String ls_status,ls_plancode,ls_mtrlcode,ls_unit Long ll_scid,ls_dxflag Long ls_mtrlwareid,ls_sptid String ls_woodcode,ls_pcode Decimal ls_planprice,ls_qty String ins_pdbdate ins_pdbdate = String(Date(billdate),'yyyymmdd') cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb_bill Where storageid = :storageid And (CONVERT(Char(8), billdate, 112) = :ins_pdbdate) AND flag = 0 USING commit_transaction ; IF commit_transaction.SQLCode = -1 THEN arg_msg = '盘点单查询操作失败,在盘点日:'+String(billdate,"yyyy-mm-dd")+',仓库:'+String(storageid)+'的数据资料!' rslt = 0 GOTO ext ELSE IF cnt <= 0 THEN arg_msg = '盘点单,盘点日:'+String(billdate,"yyyy-mm-dd")+',仓库:'+String(storageid)+'的盘点数据已经审核!' rslt = 0 GOTO ext END IF END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_warepdb Where u_warepdb.storageid = :storageid AND u_warepdb.pdbdate = :ins_pdbdate AND flag = 1 USING commit_transaction; IF commit_transaction.SQLCode = -1 THEN arg_msg = '盘点表查询操作失败,在盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的数据资料!' rslt = 0 GOTO ext ELSE IF cnt > 0 THEN arg_msg = '盘点表,盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的盘点数据已经审核!' rslt = 0 GOTO ext END IF END IF SELECT scid INTO :ll_scid FROM u_storage Where storageid = :storageid; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '查询仓库所属分部失败' rslt = 0 GOTO ext END IF uo_inware uo_ware_py uo_ware_py = CREATE uo_inware uo_outware uo_ware_pk uo_ware_pk = CREATE uo_outware IF uo_ware_py.newbegin(ll_scid,9,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.newbegin(ll_scid,9,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF uo_ware_py.indate = billdate uo_ware_py.inrep = publ_operator uo_ware_py.part = '' uo_ware_py.dscrp = '由盘点单' + billcode + '生成的'+ins_pdbdate+'的盘盈单' uo_ware_py.storageid = storageid uo_ware_py.commit_transaction = commit_transaction uo_ware_py.if_getid_ture = FALSE uo_ware_pk.outdate = billdate uo_ware_pk.outrep = publ_operator uo_ware_pk.part = '' uo_ware_pk.dscrp = '由盘点单' + billcode + '生成的'+ins_pdbdate+'的盘亏单' uo_ware_pk.storageid = storageid uo_ware_pk.commit_transaction = commit_transaction uo_ware_pk.if_getid_ture = FALSE Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(it_mxbt) //初始化进度条1 FOR i = 1 TO it_mxbt ls_mtrlcode = d_i[i].mtrlcode ls_unit = d_i[i].unit w_sys_wait_jdt.st_msg.Text = "处理:"+ls_mtrlcode //进度信息 IF d_i[i].mtrlid <= 0 THEN CONTINUE // IF d_i[i].factqty = 0 AND d_i[i].factaddqty = 0 THEN CONTINUE IF d_i[i].scllflag = 1 THEN CONTINUE ls_mtrlwareid = d_i[i].mtrlwareid ls_mtrlid = d_i[i].mtrlid ls_sptid = d_i[i].sptid ls_plancode = d_i[i].plancode ls_dxflag = d_i[i].dxflag ls_status = d_i[i].status ls_woodcode = d_i[i].woodcode ls_pcode = d_i[i].pcode ls_qty = d_i[i].qty SELECT cost INTO :ld_cost_mtrlware FROM u_mtrlware WHERE mtrlwareid = :ls_mtrlwareid AND scid = :ll_scid; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '物料:'+ls_mtrlcode+',查询库存成本价失败'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF SELECT planprice INTO :ls_planprice FROM u_mtrldef Where mtrlid = :ls_mtrlid; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '物料:'+ls_mtrlcode+',查询计划价失败'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF Int ll_mtrlprp ll_mtrlprp = f_get_storage_mtrlprp(storageid) IF ll_mtrlprp = 0 OR ll_mtrlprp = 1 OR ll_mtrlprp = 2 THEN IF ld_cost_mtrlware = 0 THEN ld_cost = ls_planprice ELSE ld_cost = ld_cost_mtrlware END IF ELSE ld_cost = 0 END IF d_i[i].pypkqty = d_i[i].factqty - d_i[i].qty d_i[i].pypkaddqty = d_i[i].factaddqty - d_i[i].addqty IF d_i[i].pypkqty > 0 OR d_i[i].pypkaddqty > 0 THEN IF uo_ware_py.acceptmx(i,& d_i[i].mtrlid ,& d_i[i].mtrlcode ,& ls_plancode,& ls_status,& d_i[i].pypkqty ,& d_i[i].pypkaddqty ,& ld_cost,& 1,& '',& arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',d_i[i].waredscrp,& d_i[i].inworkdate,0) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF ELSEIF d_i[i].pypkqty < 0 OR d_i[i].pypkaddqty < 0 THEN IF uo_ware_pk.acceptmx(ls_mtrlwareid,& Abs(d_i[i].pypkqty),& Abs(d_i[i].pypkaddqty),& ld_cost,& 1,& '',& i,& arg_msg,0,0,0,0,0,0,0,& d_i[i].unit,1,'','') = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF END IF w_sys_wait_jdt.wf_inc(i) //进度 NEXT IF uo_ware_py.it_mxbt > 0 THEN IF uo_ware_py.Save(FALSE,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_py.getinfo(ll_scid,uo_ware_py.inwareid,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_py.auditing(FALSE,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF END IF IF uo_ware_pk.it_mxbt > 0 THEN IF uo_ware_pk.Save(FALSE,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.getinfo(ll_scid,uo_ware_pk.outwareid,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.auditing(FALSE,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF END IF UPDATE u_warepdb_bill SET ifpypk = 1 Where u_warepdb_bill.billid = :billid AND flag = 0; 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 = "仓库盘点单正在更新单据,请稍后查询。"+"~n"+commit_transaction.SQLErrText GOTO ext END IF ifpypk = 1 ext: IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSE arg_msg = '生成盘盈单/盘亏单成功!' COMMIT USING commit_transaction; END IF Close(w_sys_wait_jdt) DESTROY uo_ware_py DESTROY uo_ware_pk RETURN rslt end function public function integer uof_create_pypk (ref string arg_msg);Int rslt = 1 Long i,ls_storageid,ls_warepdbid,ls_mtrlid Long cnt = 0 Decimal ld_cost,ld_cost_mtrlware String ls_status,ls_plancode,ls_mtrlcode,ls_unit Long ll_scid,ls_dxflag, ll_wrkgrpid Long ls_mtrlwareid,ls_sptid String ls_woodcode,ls_pcode Decimal ls_planprice,ls_qty Int li_mtrlprp, li_ifbalc String ld_waredscrp DateTime ld_inworkdate DateTime ldt_balcdate String ins_pdbdate ins_pdbdate = String(Date(billdate),'yyyymmdd') ldt_balcdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(23:59:59)) IF storageid <= 0 THEN arg_msg = '请选择要盘点的仓库' rslt = 0 GOTO ext END IF IF ins_pdbdate = '' THEN arg_msg = '请选择盘点日' rslt = 0 GOTO ext END IF SELECT scid, mtrlprp, ifbalc INTO :ll_scid, :li_mtrlprp, :li_ifbalc FROM u_storage Where storageid = :storageid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询仓库所属分部失败' rslt = 0 GOTO ext END IF //IF li_ifbalc = 0 THEN // IF MessageBox ("询问","是否确定要审核当前盘点?",question!,yesno! ) = 2 THEN RETURN //ELSE // IF MessageBox ("询问","是否确定要审核当前盘点并且按盘点日期自动结存当前仓库?",question!,yesno! ) = 2 THEN RETURN //END IF uo_inware uo_ware_py uo_ware_py = Create uo_inware uo_ware_py.commit_transaction = sqlca uo_ware_py.if_getid_ture = False uo_ware_py.sysautobuild = True uo_outware uo_ware_pk uo_ware_pk = Create uo_outware uo_ware_pk.commit_transaction = sqlca uo_ware_pk.if_getid_ture = False uo_ware_pk.sysautobuild = True uo_outware_scll uo_ware_scll uo_ware_scll = Create uo_outware_scll uo_ware_scll.commit_transaction = sqlca uo_ware_scll.if_getid_ture = False uo_ware_scll.sysautobuild = True //cnt = 0 //SELECT count(*) // INTO :cnt // FROM u_warepdb_bill // WHERE storageid = :storageid // AND (CONVERT(Char(8), billdate, 112) = :ins_pdbdate) // AND flag = 1 // Using sqlca ; //IF sqlca.SQLCode < 0 THEN // arg_msg = '盘点单查询操作失败,在盘点日:'+ins_pdbdate+',仓库:'+String(storageid)+'的数据资料!' // rslt = 0 // GOTO ext //ELSE // IF cnt > 0 THEN // arg_msg = '盘点单,盘点日:'+ins_pdbdate+',仓库:'+String(storageid)+'的盘点数据已经审核!' // rslt = 0 // GOTO ext // END IF //END IF // //cnt = 0 //SELECT count(*) // INTO :cnt // FROM u_warepdb // WHERE u_warepdb.storageid = :storageid // AND u_warepdb.pdbdate = :ins_pdbdate // AND flag = 0 // Using sqlca; //IF sqlca.SQLCode < 0 THEN // arg_msg = '盘点表查询操作失败,在盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的数据资料!' // rslt = 0 // GOTO ext //END IF // //IF cnt <= 0 THEN // arg_msg = '盘点表,盘点日:'+String(ins_pdbdate)+',仓库:'+String(storageid)+'的盘点数据已经审核!' // rslt = 0 // GOTO ext //END IF ////pypkqty < 0 Or d_i[i].pypkaddqty < 0 boolean lb_findwrk = false FOR i = 1 To it_mxbt if d_i[i].scllflag = 1 then lb_findwrk = true exit end if next IF lb_findwrk THEN SELECT top 1 wrkgrpid INTO :ll_wrkgrpid From u_sc_workgroup; IF sqlca.SQLCode <> 0 THEN arg_msg = '盘点日:'+'查询领料工作中心失败' rslt = 0 GOTO ext END IF END IF IF uo_ware_py.newbegin(ll_scid,9,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.newbegin(ll_scid,9,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_scll.newbegin(ll_scid,3,arg_msg) = 0 THEN arg_msg = 'error!/生产领料单'+arg_msg rslt = 0 GOTO ext END IF //以下3个dscrp均用作删除的主键信息,要修改时必须同步修改ue_audit_c() uo_ware_py.indate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0)) uo_ware_py.inrep = publ_operator uo_ware_py.part = billcode uo_ware_py.dscrp = '盘点单审核自动生成盘盈单' uo_ware_py.storageid = storageid uo_ware_pk.outdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0)) uo_ware_pk.outrep = publ_operator uo_ware_pk.part = billcode uo_ware_pk.dscrp = '盘点单审核自动生成盘亏单' uo_ware_pk.storageid = storageid uo_ware_scll.outdate = DateTime(Date(Left(ins_pdbdate,4)+'-'+Mid(ins_pdbdate,5,2)+'-'+Right(ins_pdbdate,2)),Time(0)) uo_ware_scll.outrep = publ_operator uo_ware_scll.part = billcode uo_ware_scll.dscrp = '盘点单审核盘亏自动生成生产领料单' uo_ware_scll.storageid = storageid uo_ware_scll.relid = ll_wrkgrpid FOR i = 1 To it_mxbt ls_mtrlcode = d_i[i].mtrlcode ls_unit = d_i[i].unit IF d_i[i].mtrlid <= 0 THEN CONTINUE IF d_i[i].pypkqty = 0 And d_i[i].pypkaddqty = 0 THEN CONTINUE //IF d_i[i].scllflag = 1 And d_i[i].pypkqty < 0 THEN CONTINUE //只有盘亏的领料才不考虑 ls_mtrlwareid = d_i[i].mtrlwareid ls_mtrlid = d_i[i].mtrlid ls_sptid = d_i[i].sptid ls_plancode = d_i[i].plancode ls_dxflag = d_i[i].dxflag ls_status = d_i[i].status ls_woodcode = d_i[i].woodcode ls_pcode = d_i[i].pcode ls_qty = d_i[i].qty SELECT cost , waredscrp, inworkdate INTO :ld_cost_mtrlware, :ld_waredscrp, :ld_inworkdate FROM u_mtrlware WHERE scid = :ll_scid And mtrlwareid = :ls_mtrlwareid; IF sqlca.SQLCode <> 0 THEN arg_msg = '物料:'+ls_mtrlcode+',查询库存成本价失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF SELECT planprice INTO :ls_planprice FROM u_mtrldef Where mtrlid = :ls_mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = '物料:'+ls_mtrlcode+',查询计划价失败'+sqlca.SQLErrText rslt = 0 GOTO ext END IF IF li_mtrlprp = 0 Or li_mtrlprp = 1 Or li_mtrlprp = 2 THEN IF ld_cost_mtrlware = 0 THEN ld_cost = ls_planprice ELSE ld_cost = ld_cost_mtrlware END IF ELSE ld_cost = 0 END IF IF d_i[i].pypkqty > 0 Or d_i[i].pypkaddqty > 0 THEN // IF uo_ware_py.acceptmx(i,& // d_i[i].mtrlid,& // d_i[i].mtrlcode,& // ls_plancode,& // ls_status,& // d_i[i].pypkqty,& // d_i[i].pypkaddqty,& // ld_cost,& // 1,& // '',& // arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',ld_waredscrp,ld_inworkdate) = 0 THEN IF uo_ware_py.acceptmx(i,& d_i[i].mtrlid,& d_i[i].mtrlcode,& ls_plancode,& ls_status,& d_i[i].pypkqty,& d_i[i].pypkaddqty,& ld_cost,& 1,& '',& arg_msg,0,0,0,0,ls_woodcode,ls_pcode,'',ls_sptid,ls_unit,1,'',d_i[i].waredscrp,ld_inworkdate,0) = 0 THEN arg_msg = "行["+String(i)+"],盘盈单,接受明细,"+arg_msg rslt = 0 GOTO ext END IF ELSEIF d_i[i].scllflag = 0 And ( d_i[i].pypkqty < 0 Or d_i[i].pypkaddqty < 0 ) THEN IF uo_ware_pk.acceptmx(ls_mtrlwareid,& Abs(d_i[i].pypkqty),& Abs(d_i[i].pypkaddqty),& ld_cost_mtrlware,& 1,& '',& i,& arg_msg,0,0,0,0,0,0,0,& d_i[i].unit,1,'','') = 0 THEN arg_msg = "行["+String(i)+"],盘亏单,接受明细,"+arg_msg rslt = 0 GOTO ext END IF ELSEIF d_i[i].scllflag = 1 And ( d_i[i].pypkqty < 0 Or d_i[i].pypkaddqty < 0 ) THEN IF uo_ware_scll.acceptmx(ls_mtrlwareid,& Abs(d_i[i].pypkqty),& Abs(d_i[i].pypkaddqty),& ld_cost_mtrlware,& 1,& '',& i,& arg_msg,0,0,0,0,0,0,0,& d_i[i].unit,1,'','') = 0 THEN arg_msg = "行["+String(i)+"],生产领料单,接受明细,"+arg_msg rslt = 0 GOTO ext END IF END IF NEXT //自动生成盘盈单 IF uo_ware_py.it_mxbt > 0 THEN IF uo_ware_py.Save(False,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_py.getinfo(ll_scid,uo_ware_py.inwareid,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_py.auditing(False,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF END IF //自动生成盘亏单 IF uo_ware_pk.it_mxbt > 0 THEN IF uo_ware_pk.Save(False,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.getinfo(ll_scid,uo_ware_pk.outwareid,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.auditing(False,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF END IF //自动生成领料单 IF uo_ware_scll.it_mxbt > 0 THEN IF uo_ware_scll.Save(False,arg_msg) = 0 THEN arg_msg = '保存生产领料单,'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_scll.getinfo(ll_scid,uo_ware_scll.outwareid,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF uo_ware_scll.auditing(False,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF //更新库存摘要 20180831 string ls_waredscrp for i = 1 to it_mxbt ls_waredscrp = d_i[i].waredscrp ls_mtrlwareid = d_i[i].mtrlwareid UPDATE u_mtrlware SET u_mtrlware.waredscrp = :ls_waredscrp WHERE ( scid = :ll_scid ) AND ( mtrlwareid = :ls_mtrlwareid ) ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "因网络或其它原因导致更新库存摘要操作失败"+"~n"+sqlca.SQLErrText GOTO ext END IF next ext: IF rslt = 0 THEN ROLLBACK; END IF Destroy uo_ware_py Destroy uo_ware_pk Destroy uo_ware_scll RETURN rslt end function public function integer uof_destroy_pypk (ref string arg_msg); Int rslt = 1 uo_inware uo_ware_py uo_ware_py = CREATE uo_inware uo_ware_py.commit_transaction = sqlca uo_ware_py.if_getid_ture = FALSE uo_ware_py.sysautobuild = true uo_outware uo_ware_pk uo_ware_pk = CREATE uo_outware uo_ware_pk.commit_transaction = sqlca uo_ware_pk.if_getid_ture = FALSE uo_ware_pk.sysautobuild = true uo_outware_scll uo_ware_scll uo_ware_scll = CREATE uo_outware_scll uo_ware_scll.commit_transaction = sqlca uo_ware_scll.if_getid_ture = FALSE uo_ware_scll.sysautobuild = true Long cnt Long ll_scid, ll_inwareid, ll_outwareid String ls_inwarecode, ls_outwarecode String ls_part, ls_dscrp String ins_pdbdate ins_pdbdate = String(Date(billdate),'yyyymmdd') ls_part = billcode ls_dscrp = '盘点单审核自动生成盘盈单' //1.撤审,删除盘盈单, SELECT count(*) INTO :cnt FROM u_inware WHERE storageid = :storageid AND (dscrp = :ls_dscrp and part = :ls_part ) AND billtype = 9; IF sqlca.SQLCode <> 0 THEN cnt = 0 END IF IF cnt > 1 THEN rslt = 0 arg_msg = "当前盘点表已生成多张盘盈单,请先手动删除" GOTO ext ELSEIF cnt = 1 THEN SELECT scid, inwareid , inwarecode INTO :ll_scid, :ll_inwareid, :ls_inwarecode FROM u_inware WHERE storageid = :storageid AND (dscrp = :ls_dscrp and part = :ls_part ) AND billtype = 9; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询当前盘点表相关盘盈单失败,"+sqlca.SQLErrText GOTO ext END IF IF uo_ware_py.getinfo(ll_scid,ll_inwareid,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_py.c_auditing(FALSE,arg_msg) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_py.del(ll_scid,ll_inwareid,arg_msg,FALSE) = 0 THEN arg_msg = 'error!/盘盈单'+arg_msg rslt = 0 GOTO ext END IF END IF //2.撤审,删除盘亏单 ls_part = billcode ls_dscrp = '盘点单审核自动生成盘亏单' SELECT count(*) INTO :cnt FROM u_outware WHERE storageid = :storageid AND (dscrp = :ls_dscrp and part = :ls_part ) AND billtype = 9; IF sqlca.SQLCode <> 0 THEN cnt = 0 END IF IF cnt > 1 THEN rslt = 0 arg_msg = "当前盘点表已生成多张盘亏单,请先手动删除" GOTO ext ELSEIF cnt = 1 THEN SELECT scid, outwareid , outwarecode INTO :ll_scid, :ll_outwareid, :ls_outwarecode FROM u_outware WHERE storageid = :storageid AND (dscrp = :ls_dscrp and part = :ls_part ) AND billtype = 9; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询当前盘点表相关盘亏单失败,"+sqlca.SQLErrText GOTO ext END IF IF uo_ware_pk.getinfo(ll_scid,ll_outwareid,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.c_auditing(FALSE,arg_msg) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.del(ll_scid,ll_outwareid,arg_msg,FALSE) = 0 THEN arg_msg = 'error!/盘亏单'+arg_msg rslt = 0 GOTO ext END IF END IF //撤审删除生产领料单 ls_part = billcode ls_dscrp = '盘点单审核盘亏自动生成生产领料单' SELECT count(*) INTO :cnt FROM u_outware WHERE storageid = :storageid AND (dscrp = :ls_dscrp and part = :ls_part ) AND billtype = 3; IF sqlca.SQLCode <> 0 THEN cnt = 0 END IF IF cnt > 1 THEN rslt = 0 arg_msg = "当前盘点表已生成多张生产领料单,请先手动删除" GOTO ext ELSEIF cnt = 1 THEN SELECT scid, outwareid , outwarecode INTO :ll_scid, :ll_outwareid, :ls_outwarecode FROM u_outware WHERE storageid = :storageid AND (dscrp = :ls_dscrp and part = :ls_part ) AND billtype = 3; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询当前盘点表相关盘亏单失败,"+sqlca.SQLErrText GOTO ext END IF IF uo_ware_pk.getinfo(ll_scid,ll_outwareid,arg_msg) = 0 THEN arg_msg = 'error!/生产领料单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.c_auditing(FALSE,arg_msg) = 0 THEN arg_msg = 'error!/生产领料单'+arg_msg rslt = 0 GOTO ext END IF IF uo_ware_pk.del(ll_scid,ll_outwareid,arg_msg,FALSE) = 0 THEN arg_msg = 'error!/生产领料单'+arg_msg rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; END IF DESTROY uo_ware_py DESTROY uo_ware_pk DESTROY uo_ware_scll return rslt end function public function integer acceptmx (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg); Long rslt = 1,cnt = 0,ls_i IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF IF IsNull(arg_factqty) THEN arg_factqty = 0 IF IsNull(arg_factaddqty) THEN arg_factaddqty = 0 IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0 IF IsNull(arg_status) THEN arg_status = '' IF IsNull(arg_plancode) THEN arg_plancode = '' IF IsNull(arg_woodcode) THEN arg_woodcode = '' IF IsNull(arg_pcode) THEN arg_pcode = '' IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 IF IsNull(arg_qty) THEN arg_qty = 0 IF IsNull(arg_addqty) THEN arg_addqty = 0 IF IsNull(arg_Sptid) THEN arg_Sptid = 0 IF IsNull(arg_Dxflag) THEN arg_Dxflag = 0 IF IsNull(arg_printid) THEN arg_printid = 0 IF IsNull(arg_wareamt) THEN arg_wareamt = 0 IF IsNull(arg_cost) THEN arg_cost = 0 IF IsNull(arg_packqty) THEN arg_packqty = 0 IF arg_mtrlwareid > 0 THEN SELECT plancode, woodcode, status, pcode, dxflag, sptid INTO :arg_plancode, :arg_woodcode, :arg_status, :arg_pcode, :arg_dxflag, :arg_sptid FROM u_mtrlware Where u_mtrlware.mtrlwareid = :arg_mtrlwareid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料 '+arg_mtrlcode+' 库存失败!>>'+sqlca.SQLErrText GOTO ext END IF //检查成本价调整单 cnt = 0 SELECT count(*) INTO :cnt FROM u_updatecost,u_updatecostmx WHERE u_updatecost.wareid = u_updatecostmx.wareid AND u_updatecost.flag = 0 AND u_updatecostmx.mtrlwareid = :arg_mtrlwareid AND u_updatecost.scid = :scid USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "第" + String(arg_printid) + "行,查询成本价调整单操作失败" GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = "第" + String(arg_printid) + "行,已开成本价调整单,请先审核" GOTO ext END IF END IF FOR ls_i = 1 TO it_mxbt //合并重复项 IF d_i[ls_i].mtrlwareid = arg_mtrlwareid AND & d_i[ls_i].status = arg_status AND & d_i[ls_i].pcode = arg_pcode AND & d_i[ls_i].woodcode = arg_woodcode AND & d_i[ls_i].mtrlid = arg_mtrlid THEN d_i[ls_i].factqty = d_i[ls_i].factqty + arg_factqty d_i[ls_i].factaddqty = d_i[ls_i].factaddqty + arg_factaddqty d_i[ls_i].qty = d_i[ls_i].qty + arg_qty d_i[ls_i].addqty = d_i[ls_i].addqty + arg_addqty d_i[ls_i].wareamt = d_i[ls_i].wareamt + arg_wareamt d_i[ls_i].packqty = d_i[ls_i].packqty + arg_packqty rslt = 1 GOTO ext END IF NEXT //写入内容 it_mxbt++ d_i[it_mxbt].factqty = arg_factqty d_i[it_mxbt].factaddqty = arg_factaddqty d_i[it_mxbt].mxdscrp = arg_mxdscrp d_i[it_mxbt].mtrlwareid = arg_mtrlwareid d_i[it_mxbt].status = arg_status d_i[it_mxbt].plancode = arg_plancode d_i[it_mxbt].woodcode = arg_woodcode d_i[it_mxbt].pcode = arg_pcode d_i[it_mxbt].mtrlid = arg_mtrlid d_i[it_mxbt].qty = arg_qty d_i[it_mxbt].addqty = arg_addqty d_i[it_mxbt].sptid = arg_Sptid d_i[it_mxbt].dxflag = arg_Dxflag d_i[it_mxbt].printid = arg_printid d_i[it_mxbt].wareamt = arg_wareamt d_i[it_mxbt].cost = arg_cost d_i[it_mxbt].packqty = arg_packqty ext: IF rslt = 0 THEN p_clearmx() arg_msg = "第" + String(arg_printid) + "行," + arg_msg END IF Return(rslt) end function public function integer acceptmx2 (decimal arg_factqty, decimal arg_factaddqty, string arg_mxdscrp, long arg_mtrlwareid, string arg_status, string arg_plancode, string arg_woodcode, string arg_pcode, long arg_mtrlid, decimal arg_qty, decimal arg_addqty, long arg_sptid, long arg_dxflag, long arg_printid, decimal arg_wareamt, decimal arg_cost, string arg_mtrlcode, integer arg_packqty, ref string arg_msg, string arg_waredscrp); Long rslt = 1,cnt = 0,ls_i IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN rslt = 0 arg_msg = "非编辑状态不可以使用,操作取消" GOTO ext END IF IF IsNull(arg_factqty) THEN arg_factqty = 0 IF IsNull(arg_factaddqty) THEN arg_factaddqty = 0 IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = '' IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0 IF IsNull(arg_status) THEN arg_status = '' IF IsNull(arg_plancode) THEN arg_plancode = '' IF IsNull(arg_woodcode) THEN arg_woodcode = '' IF IsNull(arg_pcode) THEN arg_pcode = '' IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 IF IsNull(arg_qty) THEN arg_qty = 0 IF IsNull(arg_addqty) THEN arg_addqty = 0 IF IsNull(arg_Sptid) THEN arg_Sptid = 0 IF IsNull(arg_Dxflag) THEN arg_Dxflag = 0 IF IsNull(arg_printid) THEN arg_printid = 0 IF IsNull(arg_wareamt) THEN arg_wareamt = 0 IF IsNull(arg_cost) THEN arg_cost = 0 IF IsNull(arg_packqty) THEN arg_packqty = 0 IF arg_mtrlwareid > 0 THEN SELECT plancode, woodcode, status, pcode, dxflag, sptid INTO :arg_plancode, :arg_woodcode, :arg_status, :arg_pcode, :arg_dxflag, :arg_sptid FROM u_mtrlware Where u_mtrlware.mtrlwareid = :arg_mtrlwareid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料 '+arg_mtrlcode+' 库存失败!>>'+sqlca.SQLErrText GOTO ext END IF //检查成本价调整单 cnt = 0 SELECT count(*) INTO :cnt FROM u_updatecost,u_updatecostmx WHERE u_updatecost.wareid = u_updatecostmx.wareid AND u_updatecost.flag = 0 AND u_updatecostmx.mtrlwareid = :arg_mtrlwareid AND u_updatecost.scid = :scid USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "第" + String(arg_printid) + "行,查询成本价调整单操作失败" GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = "第" + String(arg_printid) + "行,已开成本价调整单,请先审核" GOTO ext END IF END IF FOR ls_i = 1 TO it_mxbt //合并重复项 IF d_i[ls_i].mtrlwareid = arg_mtrlwareid AND & d_i[ls_i].status = arg_status AND & d_i[ls_i].pcode = arg_pcode AND & d_i[ls_i].woodcode = arg_woodcode AND & d_i[ls_i].mtrlid = arg_mtrlid THEN d_i[ls_i].factqty = d_i[ls_i].factqty + arg_factqty d_i[ls_i].factaddqty = d_i[ls_i].factaddqty + arg_factaddqty d_i[ls_i].qty = d_i[ls_i].qty + arg_qty d_i[ls_i].addqty = d_i[ls_i].addqty + arg_addqty d_i[ls_i].wareamt = d_i[ls_i].wareamt + arg_wareamt d_i[ls_i].packqty = d_i[ls_i].packqty + arg_packqty rslt = 1 GOTO ext END IF NEXT //写入内容 it_mxbt++ d_i[it_mxbt].factqty = arg_factqty d_i[it_mxbt].factaddqty = arg_factaddqty d_i[it_mxbt].mxdscrp = arg_mxdscrp d_i[it_mxbt].mtrlwareid = arg_mtrlwareid d_i[it_mxbt].status = arg_status d_i[it_mxbt].plancode = arg_plancode d_i[it_mxbt].woodcode = arg_woodcode d_i[it_mxbt].pcode = arg_pcode d_i[it_mxbt].mtrlid = arg_mtrlid d_i[it_mxbt].qty = arg_qty d_i[it_mxbt].addqty = arg_addqty d_i[it_mxbt].sptid = arg_Sptid d_i[it_mxbt].dxflag = arg_Dxflag d_i[it_mxbt].printid = arg_printid d_i[it_mxbt].wareamt = arg_wareamt d_i[it_mxbt].cost = arg_cost d_i[it_mxbt].packqty = arg_packqty d_i[it_mxbt].waredscrp = arg_waredscrp ext: IF rslt = 0 THEN p_clearmx() arg_msg = "第" + String(arg_printid) + "行," + arg_msg END IF Return(rslt) end function on uo_warepdb_bill.create call super::create TriggerEvent( this, "constructor" ) end on on uo_warepdb_bill.destroy TriggerEvent( this, "destructor" ) call super::destroy end on