$PBExportHeader$uo_spt_price.sru forward global type uo_spt_price from nonvisualobject end type end forward global type uo_spt_price from nonvisualobject end type global uo_spt_price uo_spt_price type variables Int uo_option_buyprice_ifbj int uo_option_sptprice_effdate int uo_option_zero_update_sptprice end variables forward prototypes public function integer uof_getmtrlname (long arg_sptid, long arg_mtrlid, ref string arg_sptmtrlname, ref string arg_msg) public function integer uof_getmtrlsptprice (long arg_moneyid, long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, datetime arg_billdate, ref string arg_msg) public function integer uf_getmtrlsptprice_ch (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref decimal arg_price, ref decimal arg_rate, ref datetime arg_lastdate, ref string arg_msg) public function integer uof_check_price (integer arg_thflag, long arg_sptid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, long arg_moneyid, decimal arg_price, datetime arg_billdate, ref string arg_msg) public function integer uof_del_sdsptprice (long arg_mtrlid, long arg_moneyid, long arg_sptid, string arg_unit, datetime arg_opdate, long arg_printid, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, decimal arg_price, decimal arg_zqrate, boolean arg_ifcommit, ref string arg_msg) public function integer uof_del_sptprice_auto (long arg_sptid, long arg_inwareid, long arg_printid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, string arg_unit, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg) public function integer uof_update_sptmtrlname (long arg_sptid, long arg_mtrlid, string arg_sptmtrlname, boolean arg_ifcommit, ref string arg_msg) public function integer uof_check_limitprice (integer arg_thflag, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, decimal arg_price, ref string arg_msg) public function integer uof_getnewprice (long arg_sptid, long arg_moneyid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref datetime arg_opdate, ref string arg_msg) public function integer uof_sptmtrlname_set (long arg_sptid, long arg_mtrlid, string arg_sptmtrlname, boolean arg_ifcommit, ref string arg_msg) public function integer uof_sptmtrlname_get (long arg_sptid, long arg_mtrlid, ref string arg_sptmtrlname, ref string arg_msg) public function integer uof_sptmtrlprice_get (long arg_sptid, long arg_moneyid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, datetime arg_effdate, ref decimal arg_fprice, ref decimal arg_zqrate, ref decimal arg_rate, ref datetime arg_billdate, ref string arg_msg) public function integer uof_sptmtrlprice_delete (long arg_inwareid, long arg_printid, long arg_sptid, long arg_moneyid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, string arg_unit, boolean arg_ifcommit, ref string arg_msg) public function integer uof_getmtrlsptbuybargainprice (long arg_moneyid, long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref long arg_buybargainid, ref long arg_buybargainprintid, ref string arg_buybargaincode, ref decimal arg_price, ref decimal arg_rebate, ref string arg_msg) public function integer uof_getmtrlsptbuybargain (long arg_moneyid, long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref long arg_buybargainid, ref long arg_buybargainprintid, ref string arg_buybargaincode, ref string arg_msg) public function integer uof_sptmtrlprice_set (integer arg_ifth, integer arg_ifbj, long arg_sptid, long arg_moneyid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, datetime arg_effdate, datetime arg_effdate_end, decimal arg_fprice, decimal arg_zqrate, decimal arg_rate, decimal arg_wareprice, decimal arg_wareprice_notax, integer arg_billtype, integer arg_buildtype, long arg_inwareid, string arg_inwarecode, long arg_printid, datetime arg_indate, string arg_dscrp, boolean arg_ifcommit, ref string arg_msg) public function integer uof_update_sptprice (integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, long arg_inwareid, decimal arg_fprice, decimal arg_zqrate, decimal arg_rate, decimal arg_wareprice, decimal arg_wareprice_notax, datetime arg_indate, string arg_inwarecode, long arg_flag, string arg_dscrp, long arg_printid, integer arg_billtype, long arg_moneyid, datetime arg_effdate, datetime arg_effdate_end, boolean arg_ifcommit, ref string arg_msg) public function integer uof_getmtrlsptbuyareaprice (long arg_moneyid, long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref long arg_buybargainid, ref long arg_buybargainprintid, ref string arg_buybargaincode, ref decimal arg_price, ref decimal arg_otherprice, ref decimal arg_areaqty, ref string arg_msg) end prototypes public function integer uof_getmtrlname (long arg_sptid, long arg_mtrlid, ref string arg_sptmtrlname, ref string arg_msg); return uof_sptmtrlname_get(arg_sptid, arg_mtrlid, arg_sptmtrlname, arg_msg) //Long rslt = 1 //String rtn_sptmtrlname // // //SELECT sptmtrlname // INTO :rtn_sptmtrlname // FROM u_sptmtrlname // WHERE u_sptmtrlname.mtrlid = :arg_mtrlid // AND u_sptmtrlname.sptid = :arg_sptid; //IF sqlca.SQLCode = -1 THEN // rslt = 0 // arg_msg = '查询操作失败'+sqlca.SQLErrText // GOTO ext //ELSEIF sqlca.SQLCode = 100 OR IsNull(rtn_sptmtrlname) THEN // rtn_sptmtrlname = '' //END IF // //arg_sptmtrlname = rtn_sptmtrlname // //ext: // //RETURN rslt end function public function integer uof_getmtrlsptprice (long arg_moneyid, long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, datetime arg_billdate, ref string arg_msg);datetime ldt_opdate return uof_sptmtrlprice_get ( arg_sptid, arg_moneyid, arg_mtrlid, arg_unit, arg_status, arg_woodcode, arg_pcode, arg_jgdscrp, arg_billdate, arg_price, arg_zqrate, arg_rate, ldt_opdate,arg_msg) //Long rslt = 1 //Decimal rtn_price,rtn_zqrate,rtn_rate //String rtn_unit //String rtn_wareunit //Int li_iflimitprice,li_price_ifpz_buy //Int li_issuliao // //arg_status = Trim(arg_status) //arg_woodcode = Trim(arg_woodcode) //arg_pcode = Trim(arg_pcode) //arg_jgdscrp = Trim(arg_jgdscrp) // // //arg_unit = Trim(arg_unit) // //arg_billdate = DateTime(Date(arg_billdate),Time(0)) // //IF uo_option_buyprice_ifbj = -1000 THEN // arg_msg = '选项:[053]收货单取单价模式,读取初始默认值失败,操作取消!' // rslt = 0 // GOTO ext //END IF // // //IF uo_option_sptprice_effdate = -1000 THEN // arg_msg = '选项:[244]供应商报价使用生效日期,读取初始默认值失败,操作取消!' // rslt = 0 // GOTO ext //END IF // // //SELECT iflimitprice,price_ifpz_buy,issuliao INTO :li_iflimitprice,:li_price_ifpz_buy,:li_issuliao // FROM u_mtrldef // Where mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询物料限价属性失败 '+sqlca.SQLErrText // rslt = 0 // GOTO ext //END IF // //CHOOSE CASE li_price_ifpz_buy // CASE 0 // arg_status = '' // arg_woodcode = '' // arg_pcode = '' // CASE 1 // arg_pcode = '' // arg_woodcode = '' // CASE 2 // arg_status = '' // arg_pcode = '' // CASE 3 // arg_status = '' // arg_woodcode = '' // CASE 4 // arg_pcode = '' // CASE 5 // arg_status = '' // CASE 6 // arg_woodcode = '' //END CHOOSE // //IF arg_unit = '' THEN // // IF uo_option_buyprice_ifbj = 0 Or uo_option_buyprice_ifbj = 2 And li_iflimitprice = 0 THEN // SELECT top 1 fprice,zqrate,rate,unit // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit // FROM u_spt_price_mx // WHERE u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.moneyid = :arg_moneyid // Order By u_spt_price_mx.opdate Desc; // ELSE // IF uo_option_sptprice_effdate = 1 THEN // SELECT top 1 fprice,zqrate,rate,unit // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit // FROM u_spt_price_mx // WHERE u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.billtype = 2 // AND u_spt_price_mx.moneyid = :arg_moneyid // AND u_spt_price_mx.effdate <= :arg_billdate // Order By u_spt_price_mx.effdate Desc,u_spt_price_mx.opdate Desc; // ELSE // SELECT top 1 fprice,zqrate,rate,unit // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit // FROM u_spt_price_mx // WHERE u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.billtype = 2 // AND u_spt_price_mx.moneyid = :arg_moneyid // Order By u_spt_price_mx.opdate Desc; // END IF // END IF // // IF sqlca.SQLCode = -1 THEN // rslt = 0 // arg_msg = '查询价格操作失败'+sqlca.SQLErrText // GOTO ext // ELSEIF sqlca.SQLCode = 100 Or IsNull(rtn_price) THEN // rtn_zqrate = 1 // // SELECT unit,unit_buy,rate_buy // INTO :rtn_wareunit,:rtn_unit,:rtn_rate // FROM u_mtrldef // Where mtrlid = :arg_mtrlid; // // IF sqlca.SQLCode <> 0 THEN // rslt = 2 // rtn_price = 0.00 // rtn_zqrate = 1 // rtn_rate = 1 // rtn_unit = '' // arg_msg = '不存在产品资料'+sqlca.SQLErrText // GOTO ext // END IF // // IF rtn_unit = '' Or rtn_rate = 0 THEN // rtn_unit = rtn_wareunit // rtn_price = 0.00 // rtn_rate = 1 // rtn_zqrate = 1 // rslt = 2 // GOTO ext // END IF // END IF //ELSE // IF uo_option_buyprice_ifbj = 0 Or uo_option_buyprice_ifbj = 2 And li_iflimitprice = 0 THEN // //取最新价 //053 // SELECT top 1 fprice,zqrate,rate,unit // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit // FROM u_spt_price // WHERE u_spt_price.mtrlid = :arg_mtrlid // AND u_spt_price.sptid = :arg_sptid // AND u_spt_price.unit = :arg_unit // AND u_spt_price.status = :arg_status // AND u_spt_price.woodcode = :arg_woodcode // AND u_spt_price.pcode = :arg_pcode // AND u_spt_price.jgdscrp = :arg_jgdscrp // AND u_spt_price.moneyid = :arg_moneyid // Order By u_spt_price.sys_changetime Desc; // ELSE//取最新报价 // //加强为考虑合同 // IF uo_option_sptprice_effdate = 1 THEN //使用生效日期 //244 // SELECT top 1 fprice,zqrate,rate,unit // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit // FROM u_spt_price_mx // WHERE u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.billtype = 2 // AND u_spt_price_mx.unit = :arg_unit // AND u_spt_price_mx.moneyid = :arg_moneyid // AND u_spt_price_mx.effdate <= :arg_billdate // Order By u_spt_price_mx.effdate Desc,u_spt_price_mx.opdate Desc; // ELSE // SELECT top 1 fprice,zqrate,rate,unit // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit // FROM u_spt_price_mx // WHERE u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.billtype = 2 // AND u_spt_price_mx.unit = :arg_unit // AND u_spt_price_mx.moneyid = :arg_moneyid // Order By u_spt_price_mx.opdate Desc; // END IF // END IF // // IF sqlca.SQLCode = -1 THEN // rslt = 0 // arg_msg = '查询操作失败'+sqlca.SQLErrText // GOTO ext // ELSEIF sqlca.SQLCode = 100 Or IsNull(rtn_price) THEN // // if li_issuliao = 5 or li_issuliao = 8 then //纸箱 或 泡沫 特殊读价 // // f_getbaseprice_dwuse(arg_mtrlid,arg_material,ls_billcode) // // end if // // rslt = 2 // rtn_price = 0.00 // rtn_zqrate = 1 // GOTO ext // END IF // //END IF // //ext: //IF rslt <> 1 THEN // rtn_price = 0.00 // rtn_zqrate = 1 // rtn_rate = 1 //END IF // //arg_price = rtn_price //arg_zqrate = rtn_zqrate //arg_rate = rtn_rate //arg_unit = rtn_unit // // //RETURN rslt end function public function integer uf_getmtrlsptprice_ch (long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref decimal arg_price, ref decimal arg_rate, ref datetime arg_lastdate, ref string arg_msg);//datetime ldt_effdate //ldt_effdate = datetime(1900-01-01) // //decimal lde_zqrate // //decimal lde_moneyid // //return uof_sptmtrlprice_get ( arg_sptid, lde_moneyid, arg_mtrlid, arg_unit, arg_status, arg_woodcode, arg_pcode, arg_jgdscrp, ldt_effdate, arg_price, lde_zqrate, arg_rate, arg_lastdate,arg_msg) // //供应商调价,查上次价, 无用 Long rslt = 1 //Decimal rtn_price,rtn_rate //DateTime rtn_lastdate // //Int li_iflimitprice,li_price_ifpz_buy // //arg_status = Trim(arg_status) //arg_woodcode = Trim(arg_woodcode) //arg_pcode = Trim(arg_pcode) //arg_jgdscrp = Trim(arg_jgdscrp) // // //arg_unit = Trim(arg_unit) // //IF uo_option_buyprice_ifbj = -1000 THEN // arg_msg = '选项:[053]收货单取单价模式,读取初始默认值失败,操作取消!' // rslt = 0 // GOTO ext //END IF // //SELECT iflimitprice, // price_ifpz_buy // INTO :li_iflimitprice, // :li_price_ifpz_buy // FROM u_mtrldef // Where mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询物料限价属性失败 '+sqlca.SQLErrText // rslt = 0 // GOTO ext //END IF // //CHOOSE CASE li_price_ifpz_buy // CASE 0 // arg_status = '' // arg_woodcode = '' // arg_pcode = '' // CASE 1 // arg_pcode = '' // arg_woodcode = '' // CASE 2 // arg_status = '' // arg_pcode = '' // CASE 3 // arg_status = '' // arg_woodcode = '' // CASE 4 // arg_pcode = '' // CASE 5 // arg_status = '' // CASE 6 // arg_woodcode = '' //END CHOOSE // //IF arg_unit = '' THEN // rtn_price = 0.00 // rtn_rate = 1 // SetNull(rtn_lastdate) // rslt = 2 // GOTO ext //ELSE // IF uo_option_buyprice_ifbj = 0 Or uo_option_buyprice_ifbj = 2 And li_iflimitprice = 0 THEN // SELECT top 1 fprice,rate,outdate // INTO :rtn_price,:rtn_rate ,:rtn_lastdate // FROM u_spt_price_mx // WHERE u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.unit = :arg_unit // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // Order By Opdate Desc; // ELSE // SELECT top 1 fprice,rate,outdate // INTO :rtn_price,:rtn_rate ,:rtn_lastdate // FROM u_spt_price_mx // WHERE u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.unit = :arg_unit // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.billtype = 2 // Order By Opdate Desc; // END IF // // IF sqlca.SQLCode = -1 THEN // rslt = 0 // arg_msg = '查询操作失败'+sqlca.SQLErrText // GOTO ext // ELSEIF sqlca.SQLCode = 100 Or IsNull(rtn_price) THEN // rslt = 2 // rtn_price = 0.00 // rtn_rate = 1 // SetNull(rtn_lastdate) // GOTO ext // END IF // //END IF // //ext: //arg_price = rtn_price //arg_lastdate = rtn_lastdate //arg_rate = rtn_rate // RETURN rslt end function public function integer uof_check_price (integer arg_thflag, long arg_sptid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, long arg_moneyid, decimal arg_price, datetime arg_billdate, ref string arg_msg);//采购订单,采购收货,外协订单,外协收货,限价 Int rslt = 1 Long cnt String ls_sptname Decimal ld_updownprice, lde_lmbuyprice Int li_ifnocheck,li_iflimitprice,li_price_ifpz_buy IF Not f_power_ind(124,sys_msg_pow) Or sys_power_issuper THEN rslt = 1 GOTO ext END IF SELECT count(*) INTO :cnt FROM u_spt Where sptid = :arg_sptid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,供应商/加工商资料,"+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = "供应商资料错误!" GOTO ext END IF SELECT ifnocheck, name INTO :li_ifnocheck, :ls_sptname FROM u_spt Where sptid = :arg_sptid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,供应商/加工商不限价属性,"+sqlca.SQLErrText GOTO ext END IF IF li_ifnocheck = 1 THEN //供应商不限 rslt = 1 GOTO ext END IF SELECT updownprice,iflimitprice,price_ifpz_buy INTO :ld_updownprice,:li_iflimitprice,:li_price_ifpz_buy FROM u_mtrldef Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = "查询操作失败,产品限价浮动差额资料,"+sqlca.SQLErrText GOTO ext END IF IF li_iflimitprice = 0 THEN //物料不限 rslt = 1 GOTO ext end if DateTime ldt_opdate Decimal lde_zqrate, lde_rate IF uo_option_buyprice_ifbj = 0 Or uo_option_buyprice_ifbj = 2 And li_iflimitprice = 0 THEN cnt = 1 ELSE IF uo_option_sptprice_effdate = 1 THEN SELECT count(*) INTO :cnt FROM u_spt_price_changemx INNER JOIN u_spt_price_change ON u_spt_price_changemx.billid = u_spt_price_change.billid WHERE u_spt_price_changemx.mtrlid = :arg_mtrlid AND u_spt_price_changemx.status = :arg_status AND u_spt_price_changemx.woodcode = :arg_woodcode AND u_spt_price_changemx.pcode = :arg_pcode AND u_spt_price_changemx.jgdscrp = :arg_jgdscrp AND u_spt_price_changemx.unit = :arg_unit AND u_spt_price_changemx.effdate <= :arg_billdate AND u_spt_price_change.sptid = :arg_sptid AND u_spt_price_change.moneyid = :arg_moneyid And u_spt_price_change.flag = 0; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料:'+arg_mtrlcode+' '+arg_status+'单据日期前未审的供应商询价单失败, ~n'+sqlca.SQLErrText GOTO ext END IF IF cnt > 0 THEN rslt = 0 arg_msg = '查询物料:'+arg_mtrlcode+' '+arg_status+',共有'+String(cnt)+'张生效日期在本单据日期前的供应商询价单未审,请先审核' GOTO ext END IF SELECT count(*) INTO :cnt FROM u_spt_price_MX INNER JOIN u_spt ON u_spt_price_MX.sptid = u_spt.sptid WHERE u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.sptid = :arg_sptid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.billtype = 2 AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.moneyid = :arg_moneyid AND u_spt_price_mx.effdate <= :arg_billdate; ELSE SELECT count(*) INTO :cnt FROM u_spt_price_MX INNER JOIN u_spt ON u_spt_price_MX.sptid = u_spt.sptid WHERE u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.sptid = :arg_sptid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.billtype = 2 AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.moneyid = :arg_moneyid; END IF IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料:'+arg_mtrlcode+' '+arg_status+'是否有供应商询价单失败, ~n'+sqlca.SQLErrText GOTO ext END IF if cnt = 0 then rslt = 0 arg_msg = '物料:'+arg_mtrlcode+' '+arg_status+'没有供应商询价单' GOTO ext end if END IF IF uof_sptmtrlprice_get ( arg_sptid, arg_moneyid, arg_mtrlid, arg_unit, arg_status, arg_woodcode, arg_pcode, arg_jgdscrp, arg_billdate, lde_lmbuyprice, lde_zqrate, lde_rate, ldt_opdate,arg_msg) = 0 THEN rslt = 0 arg_msg = "查询产品最新价失败,"+arg_msg GOTO ext END IF IF arg_thflag = 0 THEN IF arg_price > lde_lmbuyprice + ld_updownprice THEN rslt = 0 arg_msg = '供应商:'+ls_sptname+',物料:'+arg_mtrlcode+'收货时,收货单价{'+String(arg_price,'#,##0.00##')+'} 高于收货限价{'+String( lde_lmbuyprice + ld_updownprice ,'#,##0.00##')+'}' GOTO ext END IF ELSE IF arg_price < lde_lmbuyprice - ld_updownprice THEN rslt = 0 arg_msg = '供应商:'+ls_sptname+',物料:'+arg_mtrlcode+'退货时,退货单价{'+String(arg_price,'#,##0.00##')+'} 低于收货限价{'+String(lde_lmbuyprice - ld_updownprice,'#,##0.00##')+'}' GOTO ext END IF END IF ext: RETURN rslt end function public function integer uof_del_sdsptprice (long arg_mtrlid, long arg_moneyid, long arg_sptid, string arg_unit, datetime arg_opdate, long arg_printid, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, decimal arg_price, decimal arg_zqrate, boolean arg_ifcommit, ref string arg_msg);return uof_sptmtrlprice_delete ( 0, 0, arg_sptid, arg_moneyid, arg_mtrlid, arg_status, arg_woodcode, arg_pcode, arg_jgdscrp, arg_unit, arg_ifcommit, ref arg_msg) //Int rslt = 1 //Long cnt = 0 // ////检查供应商存在否 //SELECT count(*) // INTO :cnt // FROM u_spt // Where u_spt.sptid = :arg_sptid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText // GOTO ext //END IF //IF cnt = 0 THEN // rslt = 0 // arg_msg = '供应商不存在' // GOTO ext //END IF // // ////检查商品存在否 //SELECT count(*) // INTO :cnt // FROM u_mtrldef // Where u_mtrldef.mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText // GOTO ext //END IF //IF cnt = 0 THEN // rslt = 0 // arg_msg = '物料不存在' // GOTO ext //END IF // ////删除手动添加价格 //DELETE //From u_spt_price_mx //Where u_spt_price_mx.sptid = :arg_sptid //And u_spt_price_mx.mtrlid = :arg_mtrlid //And u_spt_price_mx.opdate = :arg_opdate //And u_spt_price_mx.printid = :arg_printid //And u_spt_price_mx.moneyid = :arg_moneyid //And u_spt_price_mx.status = :arg_status //And u_spt_price_mx.woodcode = :arg_woodcode //And u_spt_price_mx.pcode = :arg_pcode //And u_spt_price_mx.jgdscrp = :arg_jgdscrp //; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询失败'+sqlca.SQLErrText // GOTO ext //END IF // ////更新最新价格表 //UPDATE u_spt_price // SET u_spt_price.price = :arg_price * :arg_zqrate, // u_spt_price.fprice = :arg_price, // u_spt_price.zqrate = :arg_zqrate // WHERE u_spt_price.sptid = :arg_sptid // AND u_spt_price.mtrlid = :arg_mtrlid // AND u_spt_price.status = :arg_status // AND u_spt_price.woodcode = :arg_woodcode // AND u_spt_price.pcode = :arg_pcode // AND u_spt_price.jgdscrp = :arg_jgdscrp // And u_spt_price.moneyid = :arg_moneyid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询失败'+sqlca.SQLErrText // GOTO ext //END IF //ext: //IF rslt = 0 THEN // ROLLBACK; //ELSEIF rslt = 1 And arg_ifcommit THEN // COMMIT; //END IF //RETURN rslt end function public function integer uof_del_sptprice_auto (long arg_sptid, long arg_inwareid, long arg_printid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, string arg_unit, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg);return uof_sptmtrlprice_delete ( arg_inwareid, arg_printid, arg_sptid, arg_moneyid, arg_mtrlid, arg_status, arg_woodcode, arg_pcode, arg_jgdscrp, arg_unit, arg_ifcommit, ref arg_msg) //Int rslt = 1 //Long cnt = 0,ll_cnt = 0 //DateTime ld_opdate // ////检查供应商存在否 //SELECT count(*) // INTO :cnt // FROM u_spt // Where u_spt.sptid = :arg_sptid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询供应商失败'+sqlca.SQLErrText // GOTO ext //END IF //IF cnt = 0 THEN // rslt = 0 // arg_msg = '供应商不存在' // GOTO ext //END IF // // ////检查商品存在否 //SELECT count(*) // INTO :cnt // FROM u_mtrldef // Where u_mtrldef.mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询物料失败'+sqlca.SQLErrText // GOTO ext //END IF //IF cnt = 0 THEN // rslt = 0 // arg_msg = '物料不存在' // GOTO ext //END IF // //SELECT count(*) INTO :cnt // FROM u_spt_price_mx // WHERE u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.inwareid = :arg_inwareid // AND u_spt_price_mx.printid = :arg_printid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.unit = :arg_unit // And u_spt_price_mx.moneyid = :arg_moneyid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询供应商最新价条目失败'+sqlca.SQLErrText // GOTO ext //END IF // //IF cnt = 0 THEN // rslt = 1 // GOTO ext //END IF // //SELECT top 1 Opdate INTO :ld_opdate // FROM u_spt_price_mx // WHERE u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.inwareid = :arg_inwareid // AND u_spt_price_mx.printid = :arg_printid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.unit = :arg_unit // AND u_spt_price_mx.moneyid = :arg_moneyid // Order By Opdate Desc; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询供应商最新价时间失败'+sqlca.SQLErrText // GOTO ext //END IF // //SELECT count(*) INTO :cnt // FROM u_spt_price_mx // WHERE u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.unit = :arg_unit // AND u_spt_price_mx.Opdate > :ld_opdate // And u_spt_price_mx.moneyid = :arg_moneyid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询供应商最新价内容失败'+sqlca.SQLErrText // GOTO ext //END IF // //Decimal ld_fprice,ld_zqrate,ld_price //DateTime ld_sys_changetime,ld_nulldt //SetNull(ld_nulldt) //IF cnt = 0 THEN //如果被删明细是最新,用次新明细更新最新价 // SELECT count(*) INTO :ll_cnt // FROM u_spt_price_mx // WHERE u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.unit = :arg_unit // And u_spt_price_mx.Opdate < :ld_opdate // And u_spt_price_mx.moneyid = :arg_moneyid; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询供应商最新价内容失败'+sqlca.SQLErrText // GOTO ext // END IF // // IF ll_cnt = 0 THEN // DELETE // From u_spt_price // Where u_spt_price.sptid = :arg_sptid // And u_spt_price.mtrlid = :arg_mtrlid // And u_spt_price.status = :arg_status // And u_spt_price.woodcode = :arg_woodcode // And u_spt_price.pcode = :arg_pcode // And u_spt_price.jgdscrp = :arg_jgdscrp // And u_spt_price.unit = :arg_unit // And u_spt_price.moneyid = :arg_moneyid; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '删除供应商最新价失败'+sqlca.SQLErrText // GOTO ext // END IF // ELSE // SELECT top 1 fprice,zqrate,price,sys_changetime // INTO :ld_fprice,:ld_zqrate,:ld_price,:ld_sys_changetime // FROM u_spt_price_mx // WHERE u_spt_price_mx.sptid = :arg_sptid // AND u_spt_price_mx.mtrlid = :arg_mtrlid // AND u_spt_price_mx.status = :arg_status // AND u_spt_price_mx.woodcode = :arg_woodcode // AND u_spt_price_mx.pcode = :arg_pcode // AND u_spt_price_mx.jgdscrp = :arg_jgdscrp // AND u_spt_price_mx.unit = :arg_unit // AND u_spt_price_mx.Opdate < :ld_opdate // AND u_spt_price_mx.moneyid = :arg_moneyid // Order By u_spt_price_mx.Opdate Desc; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询供应商最新价失败'+sqlca.SQLErrText // GOTO ext // END IF // // UPDATE u_spt_price // SET fprice = :ld_fprice , // zqrate = :ld_zqrate, // price = :ld_price, // sys_changetime = :ld_sys_changetime // WHERE u_spt_price.sptid = :arg_sptid // AND u_spt_price.mtrlid = :arg_mtrlid // AND u_spt_price.status = :arg_status // AND u_spt_price.woodcode = :arg_woodcode // AND u_spt_price.pcode = :arg_pcode // AND u_spt_price.jgdscrp = :arg_jgdscrp // AND u_spt_price.unit = :arg_unit // And u_spt_price.moneyid = :arg_moneyid; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '更新最新价失败'+sqlca.SQLErrText // GOTO ext // END IF // END IF //END IF // ////删除手动添加价格 //DELETE //From u_spt_price_mx //Where u_spt_price_mx.sptid = :arg_sptid //And u_spt_price_mx.mtrlid = :arg_mtrlid //And u_spt_price_mx.inwareid = :arg_inwareid //And u_spt_price_mx.printid = :arg_printid //And u_spt_price_mx.status = :arg_status //And u_spt_price_mx.woodcode = :arg_woodcode //And u_spt_price_mx.pcode = :arg_pcode //And u_spt_price_mx.jgdscrp = :arg_jgdscrp //And u_spt_price_mx.unit = :arg_unit //And u_spt_price_mx.moneyid = :arg_moneyid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '删除供应商价格历史失败'+sqlca.SQLErrText // GOTO ext //END IF // //ext: //IF rslt = 0 THEN // ROLLBACK; //ELSEIF rslt = 1 And arg_ifcommit THEN // COMMIT; //END IF //RETURN rslt end function public function integer uof_update_sptmtrlname (long arg_sptid, long arg_mtrlid, string arg_sptmtrlname, boolean arg_ifcommit, ref string arg_msg);//旧函数,取缔 return uof_sptmtrlname_set(arg_sptid, arg_mtrlid, arg_sptmtrlname, arg_ifcommit, arg_msg) //Long rslt = 1 //Long cnt = 0 // //IF IsNull(arg_sptmtrlname) THEN arg_sptmtrlname = '' // ////检查供应商存在否 //SELECT count(*) // INTO :cnt // FROM u_spt // Where u_spt.sptid = :arg_sptid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText // GOTO ext //END IF // //IF cnt = 0 THEN // rslt = 0 // arg_msg = '供应商不存在' // GOTO ext //END IF // // ////检查商品存在否 //SELECT count(*) // INTO :cnt // FROM u_mtrldef // Where u_mtrldef.mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText // GOTO ext //END IF //IF cnt = 0 THEN // rslt = 0 // arg_msg = '物料资料不存在' // GOTO ext //END IF // //SELECT count(*) // INTO :cnt // FROM u_sptmtrlname // WHERE u_sptmtrlname.sptid = :arg_sptid AND // u_sptmtrlname.mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询供应商物料最新价格失败'+sqlca.SQLErrText // GOTO ext //END IF // // //IF cnt > 0 THEN // UPDATE u_sptmtrlname // SET u_sptmtrlname.sptmtrlname = :arg_sptmtrlname // WHERE u_sptmtrlname.sptid = :arg_sptid AND // u_sptmtrlname.mtrlid = :arg_mtrlid; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其它原因,供应商物料别名更新失败'+sqlca.SQLErrText // GOTO ext // END IF //ELSEIF cnt = 0 THEN // INSERT INTO u_sptmtrlname // (sptid, // mtrlid, // sptmtrlname) // VALUES // (:arg_sptid, // :arg_mtrlid, // :arg_sptmtrlname); // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络或其他原因,新增供应商物料别名失败'+sqlca.sqlerrtext // GOTO ext // END IF //END IF // //ext: //IF rslt = 0 THEN // ROLLBACK; //ELSEIF arg_ifcommit And rslt = 1 THEN // COMMIT; //END IF // //RETURN rslt // end function public function integer uof_check_limitprice (integer arg_thflag, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, decimal arg_price, ref string arg_msg);//采购订单,采购收货,限价 Int rslt = 1 Decimal ld_limitprice String ls_mtrlcode Long cnt Int li_price_ifpz_buy Decimal ld_updownprice arg_unit = Trim(arg_unit) arg_status = Trim(arg_status) arg_woodcode = Trim(arg_woodcode) arg_pcode = Trim(arg_pcode) SELECT mtrlcode, price_ifpz_buy, updownprice INTO :ls_mtrlcode, :li_price_ifpz_buy, :ld_updownprice FROM u_mtrldef Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料资料失败'+sqlca.SQLErrText GOTO ext END IF CHOOSE CASE li_price_ifpz_buy CASE 0 arg_status = '' arg_woodcode = '' arg_pcode = '' CASE 1 arg_pcode = '' arg_woodcode = '' CASE 2 arg_status = '' arg_pcode = '' CASE 3 arg_status = '' arg_woodcode = '' CASE 4 arg_pcode = '' CASE 5 arg_status = '' CASE 6 arg_woodcode = '' END CHOOSE SELECT count(*) INTO :cnt FROM u_mtrl_limitprice WHERE mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode AND pcode = :arg_pcode And unit = :arg_unit; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料['+ls_mtrlcode+']是否设有采购限价失败'+sqlca.SQLErrText GOTO ext END IF IF cnt = 1 THEN SELECT limitprice INTO :ld_limitprice FROM u_mtrl_limitprice WHERE mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode AND pcode = :arg_pcode And unit = :arg_unit; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料['+ls_mtrlcode+']采购限价失败'+sqlca.SQLErrText GOTO ext END IF IF arg_thflag = 0 THEN IF arg_price > ld_limitprice + ld_updownprice THEN rslt = 0 arg_msg = '物料:'+ls_mtrlcode+',收货单价{'+String(arg_price,'#,##0.00##')+'} 高于收货限价{'+String( ld_limitprice + ld_updownprice ,'#,##0.00##')+'}' GOTO ext END IF ELSE IF arg_price < ld_limitprice - ld_updownprice THEN rslt = 0 arg_msg = '物料:'+ls_mtrlcode+',退货单价{'+String(arg_price,'#,##0.00##')+'} 低于收货限价{'+String( ld_limitprice - ld_updownprice ,'#,##0.00##')+'}' GOTO ext END IF END IF END IF ext: RETURN rslt end function public function integer uof_getnewprice (long arg_sptid, long arg_moneyid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref datetime arg_opdate, ref string arg_msg); datetime ldt_effdate ldt_effdate = datetime(1900-01-01) return uof_sptmtrlprice_get ( arg_sptid, arg_moneyid, arg_mtrlid, arg_unit, arg_status, arg_woodcode, arg_pcode, arg_jgdscrp, ldt_effdate, arg_price, arg_zqrate, arg_rate, arg_opdate,arg_msg) //Long rslt = 1 //Decimal rtn_price,rtn_zqrate,rtn_rate, rtn_rate_buy //String rtn_unit, rtn_unit_buy //String rtn_wareunit //Int li_iflimitprice,li_price_ifpz_buy //DateTime rtn_opdate // //arg_status = Trim(arg_status) //arg_woodcode = Trim(arg_woodcode) //arg_pcode = Trim(arg_pcode) //arg_jgdscrp = Trim(arg_jgdscrp) //arg_unit = Trim(arg_unit) // // //SELECT price_ifpz_buy, unit,unit_buy,rate_buy , iflimitprice // INTO :li_price_ifpz_buy, :rtn_wareunit,:rtn_unit_buy,:rtn_rate_buy,:li_iflimitprice // FROM u_mtrldef // Where mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '查询物料采购限价策略失败,'+sqlca.SQLErrText // GOTO ext //END IF // //CHOOSE CASE li_price_ifpz_buy // CASE 0 // arg_status = '' // arg_woodcode = '' // arg_pcode = '' // CASE 1 // arg_pcode = '' // arg_woodcode = '' // CASE 2 // arg_status = '' // arg_pcode = '' // CASE 3 // arg_status = '' // arg_woodcode = '' // CASE 4 // arg_pcode = '' // CASE 5 // arg_status = '' // CASE 6 // arg_woodcode = '' //END CHOOSE // //IF arg_unit = '' THEN // IF uo_option_buyprice_ifbj = 0 Or uo_option_buyprice_ifbj = 2 And li_iflimitprice = 0 THEN //取最新价 // SELECT top 1 fprice,zqrate,rate,unit,sys_changetime // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit, :rtn_opdate // FROM u_spt_price // WHERE u_spt_price.mtrlid = :arg_mtrlid // AND u_spt_price.sptid = :arg_sptid // AND u_spt_price.status = :arg_status // AND u_spt_price.woodcode = :arg_woodcode // AND u_spt_price.pcode = :arg_pcode // AND u_spt_price.jgdscrp = :arg_jgdscrp // AND u_spt_price.moneyid = :arg_moneyid // Order By u_spt_price.sys_changetime Desc; // ELSE // SELECT top 1 fprice_bj,zqrate_bj,rate_bj,unit,sys_changetime // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit, :rtn_opdate // FROM u_spt_price // WHERE u_spt_price.mtrlid = :arg_mtrlid // AND u_spt_price.sptid = :arg_sptid // AND u_spt_price.status = :arg_status // AND u_spt_price.woodcode = :arg_woodcode // AND u_spt_price.pcode = :arg_pcode // AND u_spt_price.jgdscrp = :arg_jgdscrp // AND u_spt_price.moneyid = :arg_moneyid // Order By u_spt_price.sys_changetime Desc; // END IF // // IF sqlca.SQLCode = -1 THEN // rslt = 0 // arg_msg = '查询价格操作失败'+sqlca.SQLErrText // GOTO ext // ELSEIF sqlca.SQLCode = 100 Or IsNull(rtn_price) THEN // // IF rtn_unit_buy = '' Or rtn_rate_buy = 0 THEN // rtn_unit = rtn_wareunit // rtn_rate = 1 // ELSE // rtn_unit = rtn_unit_buy // rtn_rate = rtn_rate_buy // END IF // // rslt = 2 // GOTO ext // END IF //ELSE // SELECT top 1 fprice,zqrate,rate,unit,sys_changetime // INTO :rtn_price,:rtn_zqrate ,:rtn_rate ,:rtn_unit, :rtn_opdate // FROM u_spt_price // WHERE u_spt_price.mtrlid = :arg_mtrlid // AND u_spt_price.sptid = :arg_sptid // AND u_spt_price.unit = :arg_unit // AND u_spt_price.status = :arg_status // AND u_spt_price.woodcode = :arg_woodcode // AND u_spt_price.pcode = :arg_pcode // AND u_spt_price.jgdscrp = :arg_jgdscrp // AND u_spt_price.moneyid = :arg_moneyid // Order By u_spt_price.sys_changetime Desc; // // // IF sqlca.SQLCode = -1 THEN // rslt = 0 // arg_msg = '查询操作失败'+sqlca.SQLErrText // GOTO ext // ELSEIF sqlca.SQLCode = 100 Or IsNull(rtn_price) THEN // rslt = 2 // GOTO ext // END IF // //END IF // //ext: //IF rslt <> 1 THEN // rtn_price = 0.00 // rtn_zqrate = 1 // // rtn_rate = 1 // SetNull(rtn_opdate) //END IF // //arg_price = rtn_price //arg_zqrate = rtn_zqrate //arg_rate = rtn_rate //arg_unit = rtn_unit //arg_opdate = rtn_opdate // // //RETURN rslt end function public function integer uof_sptmtrlname_set (long arg_sptid, long arg_mtrlid, string arg_sptmtrlname, boolean arg_ifcommit, ref string arg_msg);Long rslt = 1 Long cnt = 0 IF IsNull(arg_sptmtrlname) THEN arg_sptmtrlname = '' //检查供应商存在否 SELECT count(*) INTO :cnt FROM u_spt Where u_spt.sptid = :arg_sptid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '供应商不存在' GOTO ext END IF //检查商品存在否 SELECT count(*) INTO :cnt FROM u_mtrldef Where u_mtrldef.mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '物料资料不存在' GOTO ext END IF UPDATE u_sptmtrlname SET sptmtrlname = :arg_sptmtrlname WHERE sptid = :arg_sptid AND mtrlid = :arg_mtrlid; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_sptmtrlname (sptid, mtrlid, sptmtrlname) VALUES (:arg_sptid, :arg_mtrlid, :arg_sptmtrlname); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '新增供应商物料别名失败,'+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = '更新供应商物料别名失败,'+sqlca.SQLErrText GOTO ext END IF /////////////////////////////////////////////////////////////////// // //SELECT count(*) // INTO :cnt // FROM u_sptmtrlname // WHERE u_sptmtrlname.sptid = :arg_sptid AND // u_sptmtrlname.mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询供应商物料最新价格失败'+sqlca.SQLErrText // GOTO ext //END IF // // //IF cnt > 0 THEN // UPDATE u_sptmtrlname // SET u_sptmtrlname.sptmtrlname = :arg_sptmtrlname // WHERE u_sptmtrlname.sptid = :arg_sptid AND // u_sptmtrlname.mtrlid = :arg_mtrlid; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其它原因,供应商物料别名更新失败'+sqlca.SQLErrText // GOTO ext // END IF //ELSEIF cnt = 0 THEN // INSERT INTO u_sptmtrlname // (sptid, // mtrlid, // sptmtrlname) // VALUES // (:arg_sptid, // :arg_mtrlid, // :arg_sptmtrlname); // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络或其他原因,新增供应商物料别名失败'+sqlca.SQLErrText // GOTO ext // END IF //END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit And rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer uof_sptmtrlname_get (long arg_sptid, long arg_mtrlid, ref string arg_sptmtrlname, ref string arg_msg);Long rslt = 1 String ls_sptmtrlname SELECT sptmtrlname INTO :ls_sptmtrlname FROM u_sptmtrlname WHERE u_sptmtrlname.mtrlid = :arg_mtrlid AND u_sptmtrlname.sptid = :arg_sptid; IF sqlca.SQLCode = -1 THEN rslt = 0 arg_msg = '查询供应商物料别名操作失败,'+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLCode = 100 OR IsNull(ls_sptmtrlname) THEN ls_sptmtrlname = '' END IF arg_sptmtrlname = ls_sptmtrlname ext: RETURN rslt end function public function integer uof_sptmtrlprice_get (long arg_sptid, long arg_moneyid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, datetime arg_effdate, ref decimal arg_fprice, ref decimal arg_zqrate, ref decimal arg_rate, ref datetime arg_billdate, ref string arg_msg);//==================================================================== // 事件: uo_spt_price.Script - uof_sptmtrlprice_get ( long arg_sptid, long arg_moneyid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, datetime arg_effdate, ref decimal arg_fprice, ref decimal arg_zqrate, ref() //-------------------------------------------------------------------- // 描述: //-------------------------------------------------------------------- // 参数: // value long arg_sptid // value long arg_moneyid // value long arg_mtrlid // reference string arg_unit // value string arg_status // value string arg_woodcode // value string arg_pcode // value string arg_jgdscrp // value datetime arg_effdate // reference decimal arg_fprice // reference decimal arg_zqrate // reference decimal arg_rate // reference datetime arg_billdate // reference string arg_msg //-------------------------------------------------------------------- // 返回: (none) //-------------------------------------------------------------------- // 作者: LHD 日期: 2013年05月28日 //-------------------------------------------------------------------- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved. //-------------------------------------------------------------------- // 修改历史: // //==================================================================== Long rslt = 1 Decimal lde_fprice,lde_zqrate,lde_rate, lde_price, lde_wareprice, lde_rate_buy String ls_unit, ls_unit_buy String ls_wareunit Int li_iflimitprice,li_price_ifpz_buy DateTime lde_billdate arg_status = Trim(arg_status) arg_woodcode = Trim(arg_woodcode) arg_pcode = Trim(arg_pcode) arg_jgdscrp = Trim(arg_jgdscrp) arg_unit = Trim(arg_unit) arg_effdate = DateTime(Date(arg_effdate),Time(0)) IF uo_option_buyprice_ifbj = -1000 THEN arg_msg = '选项:[053]收货单取单价模式,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF IF uo_option_sptprice_effdate = -1000 THEN arg_msg = '选项:[244]供应商报价使用生效日期,读取初始默认值失败,操作取消!' rslt = 0 GOTO ext END IF SELECT iflimitprice,price_ifpz_buy, unit,unit_buy,rate_buy INTO :li_iflimitprice,:li_price_ifpz_buy,:ls_wareunit,:ls_unit_buy,:lde_rate_buy FROM u_mtrldef Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询物料限价属性失败 '+sqlca.SQLErrText rslt = 0 GOTO ext END IF CHOOSE CASE li_price_ifpz_buy CASE 0 arg_status = '' arg_woodcode = '' arg_pcode = '' CASE 1 arg_pcode = '' arg_woodcode = '' CASE 2 arg_status = '' arg_pcode = '' CASE 3 arg_status = '' arg_woodcode = '' CASE 4 arg_pcode = '' CASE 5 arg_status = '' CASE 6 arg_woodcode = '' END CHOOSE IF uo_option_buyprice_ifbj = 0 Or uo_option_buyprice_ifbj = 2 And li_iflimitprice = 0 THEN //取最新价 SELECT top 1 fprice,zqrate,rate,price, wareprice,unit,sys_changetime INTO :lde_fprice,:lde_zqrate ,:lde_rate ,:lde_price, :lde_wareprice,:ls_unit, :lde_billdate FROM u_spt_price WHERE sptid = :arg_sptid AND moneyid = :arg_moneyid AND mtrlid = :arg_mtrlid AND (unit = :arg_unit OR :arg_unit = '') AND status = :arg_status AND woodcode = :arg_woodcode AND pcode = :arg_pcode AND jgdscrp = :arg_jgdscrp Order By sys_changetime Desc; ELSE //取报价 IF uo_option_sptprice_effdate = 1 THEN SELECT top 1 fprice,zqrate,rate,price, wareprice,unit, opdate INTO :lde_fprice,:lde_zqrate ,:lde_rate ,:lde_price, :lde_wareprice,:ls_unit, :lde_billdate FROM u_spt_price_mx WHERE sptid = :arg_sptid AND moneyid = :arg_moneyid AND mtrlid = :arg_mtrlid AND (unit = :arg_unit OR :arg_unit = '') AND status = :arg_status AND woodcode = :arg_woodcode AND pcode = :arg_pcode AND jgdscrp = :arg_jgdscrp AND effdate <= :arg_effdate AND effdate_end >= :arg_effdate AND billtype = 2 Order By opdate Desc; ELSE SELECT top 1 fprice_bj,zqrate_bj,rate_bj,price_bj, wareprice_bj,unit,sys_changetime INTO :lde_fprice,:lde_zqrate ,:lde_rate ,:lde_price, :lde_wareprice,:ls_unit, :lde_billdate FROM u_spt_price WHERE sptid = :arg_sptid AND moneyid = :arg_moneyid AND mtrlid = :arg_mtrlid AND (unit = :arg_unit OR :arg_unit = '') AND status = :arg_status AND woodcode = :arg_woodcode AND pcode = :arg_pcode AND jgdscrp = :arg_jgdscrp Order By sys_changetime Desc; END IF END IF IF sqlca.SQLCode = -1 THEN rslt = 0 arg_msg = '查询供应商物料最新价格失败'+sqlca.SQLErrText GOTO ext ELSEIF sqlca.SQLCode = 100 Or IsNull(lde_fprice) THEN // lde_zqrate = 1 // lde_fprice = 0.00 IF arg_unit = '' THEN IF ls_unit_buy = '' Or lde_rate_buy = 0 THEN ls_unit = ls_wareunit lde_rate = 1 ELSE ls_unit = ls_unit_buy lde_rate = lde_rate_buy END IF END IF rslt = 2 GOTO ext END IF ext: IF rslt <> 1 THEN lde_fprice = 0.00 lde_zqrate = 1 //lde_rate = 1 IF ls_unit = '' THEN ls_unit = arg_unit END IF END IF if lde_zqrate = 0 then lde_zqrate = 1 arg_fprice = lde_fprice arg_zqrate = lde_zqrate arg_rate = lde_rate IF ls_unit <> '' THEN arg_unit = ls_unit END IF arg_billdate = lde_billdate RETURN rslt end function public function integer uof_sptmtrlprice_delete (long arg_inwareid, long arg_printid, long arg_sptid, long arg_moneyid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, string arg_unit, boolean arg_ifcommit, ref string arg_msg);//==================================================================== // 事件: uo_spt_price.Script - uof_sptmtrlprice_delete ( long arg_inwareid, long arg_printid, long arg_sptid, long arg_moneyid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, string arg_unit, boolean arg_ifcommit, ref string arg_() //-------------------------------------------------------------------- // 描述: //-------------------------------------------------------------------- // 参数: // value long arg_inwareid // value long arg_printid // value long arg_sptid // value long arg_moneyid // value long arg_mtrlid // value string arg_status // value string arg_woodcode // value string arg_pcode // value string arg_jgdscrp // value string arg_unit // value boolean arg_ifcommit // reference string arg_msg //-------------------------------------------------------------------- // 返回: (none) //-------------------------------------------------------------------- // 作者: LHD 日期: 2013年05月29日 //-------------------------------------------------------------------- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved. //-------------------------------------------------------------------- // 修改历史: // //==================================================================== Int rslt = 1 Long cnt = 0,ll_cnt = 0 Int li_ifbj DateTime ld_opdate Decimal ld_fprice,ld_zqrate,ld_price, lde_wareprice, lde_rate DateTime ld_sys_changetime,ldt_opdate String ls_mtrlcode Int li_price_ifpz_buy Boolean lb_del = False //检查商品存在否 SELECT mtrlcode, price_ifpz_buy INTO :ls_mtrlcode, :li_price_ifpz_buy FROM u_mtrldef Where u_mtrldef.mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料编码失败,'+sqlca.SQLErrText GOTO ext END IF CHOOSE CASE li_price_ifpz_buy CASE 0 arg_status = '' arg_woodcode = '' arg_pcode = '' CASE 1 arg_pcode = '' arg_woodcode = '' CASE 2 arg_status = '' arg_pcode = '' CASE 3 arg_status = '' arg_woodcode = '' CASE 4 arg_pcode = '' CASE 5 arg_status = '' CASE 6 arg_woodcode = '' END CHOOSE SELECT Top 1 Opdate,ifbj INTO :ldt_opdate, :li_ifbj FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid AND u_spt_price_mx.moneyid = :arg_moneyid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.inwareid = :arg_inwareid AND u_spt_price_mx.printid = :arg_printid Order By u_spt_price_mx.Opdate Desc; IF sqlca.SQLCode <> 0 THEN IF sqlca.SQLCode = 100 THEN rslt = 1 //明细单价为0 , 有可能不插入供应商历史 GOTO ext ELSE rslt = 0 arg_msg = '查询供应商价格历史明细信息失败'+sqlca.SQLErrText GOTO ext END IF END IF //删除添加价格 DELETE FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid AND u_spt_price_mx.moneyid = :arg_moneyid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.inwareid = :arg_inwareid AND u_spt_price_mx.printid = :arg_printid And u_spt_price_mx.Opdate = :ldt_opdate; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除供应商价格历史失败'+sqlca.SQLErrText GOTO ext END IF //查询最新价格,更新u_spt_price SELECT Top 1 fprice,zqrate,price,wareprice,rate,Opdate,ifbj INTO :ld_fprice,:ld_zqrate,:ld_price,:lde_wareprice,:lde_rate,:ld_sys_changetime, :li_ifbj FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid AND u_spt_price_mx.moneyid = :arg_moneyid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.ifbj = :li_ifbj Order By u_spt_price_mx.Opdate Desc; IF sqlca.SQLCode <> 0 THEN IF sqlca.SQLNRows = 0 THEN //如果没有,找另一种,有则update, 没有则删除 SELECT count(*) INTO :ll_cnt FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid AND u_spt_price_mx.moneyid = :arg_moneyid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit And u_spt_price_mx.ifbj = 1 - :li_ifbj; IF ll_cnt = 0 THEN lb_del = True ELSE ld_fprice = 0 ld_zqrate = 1 ld_price = 0 lde_wareprice = 0 lde_rate = 1 setnull(ld_sys_changetime) END IF ELSE rslt = 0 arg_msg = '查询供应商价格历史失败'+sqlca.SQLErrText GOTO ext END IF END IF IF lb_del THEN DELETE FROM u_spt_price WHERE sptid = :arg_sptid AND moneyid = :arg_moneyid AND mtrlid = :arg_mtrlid AND status = :arg_status AND woodcode = :arg_woodcode AND pcode = :arg_pcode AND jgdscrp = :arg_jgdscrp And unit = :arg_unit; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除供应商价格历史失败'+sqlca.SQLErrText GOTO ext END IF ELSE //如果前面删除,可能没有更新 IF li_ifbj = 0 THEN UPDATE u_spt_price SET fprice = :ld_fprice , zqrate = :ld_zqrate, price = :ld_price, wareprice = :lde_wareprice, rate = :lde_rate, sys_changetime = :ld_sys_changetime WHERE u_spt_price.sptid = :arg_sptid AND u_spt_price.mtrlid = :arg_mtrlid AND u_spt_price.status = :arg_status AND u_spt_price.woodcode = :arg_woodcode AND u_spt_price.pcode = :arg_pcode AND u_spt_price.jgdscrp = :arg_jgdscrp AND u_spt_price.unit = :arg_unit And u_spt_price.moneyid = :arg_moneyid; ELSE UPDATE u_spt_price SET fprice_bj = :ld_fprice , zqrate_bj = :ld_zqrate, price_bj = :ld_price, wareprice_bj = :lde_wareprice, rate_bj = :lde_rate, sys_changetime = :ld_sys_changetime WHERE u_spt_price.sptid = :arg_sptid AND u_spt_price.mtrlid = :arg_mtrlid AND u_spt_price.status = :arg_status AND u_spt_price.woodcode = :arg_woodcode AND u_spt_price.pcode = :arg_pcode AND u_spt_price.jgdscrp = :arg_jgdscrp AND u_spt_price.unit = :arg_unit And u_spt_price.moneyid = :arg_moneyid; END IF IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新供应商价格历史失败'+sqlca.SQLErrText GOTO ext END IF END IF /* SELECT count(*) INTO :cnt FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid And u_spt_price_mx.moneyid = :arg_moneyid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.inwareid = :arg_inwareid AND u_spt_price_mx.printid = :arg_printid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询供应商最新价条目失败'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 1 GOTO ext END IF SELECT top 1 Opdate INTO :ld_opdate FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid And u_spt_price_mx.moneyid = :arg_moneyid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.inwareid = :arg_inwareid AND u_spt_price_mx.printid = :arg_printid Order By Opdate Desc; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询供应商最新价时间失败'+sqlca.SQLErrText GOTO ext END IF SELECT count(*) INTO :cnt FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid And u_spt_price_mx.moneyid = :arg_moneyid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.Opdate > :ld_opdate; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询供应商最新价内容失败'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN //如果被删明细是最新,用次新明细更新最新价 SELECT count(*) INTO :ll_cnt FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit And u_spt_price_mx.Opdate < :ld_opdate And u_spt_price_mx.moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询供应商最新价内容失败'+sqlca.SQLErrText GOTO ext END IF IF ll_cnt = 0 THEN DELETE From u_spt_price Where u_spt_price.sptid = :arg_sptid And u_spt_price.mtrlid = :arg_mtrlid And u_spt_price.status = :arg_status And u_spt_price.woodcode = :arg_woodcode And u_spt_price.pcode = :arg_pcode And u_spt_price.jgdscrp = :arg_jgdscrp And u_spt_price.unit = :arg_unit And u_spt_price.moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '删除供应商最新价失败'+sqlca.SQLErrText GOTO ext END IF ELSE SELECT top 1 fprice,zqrate,price,sys_changetime INTO :ld_fprice,:ld_zqrate,:ld_price,:ld_sys_changetime FROM u_spt_price_mx WHERE u_spt_price_mx.sptid = :arg_sptid AND u_spt_price_mx.mtrlid = :arg_mtrlid AND u_spt_price_mx.status = :arg_status AND u_spt_price_mx.woodcode = :arg_woodcode AND u_spt_price_mx.pcode = :arg_pcode AND u_spt_price_mx.jgdscrp = :arg_jgdscrp AND u_spt_price_mx.unit = :arg_unit AND u_spt_price_mx.Opdate < :ld_opdate AND u_spt_price_mx.moneyid = :arg_moneyid Order By u_spt_price_mx.Opdate Desc; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询供应商最新价失败'+sqlca.SQLErrText GOTO ext END IF UPDATE u_spt_price SET fprice = :ld_fprice , zqrate = :ld_zqrate, price = :ld_price, sys_changetime = :ld_sys_changetime WHERE u_spt_price.sptid = :arg_sptid AND u_spt_price.mtrlid = :arg_mtrlid AND u_spt_price.status = :arg_status AND u_spt_price.woodcode = :arg_woodcode AND u_spt_price.pcode = :arg_pcode AND u_spt_price.jgdscrp = :arg_jgdscrp AND u_spt_price.unit = :arg_unit And u_spt_price.moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '更新最新价失败'+sqlca.SQLErrText GOTO ext END IF END IF END IF */ ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 And arg_ifcommit THEN COMMIT; END IF RETURN rslt end function public function integer uof_getmtrlsptbuybargainprice (long arg_moneyid, long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref long arg_buybargainid, ref long arg_buybargainprintid, ref string arg_buybargaincode, ref decimal arg_price, ref decimal arg_rebate, ref string arg_msg);Long rslt = 1 Decimal rtn_price,rtn_zqrate,rtn_rate String ls_unit String rtn_wareunit Int li_iflimitprice,li_price_ifpz_buy Long ll_buybargainid, ll_buybargainprintid String ls_buybargaincode decimal lde_price, lde_rebate lde_rebate = 1 IF sys_option_buy_getbuybargain = 0 THEN ll_buybargainid = 0 ll_buybargainprintid = 0 ls_buybargaincode = '' lde_price = 0 // lde_rebate = 1 GOTO ext END IF arg_status = Trim(arg_status) arg_woodcode = Trim(arg_woodcode) arg_pcode = Trim(arg_pcode) arg_jgdscrp = Trim(arg_jgdscrp) arg_unit = Trim(arg_unit) SELECT iflimitprice,price_ifpz_buy , unit INTO :li_iflimitprice,:li_price_ifpz_buy, :ls_unit FROM u_mtrldef Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询物料限价属性失败 '+sqlca.SQLErrText rslt = 0 GOTO ext END IF CHOOSE CASE li_price_ifpz_buy CASE 0 arg_status = '' arg_woodcode = '' arg_pcode = '' CASE 1 arg_pcode = '' arg_woodcode = '' CASE 2 arg_status = '' arg_pcode = '' CASE 3 arg_status = '' arg_woodcode = '' CASE 4 arg_pcode = '' CASE 5 arg_status = '' CASE 6 arg_woodcode = '' END CHOOSE IF arg_unit = '' THEN arg_unit = ls_unit END IF SELECT top 1 billid,printid,billcode, price INTO :ll_buybargainid,:ll_buybargainprintid,:ls_buybargaincode, :lde_price FROM ( SELECT top 1 case argaintype when 3 then (case u_buybargainmx.areaqty when 0 then u_buybargainmx.price else round(u_buybargainmx.price*u_buybargainmx.areaqty+u_buybargainmx.otherprice,2) END ) else u_buybargainmx.price END AS price, u_buybargainmx.rate as rate, u_buybargainmx.unit as unit, u_buybargainmx.billid as billid, u_buybargainmx.printid as printid, ltrim(rtrim(u_buybargain.Billcode))+'[合同]' as billcode, u_buybargain.auditdate as auditdate FROM u_buybargain INNER JOIN u_buybargainmx ON u_buybargain.billid = u_buybargainmx.billid WHERE u_buybargain.flag = 1 AND u_buybargain.sptid_b = :arg_sptid AND u_buybargainmx.mtrlid = :arg_mtrlid AND u_buybargainmx.unit = :arg_unit AND u_buybargain.moneyid = :arg_moneyid and u_buybargainmx.material = :arg_jgdscrp ORDER BY u_buybargain.auditdate DESC UNION SELECT top 1 u_spt_price_changemx.price, u_spt_price_changemx.rate, u_spt_price_changemx.unit, u_spt_price_changemx.billid, u_spt_price_changemx.printid, ltrim(rtrim(u_spt_price_change.Billcode))+'[调价]', u_spt_price_change.auditdate as auditdate FROM u_spt_price_change INNER JOIN u_spt_price_changemx ON u_spt_price_change.billid = u_spt_price_changemx.billid WHERE (u_spt_price_change.flag = 1) AND u_spt_price_change.sptid = :arg_sptid AND u_spt_price_changemx.mtrlid = :arg_mtrlid AND u_spt_price_change.moneyid = :arg_moneyid AND u_spt_price_changemx.unit = :arg_unit AND u_spt_price_changemx.status = :arg_status AND u_spt_price_changemx.woodcode = :arg_woodcode AND u_spt_price_changemx.pcode = :arg_pcode and u_spt_price_changemx.jgdscrp = :arg_jgdscrp ORDER BY u_spt_price_change.auditdate DESC) A Order By A.auditdate Desc; IF sqlca.SQLCode <> 0 THEN ll_buybargainid = 0 ll_buybargainprintid = 0 ls_buybargaincode = '' lde_price = 0 END IF ext: arg_buybargainid = ll_buybargainid arg_buybargainprintid = ll_buybargainprintid arg_buybargaincode = ls_buybargaincode arg_price = lde_price arg_rebate = lde_rebate RETURN rslt end function public function integer uof_getmtrlsptbuybargain (long arg_moneyid, long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref long arg_buybargainid, ref long arg_buybargainprintid, ref string arg_buybargaincode, ref string arg_msg); decimal lde_price, lde_rebate return uof_getmtrlsptbuybargainprice(arg_moneyid, arg_sptid, arg_mtrlid, arg_unit, arg_status, arg_woodcode, arg_pcode, arg_jgdscrp, arg_buybargainid, arg_buybargainprintid, arg_buybargaincode, lde_price, lde_rebate,arg_msg) //Long rslt = 1 //Decimal rtn_price,rtn_zqrate,rtn_rate //String ls_unit //String rtn_wareunit //Int li_iflimitprice,li_price_ifpz_buy // //Long ll_buybargainid, ll_buybargainprintid //String ls_buybargaincode // //IF sys_option_buy_getbuybargain = 0 THEN // ll_buybargainid = 0 // ll_buybargainprintid = 0 // ls_buybargaincode = '' // GOTO ext //END IF // // //arg_status = Trim(arg_status) //arg_woodcode = Trim(arg_woodcode) //arg_pcode = Trim(arg_pcode) ////arg_jgdscrp = Trim(arg_jgdscrp) // // //arg_unit = Trim(arg_unit) // ////arg_billdate = DateTime(Date(arg_billdate),Time(0)) // // // //SELECT iflimitprice,price_ifpz_buy , unit // INTO :li_iflimitprice,:li_price_ifpz_buy, :ls_unit // FROM u_mtrldef // Where mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询物料限价属性失败 '+sqlca.SQLErrText // rslt = 0 // GOTO ext //END IF // //CHOOSE CASE li_price_ifpz_buy // CASE 0 // arg_status = '' // arg_woodcode = '' // arg_pcode = '' // CASE 1 // arg_pcode = '' // arg_woodcode = '' // CASE 2 // arg_status = '' // arg_pcode = '' // CASE 3 // arg_status = '' // arg_woodcode = '' // CASE 4 // arg_pcode = '' // CASE 5 // arg_status = '' // CASE 6 // arg_woodcode = '' //END CHOOSE // //IF arg_unit = '' THEN // arg_unit = ls_unit //END IF // // //SELECT top 1 billid,printid,billcode // INTO :ll_buybargainid,:ll_buybargainprintid,:ls_buybargaincode // FROM ( // SELECT top 1 case argaintype when 3 then (case u_buybargainmx.areaqty when 0 then u_buybargainmx.price else round(u_buybargainmx.price*u_buybargainmx.areaqty+u_buybargainmx.otherprice,2) END ) // else u_buybargainmx.price END AS price, // u_buybargainmx.rate as rate, // u_buybargainmx.unit as unit, // u_buybargainmx.billid as billid, // u_buybargainmx.printid as printid, // ltrim(rtrim(u_buybargain.Billcode))+'[合同]' as billcode, // u_buybargain.auditdate as auditdate // FROM u_buybargain INNER JOIN // u_buybargainmx ON u_buybargain.billid = u_buybargainmx.billid // WHERE u_buybargain.flag = 1 // AND u_buybargain.sptid_b = :arg_sptid // AND u_buybargainmx.mtrlid = :arg_mtrlid // AND u_buybargainmx.unit = :arg_unit // AND u_buybargain.moneyid = :arg_moneyid // ORDER BY u_buybargain.auditdate DESC // UNION // SELECT top 1 u_spt_price_changemx.price, // u_spt_price_changemx.rate, // u_spt_price_changemx.unit, // u_spt_price_changemx.billid, // u_spt_price_changemx.printid, // ltrim(rtrim(u_spt_price_change.Billcode))+'[调价]', // u_spt_price_change.auditdate as auditdate // FROM u_spt_price_change INNER JOIN // u_spt_price_changemx ON // u_spt_price_change.billid = u_spt_price_changemx.billid // WHERE (u_spt_price_change.flag = 1) // AND u_spt_price_change.sptid = :arg_sptid // AND u_spt_price_changemx.mtrlid = :arg_mtrlid // AND u_spt_price_change.moneyid = :arg_moneyid // AND u_spt_price_changemx.unit = :arg_unit // AND u_spt_price_changemx.status = :arg_status // AND u_spt_price_changemx.woodcode = :arg_woodcode // AND u_spt_price_changemx.pcode = :arg_pcode // ORDER BY u_spt_price_change.auditdate DESC) A // Order By A.auditdate Desc; // //IF sqlca.SQLCode <> 0 THEN // ll_buybargainid = 0 // ll_buybargainprintid = 0 // ls_buybargaincode = '' //END IF // // // //ext: //arg_buybargainid = ll_buybargainid //arg_buybargainprintid = ll_buybargainprintid //arg_buybargaincode = ls_buybargaincode // //RETURN rslt // end function public function integer uof_sptmtrlprice_set (integer arg_ifth, integer arg_ifbj, long arg_sptid, long arg_moneyid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, datetime arg_effdate, datetime arg_effdate_end, decimal arg_fprice, decimal arg_zqrate, decimal arg_rate, decimal arg_wareprice, decimal arg_wareprice_notax, integer arg_billtype, integer arg_buildtype, long arg_inwareid, string arg_inwarecode, long arg_printid, datetime arg_indate, string arg_dscrp, boolean arg_ifcommit, ref string arg_msg);//==================================================================== // 事件: uo_spt_price.Script - uof_sptmtrlprice_set ( integer arg_ifth, integer arg_ifbj, long arg_sptid, long arg_moneyid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, datetime arg_effdate, decimal arg_fprice,() //-------------------------------------------------------------------- // 描述: //-------------------------------------------------------------------- // 参数: // value integer arg_ifth 是否退货传入 // value integer arg_ifbj 是否更新报价 // value long arg_sptid // value long arg_moneyid // value long arg_mtrlid // value string arg_unit // value string arg_status // value string arg_woodcode // value string arg_pcode // value string arg_jgdscrp // value datetime arg_effdate //有效期 // value decimal arg_fprice // value decimal arg_zqrate // value decimal arg_rate // value decimal arg_wareprice //库存单位,本位币,单价 // value integer arg_billtype //数据来源方式;采购单,外协单,报价单,手动 // value long arg_buildtype //建立方式,来源; 0-自动,来自单据审核; 1-手动; 原flag // value long arg_inwareid // value string arg_inwarecode // value long arg_printid // value datetime arg_indate // value string arg_dscrp // value boolean arg_ifcommit // reference string arg_msg //-------------------------------------------------------------------- // 返回: (none) //-------------------------------------------------------------------- // 作者: LHD 日期: 2013年05月28日 //-------------------------------------------------------------------- // Copyright (c) 2002-2018 RICHTA(TM), All rights reserved. //-------------------------------------------------------------------- // 修改历史: // //==================================================================== Long rslt = 1 Long cnt = 0 String ls_mtrlcode Int li_price_ifpz_buy IF uo_option_zero_update_sptprice = -1000 THEN rslt = 0 arg_msg = '选项:[366]采购收货单0单价更新价格历史,读取初始默认值失败,操作取消!' GOTO ext END IF //检查退货 IF arg_ifth = 1 THEN rslt = 1 GOTO ext END IF //yyx2013-4-12 IF uo_option_zero_update_sptprice = 0 THEN IF arg_fprice = 0 THEN rslt = 1 GOTO ext END IF END IF //end yyx2013-4-12 //检查参数 IF IsNull(arg_sptid) THEN arg_sptid = 0 IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 IF IsNull(arg_status) THEN arg_status = '' IF IsNull(arg_fprice) THEN arg_fprice = 0.0 IF IsNull(arg_moneyid) THEN arg_moneyid = 0 IF IsNull(arg_woodcode) THEN arg_woodcode = '' IF IsNull(arg_pcode) THEN arg_pcode = '' IF IsNull(arg_jgdscrp) THEN arg_jgdscrp = '' arg_inwarecode = Trim(arg_inwarecode) arg_status = Trim(arg_status) arg_woodcode = Trim(arg_woodcode) arg_pcode = Trim(arg_pcode) arg_jgdscrp = Trim(arg_jgdscrp) arg_unit = Trim(arg_unit) IF arg_indate <= DateTime(Date('1900-01-01'),Time(0)) THEN rslt = 0 arg_msg = '不合理的发生时间' GOTO ext END IF IF arg_unit = '' THEN rslt = 0 arg_msg = '没有单位' GOTO ext END IF //检查供应商存在否 SELECT count(*) INTO :cnt FROM u_spt Where u_spt.sptid = :arg_sptid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询失败'+sqlca.SQLErrText GOTO ext END IF IF cnt = 0 THEN rslt = 0 arg_msg = '供应商不存在' GOTO ext END IF cnt = 0 SELECT count(*) INTO :cnt FROM cw_currency Where moneyid = :arg_moneyid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询币种失败' rslt = 0 GOTO ext END IF IF cnt = 0 THEN arg_msg = '币种资料不存在' rslt = 0 GOTO ext END IF //检查商品存在否 SELECT mtrlcode, price_ifpz_buy INTO :ls_mtrlcode, :li_price_ifpz_buy FROM u_mtrldef Where u_mtrldef.mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '查询物料编码失败,'+sqlca.SQLErrText GOTO ext END IF CHOOSE CASE li_price_ifpz_buy CASE 0 arg_status = '' arg_woodcode = '' arg_pcode = '' CASE 1 arg_pcode = '' arg_woodcode = '' CASE 2 arg_status = '' arg_pcode = '' CASE 3 arg_status = '' arg_woodcode = '' CASE 4 arg_pcode = '' CASE 5 arg_status = '' CASE 6 arg_woodcode = '' END CHOOSE //1.更新供应商价格历史-更新最新收货价 IF arg_ifbj = 0 THEN UPDATE u_spt_price SET u_spt_price.price = :arg_fprice * :arg_zqrate, u_spt_price.fprice = :arg_fprice, u_spt_price.zqrate = :arg_zqrate, u_spt_price.wareprice = :arg_wareprice, u_spt_price.wareprice_notax = :arg_wareprice_notax, u_spt_price.rate = :arg_rate, u_spt_price.sys_changetime = getdate() WHERE u_spt_price.sptid = :arg_sptid AND u_spt_price.mtrlid = :arg_mtrlid AND u_spt_price.unit = :arg_unit AND u_spt_price.status = :arg_status AND u_spt_price.woodcode = :arg_woodcode AND u_spt_price.pcode = :arg_pcode AND u_spt_price.jgdscrp = :arg_jgdscrp AND u_spt_price.moneyid = :arg_moneyid; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_spt_price (sptid, mtrlid, unit, price, fprice, zqrate, wareprice, wareprice_notax, rate, status, woodcode, pcode, jgdscrp, dscrp, moneyid, sys_changetime) VALUES (:arg_sptid, :arg_mtrlid, :arg_unit, :arg_fprice * :arg_zqrate, :arg_fprice, :arg_zqrate, :arg_wareprice, :arg_wareprice_notax, :arg_rate, :arg_status, :arg_woodcode, :arg_pcode, :arg_jgdscrp, :arg_dscrp, :arg_moneyid, getdate()); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '新增物料:'+ls_mtrlcode+'供应商价格历史失败,'+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = '更新物料:'+ls_mtrlcode+'供应商价格历史失败,'+sqlca.SQLErrText GOTO ext END IF ELSE //更新最新报价 UPDATE u_spt_price SET u_spt_price.price_bj = :arg_fprice * :arg_zqrate, u_spt_price.fprice_bj = :arg_fprice, u_spt_price.zqrate_bj = :arg_zqrate, u_spt_price.wareprice_bj = :arg_wareprice, u_spt_price.rate_bj = :arg_rate, u_spt_price.sys_changetime_bj = getdate() WHERE u_spt_price.sptid = :arg_sptid AND u_spt_price.mtrlid = :arg_mtrlid AND u_spt_price.unit = :arg_unit AND u_spt_price.status = :arg_status AND u_spt_price.woodcode = :arg_woodcode AND u_spt_price.pcode = :arg_pcode AND u_spt_price.jgdscrp = :arg_jgdscrp AND u_spt_price.moneyid = :arg_moneyid; IF sqlca.SQLCode = 0 THEN IF sqlca.SQLNRows = 0 THEN INSERT INTO u_spt_price (sptid, mtrlid, unit, price_bj, fprice_bj, zqrate_bj, wareprice_bj, rate_bj, status, woodcode, pcode, jgdscrp, moneyid, dscrp, sys_changetime_bj) VALUES (:arg_sptid, :arg_mtrlid, :arg_unit, :arg_fprice * :arg_zqrate, :arg_fprice, :arg_zqrate, :arg_wareprice, :arg_rate, :arg_status, :arg_woodcode, :arg_pcode, :arg_jgdscrp, :arg_moneyid, :arg_dscrp, getdate()); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '新增物料:'+ls_mtrlcode+'供应商价格历史失败,'+sqlca.SQLErrText GOTO ext END IF END IF ELSE rslt = 0 arg_msg = '更新物料:'+ls_mtrlcode+'供应商价格历史失败,'+sqlca.SQLErrText GOTO ext END IF END IF //2.插入供应商售价变动明细表 INSERT INTO u_spt_price_mx (u_spt_price_mx.sptid, u_spt_price_mx.mtrlid, u_spt_price_mx.opdate, u_spt_price_mx.opemp, u_spt_price_mx.inwareid, u_spt_price_mx.inwarecode, u_spt_price_mx.outdate, u_spt_price_mx.price, u_spt_price_mx.fprice, u_spt_price_mx.zqrate, u_spt_price_mx.dscrp, u_spt_price_mx.status, u_spt_price_mx.woodcode, u_spt_price_mx.pcode, u_spt_price_mx.jgdscrp, u_spt_price_mx.buildtype, u_spt_price_mx.unit, u_spt_price_mx.printid, u_spt_price_mx.wareprice, u_spt_price_mx.wareprice_notax, u_spt_price_mx.rate, u_spt_price_mx.billtype, u_spt_price_mx.moneyid, u_spt_price_mx.effdate, u_spt_price_mx.effdate_end, ifbj ) VALUES ( :arg_sptid, :arg_mtrlid, getdate(), :publ_operator, :arg_inwareid, :arg_inwarecode, :arg_indate, :arg_fprice * :arg_zqrate, :arg_fprice, :arg_zqrate, :arg_dscrp, :arg_status, :arg_woodcode, :arg_pcode, :arg_jgdscrp, :arg_buildtype, :arg_unit, :arg_printid, :arg_wareprice, :arg_wareprice_notax, :arg_rate, :arg_billtype, :arg_moneyid, :arg_effdate, :arg_effdate_end, :arg_ifbj); IF sqlca.SQLCode <> 0 THEN rslt = 0 arg_msg = '建立物料:'+ls_mtrlcode+'供应商价格历史明细失败,'+sqlca.SQLErrText GOTO ext END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF arg_ifcommit And rslt = 1 THEN COMMIT; END IF RETURN rslt end function public function integer uof_update_sptprice (integer arg_ifth, long arg_sptid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, long arg_inwareid, decimal arg_fprice, decimal arg_zqrate, decimal arg_rate, decimal arg_wareprice, decimal arg_wareprice_notax, datetime arg_indate, string arg_inwarecode, long arg_flag, string arg_dscrp, long arg_printid, integer arg_billtype, long arg_moneyid, datetime arg_effdate, datetime arg_effdate_end, boolean arg_ifcommit, ref string arg_msg);Int li_ifbj IF arg_billtype = 0 Or arg_billtype = 1 THEN //采购,外协收货单 li_ifbj = 0 ELSE //报价, 手动添加 li_ifbj = 1 END IF RETURN uof_sptmtrlprice_set ( arg_ifth, li_ifbj, arg_sptid, arg_moneyid, arg_mtrlid, arg_unit, arg_status, arg_woodcode, arg_pcode, arg_jgdscrp, & arg_effdate, arg_effdate_end, arg_fprice, arg_zqrate, arg_rate, arg_wareprice,arg_wareprice_notax,& arg_billtype, arg_flag, arg_inwareid, arg_inwarecode, arg_printid, arg_indate, arg_dscrp, arg_ifcommit, arg_msg) //Long rslt = 1 //Long cnt = 0 //DateTime server_time //String ls_mtrlcode //Int li_price_ifpz_buy // ////检查退货 //IF arg_ifth = 1 THEN // rslt = 1 // GOTO ext //END IF // ////yyx2013-4-12 //IF arg_fprice = 0 THEN // rslt = 1 // GOTO ext //END IF ////end yyx2013-4-12 // ////检查参数 //IF IsNull(arg_sptid) THEN arg_sptid = 0 //IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0 //IF IsNull(arg_status) THEN arg_status = '' //IF IsNull(arg_fprice) THEN arg_fprice = 0.0 //IF IsNull(arg_moneyid) THEN arg_moneyid = 0 // //IF IsNull(arg_woodcode) THEN arg_woodcode = '' //IF IsNull(arg_pcode) THEN arg_pcode = '' //IF IsNull(arg_jgdscrp) THEN arg_jgdscrp = '' // // //arg_inwarecode = Trim(arg_inwarecode) //arg_status = Trim(arg_status) //arg_woodcode = Trim(arg_woodcode) //arg_pcode = Trim(arg_pcode) //arg_jgdscrp = Trim(arg_jgdscrp) // // //arg_unit = Trim(arg_unit) // //IF arg_indate <= DateTime(Date('1900-01-01'),Time(0)) THEN // rslt = 0 // arg_msg = '不合理的发生时间' // GOTO ext //END IF // // ////获得服务器时间 //SELECT Top 1 getdate() Into :server_time From u_user; // ////检查供应商存在否 //SELECT count(*) // INTO :cnt // FROM u_spt // Where u_spt.sptid = :arg_sptid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText // GOTO ext //END IF // //IF cnt = 0 THEN // rslt = 0 // arg_msg = '供应商不存在' // GOTO ext //END IF // //cnt = 0 //SELECT count(*) INTO :cnt // FROM cw_currency // Where moneyid = :arg_moneyid; //IF sqlca.SQLCode <> 0 THEN // arg_msg = '查询币种失败' // rslt = 0 // GOTO ext //END IF // //IF cnt = 0 THEN // arg_msg = '币种资料不存在' // rslt = 0 // GOTO ext //END IF // // ////检查商品存在否 //SELECT mtrlcode, // price_ifpz_buy // INTO :ls_mtrlcode, // :li_price_ifpz_buy // FROM u_mtrldef // Where u_mtrldef.mtrlid = :arg_mtrlid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询物料编码失败,'+sqlca.SQLErrText // GOTO ext //END IF // //CHOOSE CASE li_price_ifpz_buy // CASE 0 // arg_status = '' // arg_woodcode = '' // arg_pcode = '' // CASE 1 // arg_pcode = '' // arg_woodcode = '' // CASE 2 // arg_status = '' // arg_pcode = '' // CASE 3 // arg_status = '' // arg_woodcode = '' // CASE 4 // arg_pcode = '' // CASE 5 // arg_status = '' // CASE 6 // arg_woodcode = '' //END CHOOSE // ////1.更新供应商售价表 //SELECT count(*) // INTO :cnt // FROM u_spt_price // WHERE u_spt_price.sptid = :arg_sptid AND // u_spt_price.mtrlid = :arg_mtrlid AND // u_spt_price.unit = :arg_unit AND // u_spt_price.status = :arg_status AND // u_spt_price.woodcode = :arg_woodcode AND // u_spt_price.pcode = :arg_pcode AND // u_spt_price.jgdscrp = :arg_jgdscrp AND // u_spt_price.moneyid = :arg_moneyid; //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其他原因查询供应商物料:'+ls_mtrlcode+'最新价格失败'+sqlca.SQLErrText // GOTO ext //END IF // // //IF cnt > 0 THEN // UPDATE u_spt_price // SET u_spt_price.sptid = :arg_sptid, // u_spt_price.mtrlid = :arg_mtrlid, // u_spt_price.price = :arg_fprice * :arg_zqrate, // u_spt_price.fprice = :arg_fprice, // u_spt_price.zqrate = :arg_zqrate, // u_spt_price.wareprice = :arg_wareprice, // u_spt_price.rate = :arg_rate, // u_spt_price.unit = :arg_unit, // u_spt_price.sys_changetime = getdate() // WHERE u_spt_price.sptid = :arg_sptid AND // u_spt_price.mtrlid = :arg_mtrlid AND // u_spt_price.unit = :arg_unit AND // u_spt_price.status = :arg_status AND // u_spt_price.woodcode = :arg_woodcode AND // u_spt_price.pcode = :arg_pcode AND // u_spt_price.jgdscrp = :arg_jgdscrp AND // u_spt_price.moneyid = :arg_moneyid; // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络和其它原因,供应商物料:'+ls_mtrlcode+'报价表更新失败'+sqlca.SQLErrText // GOTO ext // END IF //ELSEIF cnt = 0 THEN // INSERT INTO u_spt_price // (sptid, // mtrlid, // price, // fprice, // zqrate, // dscrp, // unit, // wareprice, // rate, // status, // woodcode, // pcode, // jgdscrp, // moneyid, // sys_changetime) // VALUES // (:arg_sptid, // :arg_mtrlid, // :arg_fprice * :arg_zqrate, // :arg_fprice, // :arg_zqrate, // :arg_dscrp, // :arg_unit, // :arg_wareprice, // :arg_rate, // :arg_status, // :arg_woodcode, // :arg_pcode, // :arg_jgdscrp, // :arg_moneyid, // getdate()); // IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络或其他原因,新增供应商物料:'+ls_mtrlcode+'报价失败,'+sqlca.SQLErrText // GOTO ext // END IF //END IF // ////2.插入供应商售价变动明细表 //INSERT INTO u_spt_price_mx // (u_spt_price_mx.sptid, // u_spt_price_mx.mtrlid, // u_spt_price_mx.opdate, // u_spt_price_mx.opemp, // u_spt_price_mx.inwareid, // u_spt_price_mx.inwarecode, // u_spt_price_mx.outdate, // u_spt_price_mx.price, // u_spt_price_mx.fprice, // u_spt_price_mx.zqrate, // u_spt_price_mx.dscrp, // u_spt_price_mx.status, // u_spt_price_mx.woodcode, // u_spt_price_mx.pcode, // u_spt_price_mx.jgdscrp, // u_spt_price_mx.buildtype, // u_spt_price_mx.unit, // u_spt_price_mx.printid, // u_spt_price_mx.wareprice, // u_spt_price_mx.rate, // u_spt_price_mx.billtype, // u_spt_price_mx.moneyid, // u_spt_price_mx.effdate // ) // VALUES // ( // :arg_sptid, // :arg_mtrlid, // :server_time, // :publ_operator, // :arg_inwareid, // :arg_inwarecode, // :arg_indate, // :arg_fprice * :arg_zqrate, // :arg_fprice, // :arg_zqrate, // :arg_dscrp, // :arg_status, // :arg_woodcode, // :arg_pcode, // :arg_jgdscrp, // :arg_flag, // :arg_unit, // :arg_printid, // :arg_wareprice, // :arg_rate, // :arg_billtype, // :arg_moneyid, // :arg_effdate); //IF sqlca.SQLCode <> 0 THEN // rslt = 0 // arg_msg = '因网络或其他原因,建立供应商物料:'+ls_mtrlcode+'报价历史失败' // GOTO ext //END IF // //ext: //IF rslt = 0 THEN // ROLLBACK; //ELSEIF arg_ifcommit And rslt = 1 THEN // COMMIT; //END IF // //RETURN rslt end function public function integer uof_getmtrlsptbuyareaprice (long arg_moneyid, long arg_sptid, long arg_mtrlid, ref string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, string arg_jgdscrp, ref long arg_buybargainid, ref long arg_buybargainprintid, ref string arg_buybargaincode, ref decimal arg_price, ref decimal arg_otherprice, ref decimal arg_areaqty, ref string arg_msg);Long rslt = 1 Decimal rtn_price,rtn_zqrate,rtn_rate String ls_unit String rtn_wareunit Int li_iflimitprice,li_price_ifpz_buy Long ll_buybargainid, ll_buybargainprintid String ls_buybargaincode decimal lde_price, lde_rebate, lde_otherprice, lde_areaqty //lde_rebate = 1 //IF sys_option_buy_getbuybargain = 0 THEN ll_buybargainid = 0 ll_buybargainprintid = 0 ls_buybargaincode = '' lde_price = 0 lde_otherprice = 0 lde_rebate = 1 lde_areaqty = 0 // GOTO ext //END IF arg_status = Trim(arg_status) arg_woodcode = Trim(arg_woodcode) arg_pcode = Trim(arg_pcode) arg_jgdscrp = Trim(arg_jgdscrp) arg_unit = Trim(arg_unit) SELECT iflimitprice,price_ifpz_buy , unit INTO :li_iflimitprice,:li_price_ifpz_buy, :ls_unit FROM u_mtrldef Where mtrlid = :arg_mtrlid; IF sqlca.SQLCode <> 0 THEN arg_msg = '查询物料限价属性失败 '+sqlca.SQLErrText rslt = 0 GOTO ext END IF CHOOSE CASE li_price_ifpz_buy CASE 0 arg_status = '' arg_woodcode = '' arg_pcode = '' CASE 1 arg_pcode = '' arg_woodcode = '' CASE 2 arg_status = '' arg_pcode = '' CASE 3 arg_status = '' arg_woodcode = '' CASE 4 arg_pcode = '' CASE 5 arg_status = '' CASE 6 arg_woodcode = '' END CHOOSE IF arg_unit = '' THEN arg_unit = ls_unit END IF SELECT top 1 billid,printid,billcode, price,otherprice, areaqty INTO :ll_buybargainid,:ll_buybargainprintid,:ls_buybargaincode, :lde_price, :lde_otherprice, :lde_areaqty FROM ( SELECT top 1 u_buybargainmx.price, u_buybargainmx.otherprice, u_buybargainmx.areaqty, u_buybargainmx.rate as rate, u_buybargainmx.unit as unit, u_buybargainmx.billid as billid, u_buybargainmx.printid as printid, ltrim(rtrim(u_buybargain.Billcode))+'[合同]' as billcode, u_buybargain.auditdate as auditdate FROM u_buybargain INNER JOIN u_buybargainmx ON u_buybargain.billid = u_buybargainmx.billid WHERE u_buybargain.flag = 1 AND u_buybargain.sptid_b = :arg_sptid AND u_buybargainmx.mtrlid = :arg_mtrlid AND u_buybargainmx.unit = :arg_unit AND u_buybargain.moneyid = :arg_moneyid and u_buybargainmx.material = :arg_jgdscrp ORDER BY u_buybargain.auditdate DESC UNION SELECT top 1 u_spt_price_changemx.price, 0 as otherprice, 0 as areaqty, u_spt_price_changemx.rate, u_spt_price_changemx.unit, u_spt_price_changemx.billid, u_spt_price_changemx.printid, ltrim(rtrim(u_spt_price_change.Billcode))+'[调价]', u_spt_price_change.auditdate as auditdate FROM u_spt_price_change INNER JOIN u_spt_price_changemx ON u_spt_price_change.billid = u_spt_price_changemx.billid WHERE (u_spt_price_change.flag = 1) AND u_spt_price_change.sptid = :arg_sptid AND u_spt_price_changemx.mtrlid = :arg_mtrlid AND u_spt_price_change.moneyid = :arg_moneyid AND u_spt_price_changemx.unit = :arg_unit AND u_spt_price_changemx.status = :arg_status AND u_spt_price_changemx.woodcode = :arg_woodcode AND u_spt_price_changemx.pcode = :arg_pcode and u_spt_price_changemx.jgdscrp = :arg_jgdscrp ORDER BY u_spt_price_change.auditdate DESC) A Order By A.auditdate Desc; IF sqlca.SQLCode <> 0 THEN ll_buybargainid = 0 ll_buybargainprintid = 0 ls_buybargaincode = '' lde_price = 0 lde_otherprice = 0 lde_areaqty = 0 END IF ext: arg_buybargainid = ll_buybargainid arg_buybargainprintid = ll_buybargainprintid arg_buybargaincode = ls_buybargaincode arg_price = lde_price arg_areaqty = lde_areaqty arg_otherprice = lde_otherprice RETURN rslt end function on uo_spt_price.create call super::create TriggerEvent( this, "constructor" ) end on on uo_spt_price.destroy TriggerEvent( this, "destructor" ) call super::destroy end on event constructor;String arg_msg String str_optionvalue str_optionvalue = '' f_get_sys_option_value('053',str_optionvalue,arg_msg) uo_option_buyprice_ifbj = Long(str_optionvalue) str_optionvalue = '' f_get_sys_option_value('244',str_optionvalue,arg_msg) uo_option_sptprice_effdate = Long(str_optionvalue) str_optionvalue = '' f_get_sys_option_value('366',str_optionvalue,arg_msg) uo_option_zero_update_sptprice = Long(str_optionvalue) end event