$PBExportHeader$uo_mtrldef.sru forward global type uo_mtrldef from nonvisualobject end type end forward global type uo_mtrldef from nonvisualobject end type global uo_mtrldef uo_mtrldef type variables long uo_mtrlid public protectedwrite long mtrlid //进仓单表自动增量id public protectedwrite datetime opdate //建立时间,自动 public protectedwrite string opemp //建立操作员 //public protectedwrite datetime moddate //修改时间,自动 //public protectedwrite string modemp //修改操作员 s_mtrldef_array s_mtrl s_mtrl_configure_array s_configure2 long cmpid boolean if_getid_ture=false transaction commit_transaction //数据commit事务 boolean it_newbegin=false //新建标志 boolean it_updatebegin=false //修改标志 end variables forward prototypes public function integer p_reset () public function integer p_getinfo (long arg_mtrlid, ref string arg_msg) public function integer save (boolean arg_ifcommit, ref string arg_msg) public function integer newbegin (long arg_mtrlid) public function integer updatebegin (long arg_mtrlid, ref string arg_msg) public function integer p_delpic (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg) public function integer p_del_storage (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg) public function integer del (long arg_mtrlid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit) public function integer p_insert_maxminqty (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref string arg_msg, boolean arg_ifcommit) public function integer p_insert_storage (long arg_mtrlid, long arg_storageid[], long arg_dft[], boolean arg_ifcommit, ref string arg_msg) public function integer del_cmp (long arg_cmpid, ref string arg_msg, boolean arg_ifcommit) public function integer mod_dscrp (long arg_cmpid, string arg_dscrp, ref string arg_msg, boolean arg_ifcommit) public function integer update_cost (long arg_cmpid, ref string arg_msg, boolean arg_ifcommit) public function integer save_cost (s_mtrldef_cost arg_s_cost, ref string arg_msg, boolean arg_ifcommit) public function integer uof_pfdpf_cost (long arg_mtrlid, ref decimal arg_cost, decimal arg_sonscale, ref string arg_msg) public function integer uof_cml_cost (s_mtrldef_cost arg_s_cost, s_mtrldef_costmx arg_s_costmx, ref string arg_msg, boolean arg_ifcommit) public function integer uof_update_configure2 (long arg_mtrlid, s_mtrl_configure_array arg_s_config, boolean arg_ifcommit, ref string arg_msg) public function integer uof_add_mtrl (s_mtrldef_array arg_s_mtrl, string arg_opemp, ref string arg_msg, boolean arg_ifcommit) public function integer save_pack (ref s_mtrldef_pack arg_pack, ref string arg_msg, boolean arg_ifcommit) public function integer del_pack (long arg_mtrlid, long arg_printid, ref string arg_msg, boolean arg_ifcommit) public function integer uof_pfdpf_empcost (long arg_mtrlid, ref decimal arg_cost, decimal arg_sonscale, ref string arg_msg) end prototypes public function integer p_reset ();//int p_reset() // mtrlcode = '' // mtrlname= '' // mtrltype= '' // mtrlsectype= '' // mtrlmode= '' // Mtrlorigin = 0 // storageid = 0 // unit = '' // isbuylimit = 0 // lspacklimit = 0 // price = 0 // cost = 0 // planprice = 0 // LMsaleprice = 0 // lmbuyprice = 0 // CLsaleprice = 0 // YHsaleprice = 0 // PFsaleprice = 0 // LSsaleprice = 0 // dscrp= '' // Mtrlprp = 0 // MaxQTY = 99999 // MinQTY = 0 // ctokg = 1 // isuse = 1 // packqty = 0 // prdpackcode= '' // mtrltypeid = 0 // handtype= '' // barcode= '' // mtrlkind = 0 // net_weight = 0 // gross_weight = 0 // cubage = 0 // ifsafa = 0 // mtrlengname= '' // wpmtrlid = 0 // wprate = 0 // zxmtrlmode= '' // unit_scll= '' // unit_buy= '' // rate_buy = 0 // rate_scll = 0 // rate_sale = 0 // unit_sale= '' // colorprp = 0 // scllflag = 0 s_mtrl.mtrlcode[1] = '' s_mtrl.mtrlname[1] = '' s_mtrl.mtrltype[1] = '' s_mtrl.mtrlsectype[1] = '' s_mtrl.mtrlmode[1] = '' s_mtrl.Mtrlorigin[1] = 0 s_mtrl.storageid[1] = 0 s_mtrl.unit[1] = '' s_mtrl.isbuylimit[1] = 0 s_mtrl.lspacklimit[1] = 0 s_mtrl.cost[1] = 0 s_mtrl.price[1] = 0 s_mtrl.planprice[1] = 0 s_mtrl.LMsaleprice[1] = 0 s_mtrl.lmbuyprice[1] = 0 // s_mtrl.CLsaleprice[1]=0 // s_mtrl.YHsaleprice[1]=0 // s_mtrl.PFsaleprice[1]=0 // s_mtrl.LSsaleprice[1]=0 s_mtrl.dscrp[1] = '' s_mtrl.Mtrlprp[1] = 0 s_mtrl.MaxQTY[1] = 99999 s_mtrl.MinQTY[1] = 0 s_mtrl.ctokg[1] = 0 s_mtrl.isuse[1] = 1 s_mtrl.iflimitprice[1] = 1 s_mtrl.packqty[1] = 0 s_mtrl.prdpackcode[1] = '' s_mtrl.mtrltypeid[1] = 0 s_mtrl.handtype[1] = '' s_mtrl.barcode[1] = '' s_mtrl.mtrlkind[1] = 0 s_mtrl.net_weight[1] = 0 s_mtrl.gross_weight[1] = 0 s_mtrl.cubage[1] = 0 s_mtrl.ifsafa[1] = 0 s_mtrl.mtrlengname[1] = '' s_mtrl.wpmtrlid[1] = 0 s_mtrl.wprate[1] = 0 s_mtrl.zxmtrlmode[1] = '' s_mtrl.unit_scll[1] = '' s_mtrl.unit_buy[1] = '' s_mtrl.rate_buy[1] = 0 s_mtrl.rate_scll[1] = 0 s_mtrl.rate_sale[1] = 0 s_mtrl.unit_sale[1] = '' s_mtrl.colorprp[1] = 0 s_mtrl.scllflag[1] = 0 it_newbegin = False it_updatebegin = False //清除明细 RETURN 1 end function public function integer p_getinfo (long arg_mtrlid, ref string arg_msg);//p_getinfo(arg_scid,arg_inwareid,arg_msg) //0 失败 1成功 INT rslt=1 IF arg_mtrlid<=0 THEN rslt=0 arG_MSG="非法物料唯一码" goto ext end if SELECT mtrlcode, mtrlname, mtrltype, mtrlsectype, mtrlmode, Mtrlorigin, storageid, unit, isbuylimit, lspacklimit, cost, price, planprice, LMsaleprice, lmbuyprice, dscrp, Mtrlprp, MaxQTY, MinQTY, ctokg, isuse, iflimitprice, packqty, prdpackcode, mtrltypeid, handtype, barcode, mtrlkind, net_weight, gross_weight, cubage, ifsafa, mtrlengname, wpmtrlid, wprate, zxmtrlmode, unit_scll, unit_buy, rate_buy, rate_scll, rate_sale, unit_sale, colorprp, scllflag, taskrate, taskaddqty into :s_mtrl.mtrlcode[1], :s_mtrl.mtrlname[1], :s_mtrl.mtrltype[1], :s_mtrl.mtrlsectype[1], :s_mtrl.mtrlmode[1], :s_mtrl.Mtrlorigin[1], :s_mtrl.storageid[1], :s_mtrl.unit[1], :s_mtrl.isbuylimit[1], :s_mtrl.lspacklimit[1], :s_mtrl.cost[1], :s_mtrl.price[1], :s_mtrl.planprice[1], :s_mtrl.LMsaleprice[1], :s_mtrl.lmbuyprice[1], :s_mtrl.dscrp[1], :s_mtrl.Mtrlprp[1], :s_mtrl.MaxQTY[1], :s_mtrl.MinQTY[1], :s_mtrl.ctokg[1], :s_mtrl.isuse[1], :s_mtrl.iflimitprice[1], :s_mtrl.packqty[1], :s_mtrl.prdpackcode[1], :s_mtrl.mtrltypeid[1], :s_mtrl.handtype[1], :s_mtrl.barcode[1], :s_mtrl.mtrlkind[1], :s_mtrl.net_weight[1], :s_mtrl.gross_weight[1], :s_mtrl.cubage[1], :s_mtrl.ifsafa[1], :s_mtrl.mtrlengname[1], :s_mtrl.wpmtrlid[1], :s_mtrl.wprate[1], :s_mtrl.zxmtrlmode[1], :s_mtrl.unit_scll[1], :s_mtrl.unit_buy[1], :s_mtrl.rate_buy[1], :s_mtrl.rate_scll[1], :s_mtrl.rate_sale[1], :s_mtrl.unit_sale[1], :s_mtrl.colorprp[1], :s_mtrl.scllflag[1], :s_mtrl.taskrate[1], :s_mtrl.taskaddqty[1] FROM u_mtrldef WHERE mtrlid = :arg_mtrlid 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 mtrlid = arg_mtrlid ext: IF rslt=0 THEN p_reset() return rslt end function public function integer save (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1 Long i DateTime server_dt Long ls_newid Long ls_mtrlwareid Long ll_strageid[],ll_dft[] IF UpperBound(s_mtrl.mtrlcode) < 1 THEN s_mtrl.mtrlcode[1] = '' IF UpperBound(s_mtrl.mtrlname) < 1 THEN s_mtrl.mtrlname[1] = '' IF UpperBound(s_mtrl.mtrltype) < 1 THEN s_mtrl.mtrltype[1] = '' IF UpperBound(s_mtrl.mtrlsectype) < 1 THEN s_mtrl.mtrlsectype[1] = '' IF UpperBound(s_mtrl.mtrlmode) < 1 THEN s_mtrl.mtrlmode[1] = '' IF UpperBound(s_mtrl.Mtrlorigin) < 1 THEN s_mtrl.Mtrlorigin[1] = 0 IF UpperBound(s_mtrl.storageid) < 1 THEN s_mtrl.storageid[1] = 0 IF UpperBound(s_mtrl.unit) < 1 THEN s_mtrl.unit[1] = '' //IF UpperBound(s_mtrl.isbuylimit) < 1 THEN s_mtrl.isbuylimit[1] = 0 IF UpperBound(s_mtrl.lspacklimit) < 1 THEN s_mtrl.lspacklimit[1] = 0 //IF UpperBound(s_mtrl.price) < 1 THEN s_mtrl.price[1] = 0 //IF UpperBound(s_mtrl.cost) < 1 THEN s_mtrl.cost[1] = 0 IF UpperBound(s_mtrl.planprice) < 1 THEN s_mtrl.planprice[1] = 0 IF UpperBound(s_mtrl.LMsaleprice) < 1 THEN s_mtrl.LMsaleprice[1] = 0 IF UpperBound(s_mtrl.lmbuyprice) < 1 THEN s_mtrl.lmbuyprice[1] = 0 IF UpperBound(s_mtrl.dscrp) < 1 THEN s_mtrl.dscrp[1] = '' IF UpperBound(s_mtrl.Mtrlprp) < 1 THEN s_mtrl.Mtrlprp[1] = 0 IF UpperBound(s_mtrl.MaxQTY) < 1 THEN s_mtrl.MaxQTY[1] = 99999 IF UpperBound(s_mtrl.MinQTY) < 1 THEN s_mtrl.MinQTY[1] = 0 IF UpperBound(s_mtrl.ctokg) < 1 THEN s_mtrl.ctokg[1] = 1 IF UpperBound(s_mtrl.isuse) < 1 THEN s_mtrl.isuse[1] = 1 IF UpperBound(s_mtrl.iflimitprice) < 1 THEN s_mtrl.iflimitprice[1] = 1 IF UpperBound(s_mtrl.packqty) < 1 THEN s_mtrl.packqty[1] = 0 IF UpperBound(s_mtrl.prdpackcode) < 1 THEN s_mtrl.prdpackcode[1] = '' IF UpperBound(s_mtrl.ifpacktype) < 1 THEN s_mtrl.ifpacktype[1] = 0 IF UpperBound(s_mtrl.mtrltypeid) < 1 THEN s_mtrl.mtrltypeid[1] = 0 IF UpperBound(s_mtrl.handtype) < 1 THEN s_mtrl.handtype[1] = '' IF UpperBound(s_mtrl.barcode) < 1 THEN s_mtrl.barcode[1] = '' IF UpperBound(s_mtrl.mtrlkind) < 1 THEN s_mtrl.mtrlkind[1] = 0 IF UpperBound(s_mtrl.net_weight) < 1 THEN s_mtrl.net_weight[1] = 0 IF UpperBound(s_mtrl.gross_weight) < 1 THEN s_mtrl.gross_weight[1] = 0 IF UpperBound(s_mtrl.cubage) < 1 THEN s_mtrl.cubage[1] = 0 IF UpperBound(s_mtrl.mtrlengname) < 1 THEN s_mtrl.mtrlengname[1] = '' IF UpperBound(s_mtrl.zxmtrlmode) < 1 THEN s_mtrl.zxmtrlmode[1] = '' IF UpperBound(s_mtrl.unit_scll) < 1 THEN s_mtrl.unit_scll[1] = '' IF UpperBound(s_mtrl.unit_buy) < 1 THEN s_mtrl.unit_buy[1] = '' IF UpperBound(s_mtrl.rate_buy) < 1 THEN s_mtrl.rate_buy[1] = 0 IF UpperBound(s_mtrl.rate_scll) < 1 THEN s_mtrl.rate_scll[1] = 0 IF UpperBound(s_mtrl.rate_sale) < 1 THEN s_mtrl.rate_sale[1] = 0 IF UpperBound(s_mtrl.unit_sale) < 1 THEN s_mtrl.unit_sale[1] = '' IF UpperBound(s_mtrl.colorprp) < 1 THEN s_mtrl.colorprp[1] = 0 IF UpperBound(s_mtrl.scllflag) < 1 THEN s_mtrl.scllflag[1] = 0 IF UpperBound(s_mtrl.taskrate) < 1 THEN s_mtrl.taskrate[1] = 0 IF UpperBound(s_mtrl.taskaddqty) < 1 THEN s_mtrl.taskaddqty[1] = 0 IF UpperBound(s_mtrl.ifautoscll) < 1 THEN s_mtrl.ifautoscll[1] = 0 IF UpperBound(s_mtrl.ifautoscll) < 1 THEN s_mtrl.ifautoscll[1] = 0 IF UpperBound(s_mtrl.ifautoscll_saletask) < 1 THEN s_mtrl.ifautoscll_saletask[1] = 0 IF UpperBound(s_mtrl.fklevel) < 1 THEN s_mtrl.fklevel[1] = 0 IF UpperBound(s_mtrl.dftmtrlcost) < 1 THEN s_mtrl.dftmtrlcost[1] = 0 IF UpperBound(s_mtrl.dftempcost) < 1 THEN s_mtrl.dftempcost[1] = 0 IF UpperBound(s_mtrl.wfjgcost) < 1 THEN s_mtrl.wfjgcost[1] = 0 IF UpperBound(s_mtrl.dftsccost) < 1 THEN s_mtrl.dftsccost[1] = 0 IF UpperBound(s_mtrl.dftglcost) < 1 THEN s_mtrl.dftglcost[1] = 0 IF UpperBound(s_mtrl.othercost) < 1 THEN s_mtrl.othercost[1] = 0 IF UpperBound(s_mtrl.salerate) < 1 THEN s_mtrl.salerate[1] = 0 IF UpperBound(s_mtrl.upqty) < 1 THEN s_mtrl.upqty[1] = 0 IF UpperBound(s_mtrl.uprate) < 1 THEN s_mtrl.uprate[1] = 0 IF UpperBound(s_mtrl.upsaleqty) < 1 THEN s_mtrl.upsaleqty[1] = 0 IF UpperBound(s_mtrl.upsalerate) < 1 THEN s_mtrl.upsalerate[1] = 0 IF UpperBound(s_mtrl.upscllqty) < 1 THEN s_mtrl.upscllqty[1] = 0 IF UpperBound(s_mtrl.upscllrate) < 1 THEN s_mtrl.upscllrate[1] = 0 IF UpperBound(s_mtrl.mrp_unit) < 1 THEN s_mtrl.mrp_unit[1] = 0 IF UpperBound(s_mtrl.dftsptid) < 1 THEN s_mtrl.dftsptid[1] = 0 //IF UpperBound(s_mtrl.ifHqcl) < 1 THEN s_mtrl.ifHqcl[1] = 0 //IF UpperBound(s_mtrl.HqclMtrlid) < 1 THEN s_mtrl.HqclMtrlid[1] = 0 IF UpperBound(s_mtrl.ifcustom) < 1 THEN s_mtrl.ifcustom[1] = 0 IF UpperBound(s_mtrl.statusflag) < 1 THEN s_mtrl.statusflag[1] = 0 IF UpperBound(s_mtrl.woodcodeflag) < 1 THEN s_mtrl.woodcodeflag[1] = 0 IF UpperBound(s_mtrl.pcodeflag) < 1 THEN s_mtrl.pcodeflag[1] = 0 IF UpperBound(s_mtrl.statustype) < 1 THEN s_mtrl.statustype[1] = 0 IF UpperBound(s_mtrl.woodcodetype) < 1 THEN s_mtrl.woodcodetype[1] = 0 IF UpperBound(s_mtrl.pcodetype) < 1 THEN s_mtrl.pcodetype[1] = 0 IF UpperBound(s_mtrl.status_check) < 1 THEN s_mtrl.status_check[1] = 0 IF UpperBound(s_mtrl.woodcode_check) < 1 THEN s_mtrl.woodcode_check[1] = 0 IF UpperBound(s_mtrl.pcode_check) < 1 THEN s_mtrl.pcode_check[1] = 0 IF UpperBound(s_mtrl.ifcheckaddqty) < 1 THEN s_mtrl.ifcheckaddqty[1] = 0 IF UpperBound(s_mtrl.strcheckaddqty) < 1 THEN s_mtrl.strcheckaddqty[1] = '' IF UpperBound(s_mtrl.strcheck_digit) < 1 THEN s_mtrl.strcheck_digit[1] = 4 IF UpperBound(s_mtrl.priceformula) < 1 THEN s_mtrl.priceformula[1] = '' IF UpperBound(s_mtrl.qtyformula) < 1 THEN s_mtrl.qtyformula[1] = '' IF UpperBound(s_mtrl.buyunit) < 1 THEN s_mtrl.buyunit[1] = 0 IF UpperBound(s_mtrl.scllunit) < 1 THEN s_mtrl.scllunit[1] = 0 IF UpperBound(s_mtrl.saleunit) < 1 THEN s_mtrl.saleunit[1] = 0 IF UpperBound(s_mtrl.wfjgunit) < 1 THEN s_mtrl.wfjgunit[1] = 0 IF UpperBound(s_mtrl.buydec) < 1 THEN s_mtrl.buydec[1] = 0 IF UpperBound(s_mtrl.saledec) < 1 THEN s_mtrl.saledec[1] = 0 IF UpperBound(s_mtrl.sclldec) < 1 THEN s_mtrl.sclldec[1] = 0 IF UpperBound(s_mtrl.wfjgdec) < 1 THEN s_mtrl.wfjgdec[1] = 0 //3属性默认值 IF UpperBound(s_mtrl.status_default) < 1 THEN s_mtrl.status_default[1] = '' IF UpperBound(s_mtrl.woodcode_default) < 1 THEN s_mtrl.woodcode_default[1] = '' IF UpperBound(s_mtrl.pcode_default) < 1 THEN s_mtrl.pcode_default[1] = '' //产品配置 IF UpperBound(s_mtrl.configcodetype) < 1 THEN s_mtrl.configcodetype[1] = 0 IF UpperBound(s_mtrl.configcode) < 1 THEN s_mtrl.configcode[1] = '' IF UpperBound(s_mtrl.configname) < 1 THEN s_mtrl.configname[1] = '' IF UpperBound(s_mtrl.mtrlcolor) < 1 THEN s_mtrl.mtrlcolor[1] = '' //部件选配 IF UpperBound(s_mtrl.status_config) < 1 THEN s_mtrl.status_config[1] = '' IF UpperBound(s_mtrl.woodcode_config) < 1 THEN s_mtrl.woodcode_config[1] = '' IF UpperBound(s_mtrl.pcode_config) < 1 THEN s_mtrl.pcode_config[1] = '' IF UpperBound(s_mtrl.issuliao) < 1 THEN s_mtrl.issuliao[1] = 0 //==================================================================== // //==================================================================== IF IsNull(s_mtrl.mtrlcode[1]) THEN s_mtrl.mtrlcode[1] = '' IF IsNull(s_mtrl.mtrlname[1]) THEN s_mtrl.mtrlname[1] = '' IF IsNull(s_mtrl.mtrltype[1]) THEN s_mtrl.mtrltype[1] = '' IF IsNull(s_mtrl.mtrlsectype[1]) THEN s_mtrl.mtrlsectype[1] = '' IF IsNull(s_mtrl.mtrlmode[1]) THEN s_mtrl.mtrlmode[1] = '' IF IsNull(s_mtrl.Mtrlorigin[1]) THEN s_mtrl.Mtrlorigin[1] = 0 IF IsNull(s_mtrl.storageid[1]) THEN s_mtrl.storageid[1] = 0 IF IsNull(s_mtrl.unit[1]) THEN s_mtrl.unit[1] = '' //if isnull(s_mtrl.isbuylimit[1]) then s_mtrl.isbuylimit[1] = 0 IF IsNull(s_mtrl.lspacklimit[1]) THEN s_mtrl.lspacklimit[1] = 0 //if isnull(s_mtrl.price[1]) then s_mtrl.price[1] = 0 //if isnull(s_mtrl.cost[1]) then s_mtrl.cost[1] = 0 IF IsNull(s_mtrl.planprice[1]) THEN s_mtrl.planprice[1] = 0 IF IsNull(s_mtrl.LMsaleprice[1]) THEN s_mtrl.LMsaleprice[1] = 0 IF IsNull(s_mtrl.lmbuyprice[1]) THEN s_mtrl.lmbuyprice[1] = 0 IF IsNull(s_mtrl.dscrp[1]) THEN s_mtrl.dscrp[1] = '' IF IsNull(s_mtrl.Mtrlprp[1]) THEN s_mtrl.Mtrlprp[1] = 0 IF IsNull(s_mtrl.MaxQTY[1]) THEN s_mtrl.MaxQTY[1] = 99999 IF IsNull(s_mtrl.MinQTY[1]) THEN s_mtrl.MinQTY[1] = 0 IF IsNull(s_mtrl.ctokg[1]) THEN s_mtrl.ctokg[1] = 1 IF IsNull(s_mtrl.isuse[1]) THEN s_mtrl.isuse[1] = 1 IF IsNull(s_mtrl.iflimitprice[1]) THEN s_mtrl.iflimitprice[1] = 1 IF IsNull(s_mtrl.packqty[1]) THEN s_mtrl.packqty[1] = 0 IF IsNull(s_mtrl.prdpackcode[1]) THEN s_mtrl.prdpackcode[1] = '' IF IsNull(s_mtrl.ifpacktype[1]) THEN s_mtrl.ifpacktype[1] = 0 IF IsNull(s_mtrl.mtrltypeid[1]) THEN s_mtrl.mtrltypeid[1] = 0 IF IsNull(s_mtrl.handtype[1]) THEN s_mtrl.handtype[1] = '' IF IsNull(s_mtrl.barcode[1]) THEN s_mtrl.barcode[1] = '' IF IsNull(s_mtrl.mtrlkind[1]) THEN s_mtrl.mtrlkind[1] = 0 IF IsNull(s_mtrl.net_weight[1]) THEN s_mtrl.net_weight[1] = 0 IF IsNull(s_mtrl.gross_weight[1]) THEN s_mtrl.gross_weight[1] = 0 IF IsNull(s_mtrl.cubage[1]) THEN s_mtrl.cubage[1] = 0 IF IsNull(s_mtrl.mtrlengname[1]) THEN s_mtrl.mtrlengname[1] = '' IF IsNull(s_mtrl.zxmtrlmode[1]) THEN s_mtrl.zxmtrlmode[1] = '' IF IsNull(s_mtrl.unit_scll[1]) THEN s_mtrl.unit_scll[1] = '' IF IsNull(s_mtrl.unit_buy[1]) THEN s_mtrl.unit_buy[1] = '' IF IsNull(s_mtrl.rate_buy[1]) THEN s_mtrl.rate_buy[1] = 0 IF IsNull(s_mtrl.rate_scll[1]) THEN s_mtrl.rate_scll[1] = 0 IF IsNull(s_mtrl.rate_sale[1]) THEN s_mtrl.rate_sale[1] = 0 IF IsNull(s_mtrl.unit_sale[1]) THEN s_mtrl.unit_sale[1] = '' IF IsNull(s_mtrl.colorprp[1]) THEN s_mtrl.colorprp[1] = 0 IF IsNull(s_mtrl.scllflag[1]) THEN s_mtrl.scllflag[1] = 0 IF IsNull(s_mtrl.lljg[1]) THEN s_mtrl.lljg[1] = 0 IF IsNull(s_mtrl.taskrate[1]) THEN s_mtrl.taskrate[1] = 0 IF IsNull(s_mtrl.taskaddqty[1]) THEN s_mtrl.taskaddqty[1] = 0 IF IsNull(s_mtrl.ifautoscll[1]) THEN s_mtrl.ifautoscll[1] = 0 IF IsNull(s_mtrl.ifautoscll_saletask[1]) THEN s_mtrl.ifautoscll_saletask[1] = 0 IF IsNull(s_mtrl.fklevel[1]) THEN s_mtrl.fklevel[1] = 0 IF IsNull(s_mtrl.dftmtrlcost[1]) THEN s_mtrl.dftmtrlcost[1] = 0 IF IsNull(s_mtrl.dftempcost[1]) THEN s_mtrl.dftempcost[1] = 0 IF IsNull(s_mtrl.wfjgcost[1]) THEN s_mtrl.wfjgcost[1] = 0 IF IsNull(s_mtrl.dftsccost[1]) THEN s_mtrl.dftsccost[1] = 0 IF IsNull(s_mtrl.dftglcost[1]) THEN s_mtrl.dftglcost[1] = 0 IF IsNull(s_mtrl.othercost[1]) THEN s_mtrl.othercost[1] = 0 IF IsNull(s_mtrl.salerate[1]) THEN s_mtrl.salerate[1] = 0 IF IsNull(s_mtrl.upqty[1]) THEN s_mtrl.upqty[1] = 0 IF IsNull(s_mtrl.uprate[1]) THEN s_mtrl.uprate[1] = 0 IF IsNull(s_mtrl.upsaleqty[1]) THEN s_mtrl.upsaleqty[1] = 0 IF IsNull(s_mtrl.upsalerate[1]) THEN s_mtrl.upsalerate[1] = 0 IF IsNull(s_mtrl.upscllqty[1]) THEN s_mtrl.upscllqty[1] = 0 IF IsNull(s_mtrl.upscllrate[1]) THEN s_mtrl.upscllrate[1] = 0 IF IsNull(s_mtrl.mrp_unit[1]) THEN s_mtrl.mrp_unit[1] = 0 IF IsNull(s_mtrl.dftsptid[1]) THEN s_mtrl.dftsptid[1] = 0 //IF IsNull(s_mtrl.ifHqcl[1]) THEN s_mtrl.ifHqcl[1] = 0 //IF IsNull(s_mtrl.HqclMtrlid[1]) THEN s_mtrl.HqclMtrlid[1] = 0 IF IsNull(s_mtrl.ifcustom[1]) THEN s_mtrl.ifcustom[1] = 0 IF IsNull(s_mtrl.statusflag[1]) THEN s_mtrl.statusflag[1] = 0 IF IsNull(s_mtrl.woodcodeflag[1]) THEN s_mtrl.woodcodeflag[1] = 0 IF IsNull(s_mtrl.pcodeflag[1]) THEN s_mtrl.pcodeflag[1] = 0 IF IsNull(s_mtrl.statustype[1]) THEN s_mtrl.statustype[1] = 0 IF IsNull(s_mtrl.woodcodetype[1]) THEN s_mtrl.woodcodetype[1] = 0 IF IsNull(s_mtrl.pcodetype[1]) THEN s_mtrl.pcodetype[1] = 0 IF IsNull(s_mtrl.status_check[1]) THEN s_mtrl.status_check[1] = 0 IF IsNull(s_mtrl.woodcode_check[1]) THEN s_mtrl.woodcode_check[1] = 0 IF IsNull(s_mtrl.pcode_check[1]) THEN s_mtrl.pcode_check[1] = 0 IF IsNull(s_mtrl.ifcheckaddqty[1]) THEN s_mtrl.ifcheckaddqty[1] = 0 IF IsNull(s_mtrl.strcheckaddqty[1]) THEN s_mtrl.strcheckaddqty[1] = '' IF IsNull(s_mtrl.strcheck_digit[1]) THEN s_mtrl.strcheck_digit[1] = 4 IF IsNull(s_mtrl.priceformula[1]) THEN s_mtrl.priceformula[1] = '' IF IsNull(s_mtrl.qtyformula[1]) THEN s_mtrl.qtyformula[1] = '' IF IsNull(s_mtrl.status_default[1]) THEN s_mtrl.status_default[1] = '' IF IsNull(s_mtrl.woodcode_default[1]) THEN s_mtrl.woodcode_default[1] = '' IF IsNull(s_mtrl.pcode_default[1]) THEN s_mtrl.pcode_default[1] = '' //产品配置 IF IsNull(s_mtrl.configcodetype[1]) THEN s_mtrl.configcodetype[1] = 0 IF IsNull(s_mtrl.configcode[1]) THEN s_mtrl.configcode[1] = '' IF IsNull(s_mtrl.configname[1]) THEN s_mtrl.configname[1] = '' IF IsNull(s_mtrl.mtrlcolor[1]) THEN s_mtrl.mtrlcolor[1] = '' //部件选配 IF IsNull(s_mtrl.status_config[1]) THEN s_mtrl.status_config[1] = '' IF IsNull(s_mtrl.woodcode_config[1]) THEN s_mtrl.woodcode_config[1] = '' IF IsNull(s_mtrl.pcode_config[1]) THEN s_mtrl.pcode_config[1] = '' IF IsNull(s_mtrl.issuliao[1]) THEN s_mtrl.issuliao[1] = 0 IF UpperBound(s_mtrl.inprice_mode) > 0 THEN IF IsNull(s_mtrl.inprice_mode[1]) THEN s_mtrl.inprice_mode[1] = 0 ELSE s_mtrl.inprice_mode[1] = 0 END IF IF mtrlid = 0 THEN SELECT subid, subid_sale, subid_cost, subid_tsale, subid_scll, subid_py, subid_pk, subid_kf into :s_mtrl.subid[1], :s_mtrl.subid_sale[1], :s_mtrl.subid_cost[1], :s_mtrl.subid_tsale[1], :s_mtrl.subid_scll[1], :s_mtrl.subid_py[1], :s_mtrl.subid_pk[1], :s_mtrl.subid_kf[1] FROM u_mtrltype where mtrltypeid = :s_mtrl.mtrltypeid[1]; IF SQLCA.SQLCODE <> 0 THEN rslt = 0 arg_msg = "查询类别信息失败" GOTO ext END IF END IF 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 s_mtrl.unit_buy[1] <> '' And s_mtrl.rate_buy[1] = 0 THEN rslt = 0 arg_msg = "已填写辅单位1,转换率1不能为0" GOTO ext END IF IF s_mtrl.unit_scll[1] <> '' And s_mtrl.rate_scll[1] = 0 THEN rslt = 0 arg_msg = "已填写辅单位2,转换率2不能为0" GOTO ext END IF IF s_mtrl.unit_sale[1] <> '' And s_mtrl.rate_sale[1] = 0 THEN rslt = 0 arg_msg = "已填写辅单位3,转换率3不能为0" GOTO ext END IF IF s_mtrl.unit_buy[1] = '' THEN s_mtrl.rate_buy[1] = 0 IF s_mtrl.unit_scll[1] = '' THEN s_mtrl.rate_scll[1] = 0 IF s_mtrl.unit_sale[1] = '' THEN s_mtrl.rate_sale[1] = 0 //检查配置设置 IF s_mtrl.statusflag[1] = 1 And s_mtrl.statustype[1] = 0 THEN arg_msg = sys_option_change_status+' 类型为严格选择,必须选定一个待选类别' rslt = 0 GOTO ext END IF IF s_mtrl.woodcodeflag[1] = 1 And s_mtrl.woodcodetype[1] = 0 THEN arg_msg = sys_option_change_woodcode+' 类型为严格选择,必须选定一个待选类别' rslt = 0 GOTO ext END IF IF s_mtrl.statusflag[1] = 4 And s_mtrl.statustype[1] = 0 THEN arg_msg = sys_option_change_status+' 类型为部件选配,必须选定一个待选类别' rslt = 0 GOTO ext END IF IF s_mtrl.woodcodeflag[1] = 4 And s_mtrl.woodcodetype[1] = 0 THEN arg_msg = sys_option_change_woodcode+' 类型为部件选配,必须选定一个待选类别' rslt = 0 GOTO ext END IF IF s_mtrl.pcodeflag[1] = 1 And s_mtrl.pcodetype[1] = 0 THEN arg_msg = sys_option_change_pcode+' 类型为严格选择,必须选定一个待选类别' rslt = 0 GOTO ext END IF //检查数量和辅数关系设置 IF s_mtrl.ifcheckaddqty[1] = 0 And s_mtrl.strcheckaddqty[1] <> '' THEN s_mtrl.ifcheckaddqty[1] = 1 //IF IsNull(s_mtrl.ifcheckaddqty[1]) THEN s_mtrl.ifcheckaddqty[1] = 0 //IF IsNull(s_mtrl.strcheckaddqty[1]) THEN s_mtrl.strcheckaddqty[1] ='' IF s_mtrl.statusflag[1] <> 4 THEN s_mtrl.status_check[1] = 0 IF s_mtrl.woodcodeflag[1] <> 4 THEN s_mtrl.woodcode_check[1] = 0 IF s_mtrl.pcodeflag[1] <> 4 THEN s_mtrl.pcode_check[1] = 0 ////////////////////////////////////////////// //开始区分:新建/更新 处理 IF mtrlid = 0 THEN //新建 ls_newid = f_sys_scidentity(0,"u_mtrldef","mtrlid",arg_msg,if_getid_ture,commit_transaction) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_mtrldef (mtrlid, mtrlcode, mtrlname, mtrltype, mtrlsectype, mtrlmode, Mtrlorigin, unit, lspacklimit, LMsaleprice, lmbuyprice, dscrp, Mtrlprp, MaxQTY, MinQTY, ctokg, isuse, iflimitprice, packqty, prdpackcode, mtrltypeid, handtype, barcode, mtrlkind, net_weight, gross_weight, cubage, mtrlengname, zxmtrlmode, unit_scll, unit_buy, rate_buy, rate_scll, rate_sale, unit_sale, colorprp, scllflag, opdate, opemp, taskrate, taskaddqty, ifautoscll, fklevel, u_mtrldef.dftmtrlcost, u_mtrldef.dftempcost, u_mtrldef.wfjgcost, u_mtrldef.dftsccost, u_mtrldef.dftglcost, u_mtrldef.othercost, u_mtrldef.salerate, u_mtrldef.uprate, u_mtrldef.upqty, u_mtrldef.upsalerate, u_mtrldef.upsaleqty, u_mtrldef.upscllrate, u_mtrldef.upscllqty, u_mtrldef.dftsptid, u_mtrldef.mrp_unit, ifcustom, statusflag, woodcodeflag, pcodeflag, statustype, woodcodetype, pcodetype, status_check, woodcode_check, pcode_check, configcodetype, configcode, configname, mtrlcolor, status_config, woodcode_config, pcode_config, issuliao, inprice_mode, ifpacktype, ifcheckaddqty, strcheckaddqty, ifautoscll_saletask, strcheck_digit, status_default, woodcode_default, pcode_default, priceformula, qtyformula, subid, subid_sale, subid_cost, subid_tsale, subid_scll, subid_py, subid_pk, subid_kf, scllunit, buyunit, saleunit, wfjgunit, saledec, buydec, sclldec, wfjgdec, lljg) VALUES (:ls_newid, :s_mtrl.mtrlcode[1], :s_mtrl.mtrlname[1], :s_mtrl.mtrltype[1], :s_mtrl.mtrlsectype[1], :s_mtrl.mtrlmode[1], :s_mtrl.Mtrlorigin[1], :s_mtrl.unit[1], :s_mtrl.lspacklimit[1], :s_mtrl.LMsaleprice[1], :s_mtrl.lmbuyprice[1], :s_mtrl.dscrp[1], :s_mtrl.Mtrlprp[1], :s_mtrl.MaxQTY[1], :s_mtrl.MinQTY[1], :s_mtrl.ctokg[1], :s_mtrl.isuse[1], :s_mtrl.iflimitprice[1], :s_mtrl.packqty[1], :s_mtrl.prdpackcode[1], :s_mtrl.mtrltypeid[1], :s_mtrl.handtype[1], :s_mtrl.barcode[1], :s_mtrl.mtrlkind[1], :s_mtrl.net_weight[1], :s_mtrl.gross_weight[1], :s_mtrl.cubage[1], :s_mtrl.mtrlengname[1], :s_mtrl.zxmtrlmode[1], :s_mtrl.unit_scll[1], :s_mtrl.unit_buy[1], :s_mtrl.rate_buy[1], :s_mtrl.rate_scll[1], :s_mtrl.rate_sale[1], :s_mtrl.unit_sale[1], :s_mtrl.colorprp[1], :s_mtrl.scllflag[1], :server_dt, :publ_operator, :s_mtrl.taskrate[1], :s_mtrl.taskaddqty[1], :s_mtrl.ifautoscll[1], :s_mtrl.fklevel[1], :s_mtrl.dftmtrlcost[1], :s_mtrl.dftempcost[1], :s_mtrl.wfjgcost[1], :s_mtrl.dftsccost[1], :s_mtrl.dftglcost[1], :s_mtrl.othercost[1], :s_mtrl.salerate[1], :s_mtrl.uprate[1], :s_mtrl.upqty[1], :s_mtrl.upsalerate[1], :s_mtrl.upsaleqty[1], :s_mtrl.upscllrate[1], :s_mtrl.upscllqty[1], :s_mtrl.dftsptid[1], :s_mtrl.mrp_unit[1], :s_mtrl.ifcustom[1], :s_mtrl.statusflag[1], :s_mtrl.woodcodeflag[1], :s_mtrl.pcodeflag[1], :s_mtrl.statustype[1], :s_mtrl.woodcodetype[1], :s_mtrl.pcodetype[1], :s_mtrl.status_check[1], :s_mtrl.woodcode_check[1], :s_mtrl.pcode_check[1], :s_mtrl.configcodetype[1], :s_mtrl.configcode[1], :s_mtrl.configname[1], :s_mtrl.mtrlcolor[1], :s_mtrl.status_config[1], :s_mtrl.woodcode_config[1], :s_mtrl.pcode_config[1], :s_mtrl.issuliao[1], :s_mtrl.inprice_mode[1], :s_mtrl.ifpacktype[1], :s_mtrl.ifcheckaddqty[1], :s_mtrl.strcheckaddqty[1], :s_mtrl.ifautoscll_saletask[1], :s_mtrl.strcheck_digit[1], :s_mtrl.status_default[1], :s_mtrl.woodcode_default[1], :s_mtrl.pcode_default[1], :s_mtrl.priceformula[1], :s_mtrl.qtyformula[1], :s_mtrl.subid[1], :s_mtrl.subid_sale[1], :s_mtrl.subid_cost[1], :s_mtrl.subid_tsale[1], :s_mtrl.subid_scll[1], :s_mtrl.subid_py[1], :s_mtrl.subid_pk[1], :s_mtrl.subid_kf[1], :s_mtrl.scllunit[1], :s_mtrl.buyunit[1], :s_mtrl.saleunit[1], :s_mtrl.wfjgunit[1], :s_mtrl.saledec[1], :s_mtrl.buydec[1], :s_mtrl.sclldec[1], :s_mtrl.wfjgdec[1], :s_mtrl.lljg[1]) Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_mtrldef') > 0 THEN arg_msg = '插入操作失败,关键字物料ID重复' ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_u_mtrldef') > 0 THEN arg_msg = '插入操作失败,物料编码重复' ELSEIF Pos(Lower(commit_transaction.SQLErrText),'i_mtrlname') > 0 THEN arg_msg = '插入操作失败,物料名称重复' ELSE arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF //系统选项控制, 自动插入0库存 IF sys_option_add0mtrlware = 1 THEN FOR i = 1 To UpperBound(s_mtrl.storageid) IF s_mtrl.storageid[i] > 0 THEN IF f_insert_0_mtrlware(ls_mtrlwareid,ls_newid,s_mtrl.mtrlcode[1],s_mtrl.storageid[i],0,'','','','',0,arg_msg) = 0 THEN rslt = 0 mtrlid = 0 p_reset( ) GOTO ext END IF END IF NEXT END IF IF p_insert_maxminqty(ls_newid,'','','',arg_msg,False) = 0 THEN rslt = 0 GOTO ext END IF //读取新mtrlid mtrlid = ls_newid uo_mtrlid = mtrlid ELSE //////////////////////////////////////////////// //更新 UPDATE u_mtrldef SET mtrlcode = :s_mtrl.mtrlcode[1], mtrlname = :s_mtrl.mtrlname[1], mtrltype = :s_mtrl.mtrltype[1], mtrlsectype = :s_mtrl.mtrlsectype[1], mtrlmode = :s_mtrl.mtrlmode[1], Mtrlorigin = :s_mtrl.mtrlorigin[1], unit = :s_mtrl.unit[1], lspacklimit = :s_mtrl.lspacklimit[1], LMsaleprice = :s_mtrl.LMsaleprice[1], lmbuyprice = :s_mtrl.lmbuyprice[1], dscrp = :s_mtrl.dscrp[1], Mtrlprp = :s_mtrl.Mtrlprp[1], MaxQTY = :s_mtrl.MaxQTY[1], MinQTY = :s_mtrl.MinQTY[1], ctokg = :s_mtrl.ctokg[1], isuse = :s_mtrl.isuse[1], iflimitprice = :s_mtrl.iflimitprice[1], packqty = :s_mtrl.packqty[1], prdpackcode = :s_mtrl.prdpackcode[1], mtrltypeid = :s_mtrl.mtrltypeid[1], handtype = :s_mtrl.handtype[1], barcode = :s_mtrl.barcode[1], mtrlkind = :s_mtrl.mtrlkind[1], net_weight = :s_mtrl.net_weight[1], gross_weight = :s_mtrl.gross_weight[1], cubage = :s_mtrl.cubage[1], mtrlengname = :s_mtrl.mtrlengname[1], zxmtrlmode = :s_mtrl.zxmtrlmode[1], unit_scll = :s_mtrl.unit_scll[1], unit_buy = :s_mtrl.unit_buy[1], rate_buy = :s_mtrl.rate_buy[1], rate_scll = :s_mtrl.rate_scll[1], rate_sale = :s_mtrl.rate_sale[1], unit_sale = :s_mtrl.unit_sale[1], colorprp = :s_mtrl.colorprp[1], scllflag = :s_mtrl.scllflag[1], taskrate = :s_mtrl.taskrate[1], taskaddqty = :s_mtrl.taskaddqty[1], ifautoscll = :s_mtrl.ifautoscll[1], fklevel = :s_mtrl.fklevel[1], dftmtrlcost = :s_mtrl.dftmtrlcost[1], dftempcost = :s_mtrl.dftempcost[1], wfjgcost = :s_mtrl.wfjgcost[1], dftsccost = :s_mtrl.dftsccost[1], dftglcost = :s_mtrl.dftglcost[1], othercost = :s_mtrl.othercost[1], salerate = :s_mtrl.salerate[1], uprate = :s_mtrl.uprate[1], upqty = :s_mtrl.upqty[1], upsalerate = :s_mtrl.upsalerate[1], upsaleqty = :s_mtrl.upsaleqty[1], upscllrate = :s_mtrl.upscllrate[1], upscllqty = :s_mtrl.upscllqty[1], dftsptid = :s_mtrl.dftsptid[1], mrp_unit = :s_mtrl.mrp_unit[1], ifcustom = :s_mtrl.ifcustom[1], statusflag = :s_mtrl.statusflag[1], woodcodeflag = :s_mtrl.woodcodeflag[1], pcodeflag = :s_mtrl.pcodeflag[1], statustype = :s_mtrl.statustype[1], woodcodetype = :s_mtrl.woodcodetype[1], pcodetype = :s_mtrl.pcodetype[1], status_check = :s_mtrl.status_check[1], woodcode_check = :s_mtrl.woodcode_check[1], pcode_check = :s_mtrl.pcode_check[1], configcodetype = :s_mtrl.configcodetype[1], configcode = :s_mtrl.configcode[1], configname = :s_mtrl.configname[1], mtrlcolor = :s_mtrl.mtrlcolor[1], status_config = :s_mtrl.status_config[1], woodcode_config = :s_mtrl.woodcode_config[1], pcode_config = :s_mtrl.pcode_config[1], issuliao = :s_mtrl.issuliao[1], inprice_mode = :s_mtrl.inprice_mode[1], ifpacktype = :s_mtrl.ifpacktype[1], ifcheckaddqty = :s_mtrl.ifcheckaddqty[1], strcheckaddqty = :s_mtrl.strcheckaddqty[1], ifautoscll_saletask = :s_mtrl.ifautoscll_saletask[1], strcheck_digit =:s_mtrl.strcheck_digit[1], status_default =:s_mtrl.status_default[1], woodcode_default =:s_mtrl.woodcode_default[1], pcode_default =:s_mtrl.pcode_default[1], priceformula = :s_mtrl.priceformula[1], qtyformula = :s_mtrl.qtyformula[1], opdate= :server_dt, opemp=:publ_operator, scllunit = :s_mtrl.scllunit[1], buyunit = :s_mtrl.buyunit[1], saleunit = :s_mtrl.saleunit[1], wfjgunit = :s_mtrl.wfjgunit[1], saledec = :s_mtrl.saledec[1], buydec = :s_mtrl.buydec[1], sclldec = :s_mtrl.sclldec[1], wfjgdec = :s_mtrl.wfjgdec[1], lljg = :s_mtrl.lljg[1] Where mtrlid = :mtrlid Using commit_transaction; IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'pk_u_mtrldef') > 0 THEN arg_msg = '插入操作失败,关键字物料ID重复' ELSEIF Pos(Lower(commit_transaction.SQLErrText),'ix_u_mtrldef') > 0 THEN arg_msg = '插入操作失败,物料编码重复' ELSEIF Pos(Lower(commit_transaction.SQLErrText),'i_mtrlname') > 0 THEN arg_msg = '插入操作失败,物料名称重复' ELSE arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText END IF GOTO ext END IF END IF uo_mtrlid = mtrlid IF p_insert_storage(mtrlid, s_mtrl.storageid,s_mtrl.storageid_dft,False,arg_msg ) = 0 THEN rslt = 0 GOTO ext END IF IF uof_update_configure2(mtrlid,s_configure2,FALSE,arg_msg) = 0 THEN rslt = 0 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 arg_msg = '物料/产品,'+ arg_msg RETURN rslt end function public function integer newbegin (long arg_mtrlid);long rslt = 1 it_newbegin =true it_updatebegin =false mtrlid = arg_mtrlid return rslt end function public function integer updatebegin (long arg_mtrlid, ref string arg_msg);long rslt=1 if arg_mtrlid<=0 then rslt=0 arg_msg = '错误物料唯一码' goto ext end if rslt=p_getinfo(arg_mtrlid,arg_msg) if rslt=0 then goto ext mtrlid=arg_mtrlid it_newbegin=false it_updatebegin=true ext: if rslt=0 then p_reset() arg_msg = '物料/产品,'+ arg_msg return rslt end function public function integer p_delpic (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 DELETE FROM u_mtrlpic Where mtrlid = :arg_mtrlid using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '删除产品图片失败,原因:'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF ext: if rslt = 0 then rollback using commit_transaction; elseif rslt = 1 and arg_ifcommit then commit using commit_transaction; end if arg_msg = '物料/产品,'+ arg_msg return rslt end function public function integer p_del_storage (long arg_mtrlid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1 DELETE FROM u_mtrl_storage Where mtrlid = :arg_mtrlid using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN arg_msg = '删除物料存放仓位失败,原因:'+commit_transaction.SQLErrText rslt = 0 GOTO ext END IF ext: if rslt = 0 then rollback using commit_transaction; elseif rslt = 1 and arg_ifcommit then commit using commit_transaction; end if arg_msg = '物料/产品,'+ arg_msg return rslt end function public function integer del (long arg_mtrlid, string arg_mtrlcode, ref string arg_msg, boolean arg_ifcommit); Int rslt = 1 Long ls_long IF arg_mtrlid = 0 THEN rslt = 0 arg_msg = "没有删除对象,操作取消" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_inwaremx Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于仓库进仓,不可以删除!" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_mtrlware Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于仓库库存,不可以删除!" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_outwaremx Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于仓库出仓,不可以删除!" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_quotemx Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于报价单,不可以删除,请先删除报价单中的对应资料。" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_saletaskmx Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于销售订单,不可以删除,请先删除销售订单中的对应资料。" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_buytaskmx Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于采购订单,不可以删除,请先删除采购订单中的对应资料。" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_sale_price_mx Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于价格表,不可以现在删除,请先删除价格表中的对应资料。" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_sale_price_mx Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于价格表,不可以现在删除,请先删除价格表中的对应资料。" GOTO ext END IF ///外协 ls_long = 0 SELECT count(*) INTO :ls_long FROM ow_wfjgmx_in_aft Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于外协进仓单,不可以现在删除,请先删除外协进仓单中的对应资料。" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM ow_wfjgmx_in_bef Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于外协进仓单,不可以现在删除,请先删除外协进仓单中的对应资料。" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM ow_wfjgmx_out Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于外协出仓单,不可以现在删除,请先删除外协出仓单中的对应资料。" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM ow_wfjgware Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于外协商库存,不可以现在删除,请先删除外协商库存的对应资料。" GOTO ext END IF ls_long = 0 SELECT count(*) INTO :ls_long FROM u_prdpf Where SonMtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "数据查询操作失败!(请重试!)" GOTO ext END IF IF ls_long > 0 THEN rslt = 0 arg_msg = "该资料已经使用于物料清单,请先删除物料清单对应资料。" GOTO ext END IF //////////// DELETE FROM u_mtrldef Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除物料操作失败"+"~n"+commit_transaction.SQLErrText GOTO ext END IF IF p_delpic(arg_mtrlid,FALSE,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF p_del_storage(arg_mtrlid,FALSE,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF IF f_setsysoplog('定义资料','物料定义资料删除,id:'+String(arg_mtrlid)+',code:'+arg_mtrlcode,arg_msg,FALSE) = 0 THEN rslt = 0 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() arg_msg = '物料/产品,'+ arg_msg RETURN rslt end function public function integer p_insert_maxminqty (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 INSERT u_mtrldef_maxminqty (mtrlid,status,woodcode,pcode) Values(:arg_mtrlid,:arg_status,:arg_woodcode,:arg_pcode) USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 if pos(lower(commit_transaction.SQLErrText),'pk_u_mtrldef_maxminqty') > 0 then arg_msg = '插入物料库存报警上下限失败!,3属性字段重复' else arg_msg = '插入物料库存报警上下限失败!>>'+commit_transaction.SQLErrText end if GOTO ext END IF ext: IF rslt = 1 AND arg_ifcommit THEN COMMIT USING commit_transaction; ELSEIF rslt = 0 THEN ROLLBACK USING commit_transaction; END IF arg_msg = '物料/产品,'+ arg_msg RETURN rslt end function public function integer p_insert_storage (long arg_mtrlid, long arg_storageid[], long arg_dft[], boolean arg_ifcommit, ref string arg_msg);Long rslt = 1 Long cnt String ls_storagestr = '' //if it_newbegin = false then // rslt = 0 // arg_msg = "非新建状态不可以提交" // goto ext //end if // cnt = 0 //检查物料 SELECT count(*) INTO :cnt FROM u_mtrldef Where mtrlid = :arg_mtrlid 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 = "错误的物料编号: "+String(s_mtrl.storageid[1]) GOTO ext END IF DELETE u_mtrl_storage Where mtrlid = :arg_mtrlid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除原物料仓库记录失败"+commit_transaction.SQLErrText GOTO ext END IF Long ls_i FOR ls_i = 1 To UpperBound(arg_storageid) //yyx20150621 cnt = 0 //检查仓库 SELECT count(*) INTO :cnt FROM u_mtrl_storage Where u_mtrl_storage.storageid = :arg_storageid[ls_i] and u_mtrl_storage.mtrlid = :arg_mtrlid Using commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,物料已有存放仓库,"+commit_transaction.sqlerrtext GOTO ext END IF IF cnt = 0 THEN INSERT INTO u_mtrl_storage (mtrlid, storageid, dft) VALUES (:arg_mtrlid, :arg_storageid[ls_i], :arg_dft[ls_i]) using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 IF Pos(Lower(commit_transaction.SQLErrText),'PK_u_mtrl_storage') > 0 THEN arg_msg = '物料指定默认仓库失败,关键字物料ID、仓库ID重复' ELSE arg_msg = "物料指定默认仓库失败,保存操作失败!"+sqlca.SQLErrText END IF GOTO ext END IF ls_storagestr = ls_storagestr +','+String(arg_storageid[ls_i]) END IF NEXT IF ls_storagestr <> '' THEN ls_storagestr = ls_storagestr+',' UPDATE u_mtrldef SET storagestr = :ls_storagestr Where mtrlid = :arg_mtrlid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新物料仓库串失败"+commit_transaction.SQLErrText GOTO ext END IF ELSE rslt = 0 arg_msg = "没有指定物料仓库" GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK Using commit_transaction; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT Using commit_transaction; END IF arg_msg = '物料/产品,'+ arg_msg RETURN rslt end function public function integer del_cmp (long arg_cmpid, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1 DELETE FROM u_mtrldef_costmx Where cmpid = :arg_cmpid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除成本运算历史明细失败' GOTO ext END IF DELETE FROM u_mtrldef_cost Where cmpid = :arg_cmpid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除成本运算历史失败' GOTO ext 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 mod_dscrp (long arg_cmpid, string arg_dscrp, ref string arg_msg, boolean arg_ifcommit);int rslt = 1 update u_mtrldef_cost set dscrp = :arg_dscrp where cmpid = :arg_cmpid using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新备注失败' GOTO ext 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 update_cost (long arg_cmpid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,ll_flag DateTime server_dt 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 UPDATE u_mtrldef SET u_mtrldef.dftmtrlcost = u_mtrldef_costmx.dftmtrlcost, u_mtrldef.dftempcost = u_mtrldef_costmx.dftempcost, u_mtrldef.dftsccost = u_mtrldef_costmx.dftsccost, u_mtrldef.dftglcost = u_mtrldef_costmx.dftglcost, u_mtrldef.planprice = u_mtrldef_costmx.dftmtrlcost + u_mtrldef_costmx.dftempcost + u_mtrldef_costmx.dftsccost + u_mtrldef_costmx.dftglcost + u_mtrldef_costmx.wfjgcost + u_mtrldef_costmx.othercost FROM u_mtrldef,u_mtrldef_costmx WHERE u_mtrldef_costmx.cmpid = :arg_cmpid AND u_mtrldef_costmx.mtrlid = u_mtrldef.mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新物料定义资料失败' GOTO ext END IF UPDATE u_mtrldef_cost SET flag = 1 , auditemp = :publ_operator, auditdate = :server_dt WHERE u_mtrldef_cost.cmpid = :arg_cmpid AND u_mtrldef_cost.flag = 0 USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新运算历史失败' GOTO ext 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 save_cost (s_mtrldef_cost arg_s_cost, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ls_newid DateTime server_dt 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 arg_s_cost.cmpid = 0 THEN ls_newid = f_sys_scidentity(0,"u_mtrldef_cost","cmpid",arg_msg,TRUE,commit_transaction) IF ls_newid <= 0 THEN rslt = 0 GOTO ext END IF INSERT INTO u_mtrldef_cost ( cmpid, dscrp, mtrltype, emptype, scformula, glformula, opemp, opdate ) VALUES ( :ls_newid, :arg_s_cost.dscrp, :arg_s_cost.mtrltype, :arg_s_cost.emptype, :arg_s_cost.scformula, :arg_s_cost.glformula, :publ_operator, :server_dt ) USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入统计历史失败" GOTO ext END IF ELSE UPDATE u_mtrldef_cost SET dscrp = :arg_s_cost.dscrp, mtrltype = :arg_s_cost.mtrltype, emptype = :arg_s_cost.emptype, glformula = :arg_s_cost.glformula, scformula = :arg_s_cost.scformula where cmpid = :arg_s_cost.cmpid USING commit_transaction ; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入统计历史失败" GOTO ext END IF END IF // //s_mtrldef_costmx s_costmx[] //Long i = 1,NO_MXCHECK //DECLARE CUR_INWAERMX CURSOR FOR // SELECT mtrlid,wfjgcost,othercost,mtrlcode // FROM u_mtrldef USING commit_transaction; //OPEN CUR_INWAERMX; //FETCH CUR_INWAERMX INTO :s_costmx[i].mtrlid,:s_costmx[i].wfjgcost,:s_costmx[i].othercost,:s_costmx[i].mtrlcode; //DO WHILE commit_transaction.SQLCode = 0 // i++ // FETCH CUR_INWAERMX INTO :s_costmx[i].mtrlid,:s_costmx[i].wfjgcost,:s_costmx[i].othercost,:s_costmx[i].mtrlcode; //LOOP //CLOSE CUR_INWAERMX; ////检验明细是否读入完整 //SELECT COUNT(*) INTO :NO_MXCHECK // FROM u_mtrldef 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 // //Open(w_sys_wait_jdt) //初始化进度条 //w_sys_wait_jdt.Show() //w_sys_wait_jdt.wf_accepttol(NO_MXCHECK) //w_sys_wait_jdt.wf_inc(0) //w_sys_wait_jdt.st_msg.Text = "正在统计..." // // //FOR i = 1 TO NO_MXCHECK // // w_sys_wait_jdt.wf_inc(i) // w_sys_wait_jdt.st_msg.Text = "正在统计:"+s_costmx[i].mtrlcode + '的物料成本、人力成本...' // // IF arg_s_cost.mtrltype = 0 THEN // SELECT dftmtrlcost // INTO :s_costmx[i].dftmtrlcost // FROM u_mtrldef // Where mtrlid = :s_costmx[i].mtrlid USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = "查询物料资料操作失败" // GOTO ext // END IF // ELSE // IF uof_pfdpf_cost(s_costmx[i].mtrlid,s_costmx[i].dftmtrlcost,1,arg_msg) = 0 THEN // rslt = 0 // GOTO ext // END IF // END IF // // IF arg_s_cost.emptype = 0 THEN // SELECT dftempcost // INTO :s_costmx[i].dftempcost // FROM u_mtrldef // Where mtrlid = :s_costmx[i].mtrlid USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = "查询物料资料操作失败" // GOTO ext // END IF // // ELSE // SELECT sum(u_sc_workprice.workqty * u_sc_workprice.workprice) // INTO :s_costmx[i].dftempcost // FROM u_sc_workprice // Where u_sc_workprice.mtrlid = :s_costmx[i].mtrlid USING commit_transaction; // IF commit_transaction.SQLCode = -1 THEN // rslt = 0 // arg_msg = "查询物料工价表操作失败" // GOTO ext // ELSEIF commit_transaction.SQLCode = 100 THEN // s_costmx[i].dftempcost = 0 // END IF // IF IsNull(s_costmx[i].dftempcost) THEN s_costmx[i].dftempcost = 0 // END IF // //NEXT // //w_sys_wait_jdt.wf_accepttol(NO_MXCHECK) //w_sys_wait_jdt.wf_inc(0) //w_sys_wait_jdt.st_msg.Text = "正在统计..." // //datastore ds_cmp //String ls_rs //Decimal ls_number //ds_cmp = CREATE datastore //ds_cmp.DataObject = "ds_cmp_qty" //ds_cmp.SetTransObject(sqlca) //ds_cmp.Retrieve() //String ls_scformula // //FOR i = 1 TO NO_MXCHECK // // w_sys_wait_jdt.wf_inc(i) // w_sys_wait_jdt.st_msg.Text = "正在统计:"+s_costmx[i].mtrlcode + '的生产成本、管理成本...' // // SELECT Top 1 Replace(:arg_s_cost.scformula,'物料成本',:s_costmx[i].dftmtrlcost) INTO:ls_scformula FROM u_user; // SELECT Top 1 Replace(:ls_scformula,'人力成本',:s_costmx[i].dftempcost) INTO:ls_scformula FROM u_user; // ds_cmp.Reset() // ds_cmp.InsertRow(0) // ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_scformula+"'") // IF ls_rs = '' THEN // ds_cmp.AcceptText() // s_costmx[i].dftsccost = ds_cmp.Object.cmp[ds_cmp.GetRow()] // ELSE // rslt = 0 // arg_msg = '生产费用计算公式非法,不能计算!'+arg_s_cost.scformula // GOTO ext // END IF // // SELECT Top 1 Replace(:arg_s_cost.glformula,'物料成本',:s_costmx[i].dftmtrlcost) INTO:ls_scformula FROM u_user; // SELECT Top 1 Replace(:ls_scformula,'人力成本',:s_costmx[i].dftempcost) INTO:ls_scformula FROM u_user; // ds_cmp.Reset() // ds_cmp.InsertRow(0) // ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_scformula+"'") // IF ls_rs = '' THEN // ds_cmp.AcceptText() // s_costmx[i].dftglcost = ds_cmp.Object.cmp[ds_cmp.GetRow()] // ELSE // rslt = 0 // arg_msg = '管理费用计算公式非法,不能计算!'+arg_s_cost.scformula // GOTO ext // END IF // // INSERT INTO u_mtrldef_costmx // ( cmpid, // mtrlid, // dftmtrlcost, // dftempcost, // dftsccost, // dftglcost, // wfjgcost, // othercost ) // VALUES ( :ls_newid, // :s_costmx[i].mtrlid, // :s_costmx[i].dftmtrlcost, // :s_costmx[i].dftempcost, // :s_costmx[i].dftsccost, // :s_costmx[i].dftglcost, // :s_costmx[i].wfjgcost, // :s_costmx[i].othercost ) USING commit_transaction; // IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = "插入统计历史明细操作失败" // GOTO ext // END IF // //NEXT ext: IF IsValid(w_sys_wait_jdt) THEN Close(w_sys_wait_jdt) END IF IF rslt = 0 THEN ROLLBACK USING commit_transaction; ELSEIF rslt = 1 AND arg_ifcommit THEN cmpid = ls_newid COMMIT USING commit_transaction; END IF RETURN rslt end function public function integer uof_pfdpf_cost (long arg_mtrlid, ref decimal arg_cost, decimal arg_sonscale, ref string arg_msg);Long ll_cnt,i,mtrlorigin,ls_newid Long rslt = 1 s_pfmx outwaremx[] String ls_msg Decimal ld_cost Long cnt SELECT mtrlorigin INTO :mtrlorigin FROM u_mtrldef Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料资料失败' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM u_PrdPF Where u_PrdPF.mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料清单失败' GOTO ext END IF IF mtrlorigin = 2 THEN String ls_mtrlcode,ls_unit ld_cost = 0 //取最新采购价 SELECT u_mtrldef.mtrlcode, u_mtrldef.unit INTO :ls_mtrlcode, :ls_unit FROM u_mtrldef Where mtrlid = :arg_mtrlid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料资料失败' GOTO ext END IF SELECT top 1 round(price * :arg_sonscale,2) INTO :ld_cost FROM v_maxprice_sptprice_dftunit Where mtrlid = :arg_mtrlid and unit = :ls_unit USING commit_transaction; IF commit_transaction.SQLCode = -1 THEN arg_msg = '查询物料:'+ls_mtrlcode+'最新采购价或最新外加工单价失败' rslt = 0 GOTO ext END IF if isnull(ld_cost) then ld_cost = 0 arg_cost = arg_cost + ld_cost END IF IF cnt = 0 THEN GOTO ext ll_cnt = 1 DECLARE cur_outwaremx CURSOR FOR SELECT u_PrdPF.SonMtrlid,u_PrdPF.sonscale,u_mtrldef.mtrlorigin FROM u_PrdPF,u_mtrldef WHERE ( u_PrdPF.mtrlid = :arg_mtrlid ) AND ( u_PrdPF.mtrlid = u_mtrldef.mtrlid ) USING commit_transaction; OPEN cur_outwaremx; FETCH cur_outwaremx INTO :outwaremx[ll_cnt].mtrlid,:outwaremx[ll_cnt].sonscale,:outwaremx[ll_cnt].mtrlorigin; DO WHILE commit_transaction.SQLCode = 0 ll_cnt++ FETCH cur_outwaremx INTO :outwaremx[ll_cnt].mtrlid,:outwaremx[ll_cnt].sonscale,:outwaremx[ll_cnt].mtrlorigin; LOOP CLOSE cur_outwaremx; ll_cnt = ll_cnt - 1 FOR i = 1 TO ll_cnt IF uof_pfdpf_cost( outwaremx[i].mtrlid,arg_cost,outwaremx[i].sonscale * arg_sonscale,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF NEXT ext: RETURN rslt end function public function integer uof_cml_cost (s_mtrldef_cost arg_s_cost, s_mtrldef_costmx arg_s_costmx, ref string arg_msg, boolean arg_ifcommit);Long rslt = 1 Long i = 1,NO_MXCHECK FOR i = 1 TO UpperBound(arg_s_costmx.mtrlid) SELECT mtrlid,wfjgcost,othercost,mtrlcode INTO :arg_s_costmx.mtrlid[i],:arg_s_costmx.wfjgcost[i],:arg_s_costmx.othercost[i],:arg_s_costmx.mtrlcode[i] FROM u_mtrldef Where u_mtrldef.mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction; NEXT NO_MXCHECK = UpperBound(arg_s_costmx.mtrlid) Open(w_sys_wait_jdt) //初始化进度条 w_sys_wait_jdt.Show() w_sys_wait_jdt.wf_accepttol(NO_MXCHECK) w_sys_wait_jdt.wf_inc(0) w_sys_wait_jdt.st_msg.Text = "正在统计..." FOR i = 1 TO NO_MXCHECK w_sys_wait_jdt.wf_inc(i) w_sys_wait_jdt.st_msg.Text = "正在统计:"+arg_s_costmx.mtrlcode[i] + '的物料成本、人力成本...' IF arg_s_cost.mtrltype = 0 THEN SELECT dftmtrlcost INTO :arg_s_costmx.dftmtrlcost[i] FROM u_mtrldef Where mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询物料资料操作失败" GOTO ext END IF ELSE IF uof_pfdpf_cost(arg_s_costmx.mtrlid[i],arg_s_costmx.dftmtrlcost[i],1,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF END IF IF arg_s_cost.emptype = 0 THEN SELECT dftempcost INTO :arg_s_costmx.dftempcost[i] FROM u_mtrldef Where mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询物料资料操作失败" GOTO ext END IF ELSE SELECT sum(u_sc_workprice.workqty * u_sc_workprice.workprice) INTO :arg_s_costmx.dftempcost[i] FROM u_sc_workprice Where u_sc_workprice.mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction; IF commit_transaction.SQLCode = -1 THEN rslt = 0 arg_msg = "查询物料工价表操作失败" GOTO ext ELSEIF commit_transaction.SQLCode = 100 THEN arg_s_costmx.dftempcost[i] = 0 END IF IF IsNull(arg_s_costmx.dftempcost[i]) THEN arg_s_costmx.dftempcost[i] = 0 END IF NEXT w_sys_wait_jdt.wf_accepttol(NO_MXCHECK) w_sys_wait_jdt.wf_inc(0) w_sys_wait_jdt.st_msg.Text = "正在统计..." datastore ds_cmp String ls_rs Decimal ls_number ds_cmp = CREATE datastore ds_cmp.DataObject = "ds_cmp_qty" ds_cmp.SetTransObject(sqlca) ds_cmp.Retrieve() String ls_scformula FOR i = 1 TO NO_MXCHECK w_sys_wait_jdt.wf_inc(i) w_sys_wait_jdt.st_msg.Text = "正在统计:"+arg_s_costmx.mtrlcode[i] + '的生产成本、管理成本...' SELECT Top 1 Replace(:arg_s_cost.scformula,'材料成本',:arg_s_costmx.dftmtrlcost[i]) INTO:ls_scformula FROM u_user USING commit_transaction; SELECT Top 1 Replace(:ls_scformula,'人力成本',:arg_s_costmx.dftempcost[i]) INTO:ls_scformula FROM u_user USING commit_transaction; ds_cmp.Reset() ds_cmp.InsertRow(0) ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_scformula+"'") IF ls_rs = '' THEN ds_cmp.AcceptText() arg_s_costmx.dftsccost[i] = ds_cmp.Object.cmp[ds_cmp.GetRow()] ELSE rslt = 0 arg_msg = '生产费用计算公式非法,不能计算!'+arg_s_cost.scformula GOTO ext END IF SELECT Top 1 Replace(:arg_s_cost.glformula,'材料成本',:arg_s_costmx.dftmtrlcost[i]) INTO:ls_scformula FROM u_user USING commit_transaction; SELECT Top 1 Replace(:ls_scformula,'人力成本',:arg_s_costmx.dftempcost[i]) INTO:ls_scformula FROM u_user USING commit_transaction; ds_cmp.Reset() ds_cmp.InsertRow(0) ls_rs = ds_cmp.Modify("cmp.Expression='"+ ls_scformula+"'") IF ls_rs = '' THEN ds_cmp.AcceptText() arg_s_costmx.dftglcost[i] = ds_cmp.Object.cmp[ds_cmp.GetRow()] ELSE rslt = 0 arg_msg = '管理费用计算公式非法,不能计算!'+arg_s_cost.scformula GOTO ext END IF DELETE FROM u_mtrldef_costmx Where cmpid = :arg_s_cost.cmpid and mtrlid = :arg_s_costmx.mtrlid[i] USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "删除统计历史明细操作失败" GOTO ext END IF INSERT INTO u_mtrldef_costmx ( cmpid, mtrlid, dftmtrlcost, dftempcost, dftsccost, dftglcost, wfjgcost, othercost ) VALUES ( :arg_s_cost.cmpid, :arg_s_costmx.mtrlid[i], :arg_s_costmx.dftmtrlcost[i], :arg_s_costmx.dftempcost[i], :arg_s_costmx.dftsccost[i], :arg_s_costmx.dftglcost[i], :arg_s_costmx.wfjgcost[i], :arg_s_costmx.othercost[i] ) USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "插入统计历史明细操作失败" GOTO ext END IF NEXT UPDATE u_mtrldef_cost SET cmpdate = getdate() Where cmpid = :arg_s_cost.cmpid USING commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "更新统计时间操作失败" GOTO ext END IF ext: IF IsValid(w_sys_wait_jdt) THEN Close(w_sys_wait_jdt) END IF 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 uof_update_configure2 (long arg_mtrlid, s_mtrl_configure_array arg_s_config, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1 IF arg_mtrlid <= 0 THEN rslt = 0 arg_msg = '错误的物料ID' GOTO ext END IF DELETE FROM u_mtrl_configure2 Where mtrlid = :arg_mtrlid ; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除物料包件配置资料操作失败:'+sqlca.SQLErrText GOTO ext END IF Long ls_i String ls_pzcode,ls_name,ls_pzcodemx,ls_namemx Long ls_printid,ls_pzid Long ll_pzflag = 0 FOR ls_i = 1 TO UpperBound(arg_s_config.pzid) ls_pzid = arg_s_config.pzid[ls_i] ls_pzcode = arg_s_config.pzcode[ls_i] ls_name = arg_s_config.pzname[ls_i] ls_pzcodemx = arg_s_config.pzcodemx[ls_i] ls_namemx = arg_s_config.pznamemx[ls_i] ls_printid = ls_i INSERT INTO u_mtrl_configure2 (mtrlid, pzid, printid, pzcode, pzname, pzcodemx, pznamemx) Values(:arg_mtrlid,:ls_pzid,:ls_printid,:ls_pzcode,:ls_name,:ls_pzcodemx,:ls_namemx) USING sqlca; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '插入物料包件配置资料操作失败:'+sqlca.SQLErrText GOTO ext END IF NEXT ext: IF rslt = 0 THEN ROLLBACK ; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT ; END IF RETURN rslt end function public function integer uof_add_mtrl (s_mtrldef_array arg_s_mtrl, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);s_mtrl = arg_s_mtrl return save(arg_ifcommit, arg_msg) end function public function integer save_pack (ref s_mtrldef_pack arg_pack, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 Long ll_printid IF arg_pack.printid = 0 THEN SELECT isnull(max(printid),0) INTO :ll_printid FROM u_mtrldef_pack Where mtrlid = :arg_pack.mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询包件序号失败,' + sqlca.SQLErrText GOTO ext END IF ll_printid++ INSERT INTO u_mtrldef_pack(mtrlid, printid, packcode, packname, packnum, net_weight, gross_weight, cubage) VALUES(:arg_pack.mtrlid, :ll_printid, :arg_pack.packcode, :arg_pack.packname, :arg_pack.packnum, :arg_pack.net_weight, :arg_pack.gross_weight, :arg_pack.cubage); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '新增包件定义失败,' + sqlca.SQLErrText GOTO ext END IF ELSE UPDATE u_mtrldef_pack SET packcode = :arg_pack.packcode, packname = :arg_pack.packname, packnum = :arg_pack.packnum, net_weight = :arg_pack.net_weight, gross_weight = :arg_pack.gross_weight, cubage = :arg_pack.cubage WHERE mtrlid = :arg_pack.mtrlid And printid = :arg_pack.printid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新包件定义失败,' + sqlca.SQLErrText GOTO ext END IF END IF ext: IF arg_ifcommit THEN IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF END IF RETURN rslt end function public function integer del_pack (long arg_mtrlid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1 DELETE FROM u_mtrldef_pack WHERE mtrlid = :arg_mtrlid And printid = :arg_printid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除包件定义失败,' + sqlca.SQLErrText GOTO ext END IF IF sqlca.SQLNRows = 0 THEN rslt = 0 arg_msg = '包件定义已经被其它人删除' GOTO ext END IF ext: IF arg_ifcommit THEN IF rslt = 1 THEN COMMIT; ELSE ROLLBACK; END IF END IF RETURN rslt end function public function integer uof_pfdpf_empcost (long arg_mtrlid, ref decimal arg_cost, decimal arg_sonscale, ref string arg_msg);Long ll_cnt,i,mtrlorigin Long rslt = 1 s_pfmx outwaremx[] String ls_msg Decimal ld_cost //SELECT mtrlorigin // INTO :mtrlorigin // FROM u_mtrldef // Where mtrlid = :arg_mtrlid Using commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询物料资料失败' // GOTO ext //END IF //ll_cnt = 0 //SELECT count(*) // INTO :ll_cnt // FROM u_PrdPF // Where u_PrdPF.mtrlid = :arg_mtrlid Using commit_transaction; //IF commit_transaction.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询物料清单失败' // GOTO ext //END IF //IF mtrlorigin = 2 THEN ld_cost = 0 SELECT sum(u_sc_workprice.workqty * u_sc_workprice.workprice * :arg_sonscale) INTO :ld_cost FROM u_sc_workprice Where u_sc_workprice.mtrlid = :arg_mtrlid Using commit_transaction; IF commit_transaction.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询物料工价表操作失败" GOTO ext END IF IF IsNull(ld_cost) THEN ld_cost = 0 arg_cost = arg_cost + ld_cost //END IF //IF ll_cnt = 0 THEN GOTO ext ll_cnt = 1 DECLARE cur_pfdpf CURSOR FOR SELECT u_PrdPF.SonMtrlid,u_PrdPF.sonscale,u_mtrldef.mtrlorigin FROM u_PrdPF,u_mtrldef WHERE ( u_PrdPF.mtrlid = :arg_mtrlid ) AND ( u_PrdPF.mtrlid = u_mtrldef.mtrlid ) Using commit_transaction; OPEN cur_pfdpf; FETCH cur_pfdpf INTO :outwaremx[ll_cnt].mtrlid,:outwaremx[ll_cnt].sonscale,:outwaremx[ll_cnt].mtrlorigin; DO WHILE commit_transaction.SQLCode = 0 ll_cnt++ FETCH cur_pfdpf Into :outwaremx[ll_cnt].mtrlid,:outwaremx[ll_cnt].sonscale,:outwaremx[ll_cnt].mtrlorigin; LOOP CLOSE cur_pfdpf; ll_cnt = ll_cnt - 1 FOR i = 1 To ll_cnt IF uof_pfdpf_empcost( outwaremx[i].mtrlid,arg_cost,outwaremx[i].sonscale * arg_sonscale,arg_msg) = 0 THEN rslt = 0 GOTO ext END IF NEXT ext: RETURN rslt end function on uo_mtrldef.create call super::create TriggerEvent( this, "constructor" ) end on on uo_mtrldef.destroy TriggerEvent( this, "destructor" ) call super::destroy end on