12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490 |
- $PBExportHeader$uo_cusprice.sru
- forward
- global type uo_cusprice from nonvisualobject
- end type
- end forward
- global type uo_cusprice from nonvisualobject
- end type
- global uo_cusprice uo_cusprice
- forward prototypes
- public function integer uf_autodel_cuspricemx (datetime arg_begindate, boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_update_custprice (integer arg_ifth, long arg_scid, long arg_cusid, long arg_mtrlid, string arg_mtrlcode, string arg_woodcode, string arg_status, string arg_pcode, long arg_outwareid, string arg_outwarecode, datetime arg_outdate, decimal arg_price, decimal arg_zqrate, decimal arg_cost, long arg_flag, string arg_dscrp, long arg_printid, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg, decimal arg_rate, decimal arg_wareprice, string arg_unit)
- public function integer uf_check_price (long arg_cusid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_pcode, string arg_woodcode, long arg_moneyid, decimal arg_price, ref string arg_msg)
- public function integer uf_getmtrlcusprice (long arg_moneyid, long arg_mtrlid, string arg_unit, string arg_woodcode, string arg_status, string arg_pcode, long arg_cusid, long arg_flag, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg)
- public function integer uf_del_sdcusprice (long arg_cusid, long arg_mtrlid, string arg_unit, string arg_woodcode, string arg_status, string arg_pcode, datetime arg_opdate, decimal arg_price, decimal arg_zqrate, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uf_del_cusprice (integer arg_ifth, long arg_cusid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_outwareid, long arg_printid, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg)
- public function integer uof_get_dft_pricelistid (ref s_sale_price_mx arg_s_mx, ref string arg_msg)
- public function integer uof_chk_pricelistid (long arg_pricelistid, long arg_moneyid, ref string arg_msg)
- public function integer uof_get_pricelist_price (ref s_sale_price_mx arg_s_mx, ref string arg_msg)
- public function integer uof_get_mtrl_saleprice (long arg_moneyid, long arg_cusid, long arg_mtrlid, string arg_unit, string arg_woodcode, string arg_status, string arg_pcode, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg)
- public function integer uof_get_lmsaleprice (long arg_mtrlid, ref decimal arg_saleprice, ref decimal arg_rebate)
- public function integer uof_get_quoteprice (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, ref decimal arg_saleprice, ref decimal arg_rebate)
- public function integer uof_get_saleprice_his (long arg_cusid, long arg_moneyid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, ref decimal arg_saleprice, ref decimal arg_rebate)
- public function integer uof_get_mtrl_saleprice_qty (long arg_moneyid, long arg_cusid, long arg_mtrlid, string arg_unit, string arg_woodcode, string arg_status, string arg_pcode, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, decimal arg_qty, ref string arg_msg)
- end prototypes
- public function integer uf_autodel_cuspricemx (datetime arg_begindate, boolean arg_ifcommit, ref string arg_msg);//uf_autodel_cuspricemx(arg_begindate,arg_ifcommit,arg_msg)
- //自动删除客户销售价格明细?指定时间以前的
- Long rslt = 1
- Long cnt = 0
- ////参数检查
- //IF arg_begindate < DateTime(Date('1900-01-01'),Time(0)) THEN MessageBox('提示','日期太早了')
- //IF Trim(arg_msg) = '' THEN arg_msg = ''
- ////删除时间范围内的记录
- //IF MessageBox(' 重要提示','删除指定时间以前所有采购历史价格记录(不能恢复),确认吗?',Exclamation!,OKCancel!) = 1 THEN
- // DELETE
- // FROM u_spt_price_mx
- // Where u_spt_price_mx.opdate <= :arg_begindate;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = '因网络或其他原因删除失败'+sqlca.SQLErrText
- // GOTO ext
- // 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 uf_update_custprice (integer arg_ifth, long arg_scid, long arg_cusid, long arg_mtrlid, string arg_mtrlcode, string arg_woodcode, string arg_status, string arg_pcode, long arg_outwareid, string arg_outwarecode, datetime arg_outdate, decimal arg_price, decimal arg_zqrate, decimal arg_cost, long arg_flag, string arg_dscrp, long arg_printid, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg, decimal arg_rate, decimal arg_wareprice, string arg_unit);Long rslt = 1
- Long cnt = 0
- DateTime server_time
- //检查退货,退货不加报价
- IF arg_ifth = 1 THEN
- rslt = 1
- GOTO ext
- END IF
- //检查参数
- IF IsNull(arg_cusid) THEN arg_cusid = 0
- IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
- IF IsNull(arg_status) THEN arg_status = ''
- IF IsNull(arg_price) THEN arg_price = 0
- IF arg_outdate <= DateTime(Date('1900-01-01'),Time(0)) THEN
- rslt = 0
- arg_msg = '错误的发生时间'
- GOTO ext
- END IF
- arg_outwarecode = Trim(arg_outwarecode)
- //获得服务器时间
- SELECT Top 1 getdate() Into :server_time From u_user;
- //检查客户存在否
- SELECT count(*)
- INTO :cnt
- FROM u_cust
- Where u_cust.cusid = :arg_cusid;
- 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 = '查询'+arg_mtrlcode+'失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- IF cnt = 0 THEN
- rslt = 0
- arg_msg = '编码不存在'+arg_mtrlcode
- GOTO ext
- END IF
- int ifpz = 7
- string ll_status = '',ll_woodcode = '',ll_pcode = ''
- //暂时改为三个配置
- //select price_ifpz into :ifpz from u_mtrldef where mtrlid = :arg_mtrlid;
- //IF sqlca.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = "查询操作失败,操作员"
- // GOTO ext
- //END IF
- choose case ifpz
- case 0
-
- case 1
- ll_status = arg_status
- case 2
- ll_woodcode = arg_woodcode
- case 3
- ll_pcode = arg_pcode
- case 4
- ll_status = arg_status
- ll_woodcode = arg_woodcode
- case 5
- ll_status = arg_status
- ll_pcode =arg_pcode
- case 6
- ll_woodcode = arg_woodcode
- ll_pcode = arg_pcode
- case else
- ll_status = arg_status
- ll_woodcode = arg_woodcode
- ll_pcode = arg_pcode
- end choose
- //1.更新客户销售价表
- UPDATE u_cus_price
- SET u_cus_price.price = :arg_price * :arg_zqrate,
- u_cus_price.fprice = :arg_price,
- u_cus_price.zqrate = :arg_zqrate,
- u_cus_price.wareprice = :arg_wareprice,
- u_cus_price.rate = :arg_rate,
- u_cus_price.dscrp = :arg_dscrp
- WHERE u_cus_price.cusid = :arg_cusid
- AND u_cus_price.mtrlid = :arg_mtrlid
- AND u_cus_price.woodcode = :ll_woodcode
- AND u_cus_price.status = :ll_status
- AND u_cus_price.pcode = :ll_pcode
- AND u_cus_price.moneyid = :arg_moneyid
- And u_cus_price.unit = :arg_unit;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_cus_price
- (cusid,
- mtrlid,
- woodcode,
- status,
- pcode,
- price,
- fprice,
- zqrate,
- dscrp,
- moneyid,
- unit,
- wareprice,
- rate)
- VALUES
- (
- :arg_cusid,
- :arg_mtrlid,
- :ll_woodcode,
- :ll_status,
- :ll_pcode,
- :arg_price * :arg_zqrate,
- :arg_price,
- :arg_zqrate,
- :arg_dscrp,
- :arg_moneyid,
- :arg_unit,
- :arg_wareprice,
- :arg_rate);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '新增客户销售'+arg_mtrlcode+'价格失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = '客户销售价表更新'+arg_mtrlcode+'失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- //2.插入客户销售变动明细价表
- INSERT INTO u_cus_price_mx
- (
- u_cus_price_mx.cusid,
- u_cus_price_mx.mtrlid,
- u_cus_price_mx.opdate,
- u_cus_price_mx.opemp,
- u_cus_price_mx.outwareid,
- u_cus_price_mx.outwarecode,
- u_cus_price_mx.outdate,
- u_cus_price_mx.price,
- u_cus_price_mx.fprice,
- u_cus_price_mx.zqrate,
- u_cus_price_mx.cost,
- u_cus_price_mx.woodcode,
- u_cus_price_mx.status,
- u_cus_price_mx.pcode,
- u_cus_price_mx.dscrp,
- u_cus_price_mx.buildtype,
- u_cus_price_mx.printid,
- u_cus_price_mx.moneyid,
- u_cus_price_mx.unit,
- u_cus_price_mx.wareprice,
- u_cus_price_mx.rate)
- VALUES
- (
- :arg_cusid,
- :arg_mtrlid,
- getdate(),
- :publ_operator,
- :arg_outwareid,
- :arg_outwarecode,
- :arg_outdate,
- :arg_price* :arg_zqrate,
- :arg_price,
- :arg_zqrate,
- :arg_cost,
- :arg_woodcode,
- :arg_status,
- :arg_pcode,
- :arg_dscrp,
- :arg_flag,
- :arg_printid,
- :arg_moneyid,
- :arg_unit,
- :arg_wareprice,
- :arg_rate);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '登记在客户'+arg_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 uf_check_price (long arg_cusid, long arg_mtrlid, string arg_mtrlcode, string arg_unit, string arg_status, string arg_pcode, string arg_woodcode, long arg_moneyid, decimal arg_price, ref string arg_msg);Decimal ld_lmsaleprice
- String ls_cusname,ls_listname
- Long ll_pricelistid
- Int rslt = 1,li_flag
- Long cnt = 0
- IF NOT f_power_ind(492) OR sys_power_issuper THEN
- rslt = 1
- GOTO ext
- END IF
- IF sys_option_price_if_status = 0 THEN
- arg_status = ''
- arg_pcode = ''
- arg_woodcode = ''
- END IF
- SELECT name,pricelistid INTO :ls_cusname,:ll_pricelistid
- FROM u_cust
- Where cusid = :arg_cusid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,客户资料"
- GOTO ext
- END IF
- IF ll_pricelistid = 0 THEN
- SELECT u_sale_price_list.pricelistid INTO :ll_pricelistid
- FROM u_sale_price_list,u_sale_price_mx
- WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
- AND u_sale_price_mx.mtrlid = :arg_mtrlid
- AND u_sale_price_mx.status = :arg_status
- AND u_sale_price_mx.pcode = :arg_pcode
- AND u_sale_price_mx.woodcode = :arg_woodcode
- AND u_sale_price_mx.unit = :arg_unit
- AND u_sale_price_list.moneyid = :arg_moneyid
- AND u_sale_price_list.dftflag = 1
- AND u_sale_price_list.flag = 1;
-
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- rslt = 0
- arg_msg = "编码:"+arg_mtrlcode+",标准格价表未设定"
- GOTO ext
- ELSEIF sqlca.SQLNRows > 1 THEN
- rslt = 0
- arg_msg = "编码:"+arg_mtrlcode+",有多于两个标准格价表"
- GOTO ext
- END IF
- ELSE
- rslt = 0
- arg_msg = "查询编码:"+arg_mtrlcode+",标准格价表操作失败"
- GOTO ext
- END IF
- END IF
- SELECT price,
- flag,
- listname
- INTO :ld_lmsaleprice,:li_flag,:ls_listname
- FROM u_sale_price_list,u_sale_price_mx
- WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
- AND u_sale_price_mx.mtrlid = :arg_mtrlid
- AND u_sale_price_mx.status = :arg_status
- AND u_sale_price_mx.pcode = :arg_pcode
- AND u_sale_price_mx.woodcode = :arg_woodcode
- AND u_sale_price_mx.pricelistid = :ll_pricelistid
- AND u_sale_price_mx.unit = :arg_unit ;
-
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询编码:'+arg_mtrlcode+'销售限价失败,可能该客户的销售限价还没有设定,请检查'
- GOTO ext
- END IF
- IF li_flag = 0 THEN
- rslt = 0
- arg_msg = '价格表:'+ls_listname+'未审核'
- GOTO ext
- END IF
- IF arg_price < ld_lmsaleprice THEN
- rslt = 0
- arg_msg = '客户:'+ls_cusname+',编码:'+arg_mtrlcode+'销售单价{'+String(arg_price,'#,##0.00##')+'} 低于销售限价{'+String(ld_lmsaleprice,'#,##0.00##')+'}'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uf_getmtrlcusprice (long arg_moneyid, long arg_mtrlid, string arg_unit, string arg_woodcode, string arg_status, string arg_pcode, long arg_cusid, long arg_flag, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg);//淘汰, 不用了
- //uf_getmtrlcusprice(arg_mtrlid,arg_cusid,arg_flag,arg_price,arg_zqrate,arg_msg)
- //功能:获得指定商品,指定客户的最新销售价格
- //参数:flag[0,最新销售价格,1次新销售价格]
- //参数:arg_price[返回最新价格]
- //返回:1成功,0失败,2查询失败
- Long rslt = 1
- //Long cnt = 0
- //Long count = 1 //记录取出个数
- //Decimal rtn_price,rtn_zqrate,rtn_rate
- //String rtn_unit
- //String rtn_wareunit
- //
- ////参数合法性检查
- //IF IsNull(arg_flag) THEN arg_flag = 0 //默认最新价格
- //IF IsNull(arg_msg) THEN arg_msg = ''
- //
- //IF arg_flag = 0 THEN
- // IF sys_option_price_if_list = 0 THEN
- //
- // SELECT fprice,zqrate,rate,unit
- // INTO :rtn_price,:rtn_zqrate,:rtn_rate ,:rtn_unit
- // FROM u_cus_price
- // WHERE u_cus_price.mtrlid = :arg_mtrlid
- // AND u_cus_price.cusid = :arg_cusid
- // AND u_cus_price.woodcode = :arg_woodcode
- // AND u_cus_price.status = :arg_status
- // AND u_cus_price.pcode = :Arg_pcode
- // AND u_cus_price.moneyid = :arg_moneyid
- // And u_cus_price.unit = :arg_unit;
- // 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_zqrate = 1
- // rtn_rate = 1
- // GOTO ext
- // END IF
- // ELSE //查价格表 rtn_rate 按默认值
- // String ls_cusname,ls_listname
- // Long ll_pricelistid
- // Decimal ld_lmsaleprice, lde_rebate, lde_rate
- // Int li_flag
- //
- // //
- // SELECT CASE :arg_unit when unit THEN 1 when unit_buy THEN rate_buy when unit_scll THEN rate_scll when unit_sale THEN rate_sale END
- // Into :lde_rate
- // From u_mtrldef
- // Where mtrlid = :arg_mtrlid;
- // IF sqlca.SQLCode <> 0 THEN
- // rtn_rate = arg_rate
- // ELSE
- // rtn_rate = lde_rate
- // END IF
- //
- // SELECT name,pricelistid INTO :ls_cusname,:ll_pricelistid
- // FROM u_cust
- // Where cusid = :arg_cusid;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 2
- // rtn_price = 0.00
- // rtn_zqrate = 1
- // GOTO ext
- // END IF
- //
- // IF sys_option_price_if_status = 0 THEN
- // arg_status = ''
- // Arg_pcode = ''
- // arg_woodcode = ''
- // END IF
- //
- //
- //
- //
- // IF ll_pricelistid = 0 THEN
- // SELECT u_sale_price_list.pricelistid INTO :ll_pricelistid
- // FROM u_sale_price_list,u_sale_price_mx
- // WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
- // AND u_sale_price_mx.mtrlid = :arg_mtrlid
- // AND u_sale_price_mx.status = :arg_status
- // AND u_sale_price_mx.pcode = :arg_pcode
- // AND u_sale_price_mx.woodcode = :arg_woodcode
- // AND u_sale_price_list.dftflag = 1
- // AND u_sale_price_list.moneyid = :arg_moneyid
- // And u_sale_price_list.flag = 1;
- //
- // IF sqlca.SQLCode = 0 THEN
- // IF sqlca.SQLNRows = 0 THEN
- // rslt = 2
- // rtn_price = 0.00
- // rtn_zqrate = 1
- // GOTO ext
- // ELSEIF sqlca.SQLNRows > 1 THEN
- // rslt = 2
- // rtn_price = 0.00
- // rtn_zqrate = 1
- // GOTO ext
- // END IF
- // ELSE
- // rslt = 2
- // rtn_price = 0.00
- // rtn_zqrate = 1
- // GOTO ext
- // END IF
- // END IF
- //
- //
- //
- //
- // SELECT price,
- // rebate,
- // flag,
- // listname
- // INTO :ld_lmsaleprice, :lde_rebate,:li_flag,:ls_listname
- // FROM u_sale_price_list,u_sale_price_mx
- // WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
- // AND u_sale_price_mx.mtrlid = :arg_mtrlid
- // AND u_sale_price_mx.status = :arg_status
- // AND u_sale_price_mx.pcode = :arg_pcode
- // AND u_sale_price_mx.woodcode = :arg_woodcode
- // AND u_sale_price_mx.pricelistid = :ll_pricelistid
- // AND u_sale_price_list.flag = 1
- // And u_sale_price_mx.unit = :arg_unit;
- // IF sqlca.SQLCode <> 0 THEN
- // rslt = 2
- // rtn_price = 0.00
- // rtn_zqrate = 1
- // GOTO ext
- // END IF
- //
- // IF li_flag = 0 THEN
- // rslt = 2
- // rtn_price = 0.00
- // rtn_zqrate = 1
- // GOTO ext
- // END IF
- //
- // rtn_price = ld_lmsaleprice
- // rtn_zqrate = lde_rebate
- // END IF
- //ELSEIF arg_flag = 1 THEN //取较新的价格
- // DECLARE get_price CURSOR FOR
- // SELECT fprice,zqrate,rate,unit
- // FROM u_cus_price_MX
- // WHERE u_cus_price_MX.cusid = :arg_cusid
- // AND u_cus_price_MX.mtrlid = :arg_mtrlid
- // AND u_cus_price_MX.woodcode = :arg_woodcode
- // AND u_cus_price_MX.status = :arg_status
- // AND u_cus_price_MX.pcode = :Arg_pcode
- // AND u_cus_price_MX.moneyid = :arg_moneyid
- // AND u_cus_price_MX.unit = :arg_unit
- // Order By u_cus_price_MX.opdate Desc;
- // //打开游标
- // OPEN get_price;
- // FETCH get_price Into :rtn_price,:rtn_zqrate,:rtn_rate,:rtn_unit;
- // rtn_price = 0.0
- // DO While (sqlca.SQLCode = 0 And count < 2 )
- // count++
- // FETCH get_price Into :rtn_price,:rtn_zqrate,:rtn_rate,:rtn_unit;
- // LOOP
- // CLOSE get_price;
- // //关闭游标
- // IF count = 1 THEN
- // rslt = 0
- // arg_msg = '没有较新的价格存在'
- // GOTO ext
- // END IF
- //END IF
- //
- //
- //ext:
- //arg_price = rtn_price
- //arg_zqrate = rtn_zqrate
- //arg_rate = rtn_rate
- //arg_unit = rtn_unit
- //
- RETURN rslt
- end function
- public function integer uf_del_sdcusprice (long arg_cusid, long arg_mtrlid, string arg_unit, string arg_woodcode, string arg_status, string arg_pcode, datetime arg_opdate, decimal arg_price, decimal arg_zqrate, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg);//手动删除记录
- //uf_del_cusprice(arg_cusid,arg_mtrlid,arg_opdate,arg_price,arg_ifcommit,arg_msg)
- Long rslt = 1
- Long cnt = 0
- //检查客户存在否
- SELECT count(*)
- INTO :cnt
- FROM u_cust
- Where u_cust.cusid = :arg_cusid;
- 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_cus_price_mx
- WHERE u_cus_price_mx.cusid = :arg_cusid
- AND u_cus_price_mx.mtrlid = :arg_mtrlid
- AND u_cus_price_mx.opdate = :arg_opdate
- AND u_cus_price_mx.woodcode = :arg_woodcode
- AND u_cus_price_mx.status = :arg_status
- AND u_cus_price_mx.pcode = :arg_pcode
- AND u_cus_price_mx.moneyid = :arg_moneyid
- AND u_cus_price_mx.unit = :arg_unit;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- //更新最新价格表
- UPDATE u_cus_price
- SET u_cus_price.price = :arg_price * :arg_zqrate,
- u_cus_price.fprice = :arg_price,
- u_cus_price.zqrate = :arg_zqrate
- WHERE u_cus_price.cusid = :arg_cusid
- AND u_cus_price.mtrlid = :arg_mtrlid
- AND u_cus_price.woodcode = :arg_woodcode
- AND u_cus_price.status = :arg_status
- AND u_cus_price.pcode = :arg_pcode
- AND u_cus_price.moneyid = :arg_moneyid
- AND u_cus_price.unit = :arg_unit;
- 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 uf_del_cusprice (integer arg_ifth, long arg_cusid, long arg_mtrlid, string arg_unit, string arg_status, string arg_woodcode, string arg_pcode, long arg_outwareid, long arg_printid, long arg_moneyid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
- Long cnt = 0,ll_cnt = 0
- DateTime ld_opdate
- //检查客户存在否
- SELECT count(*)
- INTO :cnt
- FROM u_cust
- Where u_cust.cusid = :arg_cusid;
- 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
- int ifpz = 7
- int ll_status = 0,ll_woodcode = 0,ll_pcode = 0
- select price_ifpz into :ifpz from u_mtrldef where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '因网络和其他原因查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
- choose case ifpz
- case 0
-
- case 1
- ll_status = 1
- case 2
- ll_woodcode = 1
- case 3
- ll_pcode = 1
- case 4
- ll_status = 1
- ll_woodcode = 1
- case 5
- ll_status = 1
- ll_pcode =1
- case 6
- ll_woodcode = 1
- ll_pcode = 1
- case else
- ll_status = 1
- ll_woodcode = 1
- ll_pcode = 1
- end choose
- SELECT count(*) INTO :cnt
- FROM u_cus_price_mx
- WHERE cusid = :arg_cusid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND outwareid = :arg_outwareid
- AND printid = :arg_printid
- AND (status = :arg_status or :ll_status = 0)
- AND (woodcode = :arg_woodcode or :ll_woodcode = 0 )
- AND (pcode = :arg_pcode or :ll_pcode = 0)
- AND 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_cus_price_mx
- WHERE cusid = :arg_cusid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND outwareid = :arg_outwareid
- AND printid = :arg_printid
- AND (status = :arg_status or :ll_status = 0)
- AND (woodcode = :arg_woodcode or :ll_woodcode = 0 )
- AND (pcode = :arg_pcode or :ll_pcode = 0)
- AND 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_cus_price_mx
- WHERE cusid = :arg_cusid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND (status = :arg_status or :ll_status = 0)
- AND (woodcode = :arg_woodcode or :ll_woodcode = 0 )
- AND (pcode = :arg_pcode or :ll_pcode = 0)
- AND Opdate > :ld_opdate
- AND 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_cus_price_mx
- WHERE cusid = :arg_cusid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND (status = :arg_status or :ll_status = 0)
- AND (woodcode = :arg_woodcode or :ll_woodcode = 0 )
- AND (pcode = :arg_pcode or :ll_pcode = 0)
- AND Opdate < :ld_opdate
- AND 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_cus_price
- WHERE cusid = :arg_cusid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND (status = :arg_status or :ll_status = 0)
- AND (woodcode = :arg_woodcode or :ll_woodcode = 0 )
- AND (pcode = :arg_pcode or :ll_pcode = 0)
- AND 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_cus_price_mx
- WHERE cusid = :arg_cusid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND (status = :arg_status or :ll_status = 0)
- AND (woodcode = :arg_woodcode or :ll_woodcode = 0 )
- AND (pcode = :arg_pcode or :ll_pcode = 0)
- AND Opdate < :ld_opdate
- AND moneyid = :arg_moneyid
- Order By Opdate Desc;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询失败'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_cus_price
- SET fprice = :ld_fprice ,
- zqrate = :ld_zqrate,
- price = :ld_price,
- sys_changetime = :ld_sys_changetime
- WHERE cusid = :arg_cusid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND (status = :arg_status or :ll_status = 0)
- AND (woodcode = :arg_woodcode or :ll_woodcode = 0 )
- AND (pcode = :arg_pcode or :ll_pcode = 0)
- AND 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_cus_price_mx
- Where cusid = :arg_cusid
- AND mtrlid = :arg_mtrlid
- AND unit = :arg_unit
- AND outwareid = :arg_outwareid
- AND printid = :arg_printid
- AND status = :arg_status
- AND woodcode = :arg_woodcode
- AND pcode = :arg_pcode
- AND 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_get_dft_pricelistid (ref s_sale_price_mx arg_s_mx, ref string arg_msg);Int rslt = 1
- Long ll_pricelistid
- SELECT top 1 u_sale_price_list.pricelistid INTO :ll_pricelistid
- FROM u_sale_price_list,u_sale_price_mx
- WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
- AND u_sale_price_mx.mtrlid = :arg_s_mx.mtrlid
- // AND u_sale_price_mx.status = :arg_s_mx.status
- // AND u_sale_price_mx.pcode = :arg_s_mx.pcode
- // AND u_sale_price_mx.woodcode = :arg_s_mx.woodcode
- AND (u_sale_price_mx.saleqty <= :arg_s_mx.qty and u_sale_price_mx.saleqty1 >= :arg_s_mx.qty)
- AND u_sale_price_list.dftflag = 1
- AND u_sale_price_list.moneyid = :arg_s_mx.moneyid
- And u_sale_price_list.flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- ll_pricelistid = 0
- END IF
- IF IsNull(ll_pricelistid) THEN ll_pricelistid = 0
- IF ll_pricelistid = 0 THEN
- rslt = 0
- END IF
- arg_s_mx.pricelistid = ll_pricelistid
- RETURN rslt
- end function
- public function integer uof_chk_pricelistid (long arg_pricelistid, long arg_moneyid, ref string arg_msg);
- //检查价格表和币种是否对应
- Int rslt = 1
- Long ll_moneyid_pricelist
- Int li_flag
- IF arg_pricelistid = 0 THEN
- arg_msg = '客户价格表ID错误(=0)'
- rslt = 0
- GOTO ext
- END IF
- SELECT moneyid , flag
- INTO :ll_moneyid_pricelist, :li_flag
- FROM u_sale_price_list
- Where u_sale_price_list.pricelistid = :arg_pricelistid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询客户价格表对应币种失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF ll_moneyid_pricelist <> arg_moneyid THEN
- arg_msg = '客户价格表对应币种与检查币种不相符'
- rslt = 0
- GOTO ext
- END IF
- IF li_flag = 0 THEN
- arg_msg = '客户价格表未审核'
- rslt = 0
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer uof_get_pricelist_price (ref s_sale_price_mx arg_s_mx, ref string arg_msg);Int rslt = 1
- Long ll_i
- Int li_statusflag
- String ls_status
- Decimal obj_price, lde_saleprice, lde_rebate
- s_mtrlcfg_expr s_pz[]
- SELECT statusflag
- INTO :li_statusflag
- FROM u_mtrldef
- Where mtrlid = :arg_s_mx.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- li_statusflag = 0
- END IF
- IF li_statusflag = 2 And arg_s_mx.status <> '' THEN //组合配置,自动按子件计算单价
- //类似于 price_ifpz = 1
- f_checkpz(arg_s_mx.status,s_pz[])
- arg_s_mx.pcode = ''
- arg_s_mx.woodcode = ''
- ELSE
- s_pz[1].cfgname = arg_s_mx.status
- s_pz[1].qty = '1'
- END IF
- lde_saleprice = 0
- lde_rebate = 1
- FOR ll_i = 1 To UpperBound(s_pz)
- ls_status = s_pz[ll_i].cfgname
- SELECT top 1 price,
- rebate
- INTO :obj_price, :lde_rebate
- FROM u_sale_price_list,u_sale_price_mx
- WHERE u_sale_price_mx.pricelistid = u_sale_price_list.pricelistid
- AND u_sale_price_mx.mtrlid = :arg_s_mx.mtrlid
- AND u_sale_price_mx.status = :ls_status
- AND u_sale_price_mx.pcode = :arg_s_mx.pcode
- AND u_sale_price_mx.woodcode = :arg_s_mx.woodcode
- AND (u_sale_price_mx.saleqty <= :arg_s_mx.qty and u_sale_price_mx.saleqty1 >= :arg_s_mx.qty)
- AND u_sale_price_mx.pricelistid = :arg_s_mx.pricelistid
- And u_sale_price_mx.unit = :arg_s_mx.unit;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询价格表价格失败,"+sqlca.sqlerrtext
- lde_saleprice = 0
- obj_price = 0
- lde_rebate = 1
- goto ext
- END IF
- lde_saleprice += obj_price * Dec(s_pz[ll_i].qty)
- NEXT
- ext:
- arg_s_mx.price = lde_saleprice
- arg_s_mx.rebate = lde_rebate
- RETURN rslt
- end function
- public function integer uof_get_mtrl_saleprice (long arg_moneyid, long arg_cusid, long arg_mtrlid, string arg_unit, string arg_woodcode, string arg_status, string arg_pcode, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, ref string arg_msg);//uof_get_mtrl_saleprice(arg_mtrlid,arg_cusid,arg_flag,arg_price,arg_zqrate,arg_msg)
- //功能:获得指定商品,指定客户的最新销售价格
- //参数:flag[0,最新销售价格,1次新销售价格]
- //参数:arg_price[返回最新价格]
- //返回:1成功,0失败,2查询失败
- Long rslt = 1
- Long cnt = 0
- Long count = 1 //记录取出个数
- Decimal rtn_price,rtn_zqrate,rtn_rate
- Decimal lde_saleprice, lde_rebate, lde_rate, obj_price
- String rtn_unit
- String rtn_wareunit
- int ls_price_ifpz
- //参数合法性检查
- IF arg_moneyid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_cusid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_mtrlid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- if sys_option_price_if_list <> 0 then
- select price_ifpz into :ls_price_ifpz from u_mtrldef where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 2
- GOTO ext
- END IF
- choose case ls_price_ifpz
- case 0 //不使用
- arg_status = ''
- arg_woodcode = ''
- arg_pcode = ''
- case 1//配置
- arg_woodcode = ''
- arg_pcode = ''
- case 2//配置1
- arg_status = ''
- arg_pcode = ''
- case 3//配置2
- arg_status = ''
- arg_woodcode = ''
- case 4//配置+配置1
- arg_pcode = ''
- case 5//配置1+配置2
- arg_status = ''
- case 6//配置+配置2
- arg_woodcode = ''
- //else 配置+配置1+配置2
- end choose
-
- end if
- IF sys_option_price_if_list = 0 THEN //取销售历史
-
- IF uof_get_saleprice_his(arg_cusid, arg_moneyid, arg_mtrlid, arg_status, arg_woodcode, arg_pcode, arg_unit , lde_saleprice, lde_rebate) = 0 THEN
- lde_saleprice = 0
- lde_rebate = 1
- END IF
-
- rtn_price = lde_saleprice
- rtn_zqrate = lde_rebate
-
-
- ELSEIF sys_option_price_if_list = 1 THEN //查价格表 rtn_rate 按默认值
- Long ll_i
- String ls_cusname,ls_listname
- Long ll_pricelistid
- Int li_flag, li_statusflag, li_price_ifpz
- String ls_unit, ls_status
- s_mtrlcfg_expr s_pz[]
-
-
- //
- SELECT unit,
- CASE :arg_unit when unit THEN 1 when unit_buy THEN rate_buy when unit_scll THEN rate_scll when unit_sale THEN rate_sale END,
- statusflag
- INTO :ls_unit, :lde_rate, :li_statusflag
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rtn_rate = arg_rate
- arg_unit = ls_unit
- ELSE
- rtn_rate = lde_rate
- END IF
-
- IF sys_option_price_if_status = 0 THEN
- IF li_statusflag <> 2 THEN
- arg_status = ''
- END IF
- arg_pcode = ''
- arg_woodcode = ''
- END IF
-
- SELECT name,pricelistid
- INTO :ls_cusname,:ll_pricelistid
- FROM u_cust
- Where cusid = :arg_cusid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 2 //没有价格表
- GOTO ext
- END IF
-
- s_sale_price_mx s_mx
- s_mx.mtrlid = arg_mtrlid
- s_mx.status = arg_status
- s_mx.woodcode = arg_woodcode
- s_mx.pcode = arg_pcode
- s_mx.unit = arg_unit
- s_mx.moneyid = arg_moneyid
- IF ll_pricelistid = 0 THEN
- IF uof_get_dft_pricelistid(s_mx, arg_msg) = 0 THEN
- rslt = 2 //无标准价格表 或未审核
- GOTO ext
- END IF
- ll_pricelistid = s_mx.pricelistid
- ELSE
- s_mx.pricelistid = ll_pricelistid
- END IF
-
- IF uof_chk_pricelistid(ll_pricelistid, arg_moneyid, arg_msg) = 0 THEN
- rslt = 2 //币种不对, 未审核
- GOTO ext
- END IF
-
- //新增,优化代码 20130925
- IF uof_get_pricelist_price(s_mx, arg_msg) = 0 THEN
- rslt = 2 //查询失败
- GOTO ext
- END IF
-
- rtn_price = s_mx.price
- rtn_zqrate = s_mx.rebate
-
- ELSEIF sys_option_price_if_list = 2 THEN //取报价单
-
- IF uof_get_quoteprice(arg_mtrlid, arg_status, arg_woodcode, arg_pcode, arg_unit , lde_saleprice, lde_rebate) = 0 THEN
- lde_saleprice = 0
- lde_rebate = 1
- END IF
-
- rtn_price = lde_saleprice
- rtn_zqrate = lde_rebate
-
-
- ELSEIF sys_option_price_if_list = 3 THEN //取设定售价
-
- IF uof_get_lmsaleprice(arg_mtrlid, lde_saleprice, lde_rebate) = 0 THEN
- lde_saleprice = 0
- lde_rebate = 1
- END IF
-
- rtn_price = lde_saleprice
- rtn_zqrate = lde_rebate
- 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 //这2个字段没用的
- arg_unit = rtn_unit //这2个字段没用的
- RETURN rslt
- end function
- public function integer uof_get_lmsaleprice (long arg_mtrlid, ref decimal arg_saleprice, ref decimal arg_rebate);Int rslt = 1
- SELECT lmsaleprice
- INTO :arg_saleprice
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_saleprice = 0
- END IF
- arg_rebate = 1
- RETURN rslt
- end function
- public function integer uof_get_quoteprice (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, ref decimal arg_saleprice, ref decimal arg_rebate);Int rslt = 1
- SELECT top 1 u_quotemx.sumprice, u_quotemx.rebate
- INTO :arg_saleprice, :arg_rebate
- FROM u_quotemx INNER JOIN
- u_quote ON u_quotemx.scid = u_quote.scid AND
- u_quotemx.quoteid = u_quote.quoteid
- WHERE (u_quote.flag = 1)
- AND u_quotemx.mtrlid = :arg_mtrlid
- AND u_quotemx.status = :arg_status
- AND u_quotemx.woodcode = :arg_woodcode
- AND u_quotemx.pcode = :arg_pcode
- AND u_quotemx.unit = :arg_unit
- Order By u_quote.quotedate Desc;
- IF sqlca.SQLCode <> 0 THEN
- arg_saleprice = 0
- arg_rebate = 1
- END IF
- RETURN rslt
- end function
- public function integer uof_get_saleprice_his (long arg_cusid, long arg_moneyid, long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, string arg_unit, ref decimal arg_saleprice, ref decimal arg_rebate);Int rslt = 1
- SELECT fprice,zqrate
- INTO :arg_saleprice,:arg_rebate
- FROM u_cus_price
- WHERE u_cus_price.cusid = :arg_cusid
- AND u_cus_price.moneyid = :arg_moneyid
- AND u_cus_price.mtrlid = :arg_mtrlid
- AND u_cus_price.status = :arg_status
- AND u_cus_price.woodcode = :arg_woodcode
- AND u_cus_price.pcode = :arg_pcode
- And u_cus_price.unit = :arg_unit;
- IF sqlca.SQLCode <> 0 THEN
- arg_saleprice = 0
- arg_rebate = 1
- END IF
- RETURN rslt
- end function
- public function integer uof_get_mtrl_saleprice_qty (long arg_moneyid, long arg_cusid, long arg_mtrlid, string arg_unit, string arg_woodcode, string arg_status, string arg_pcode, ref decimal arg_price, ref decimal arg_zqrate, ref decimal arg_rate, decimal arg_qty, ref string arg_msg);//uof_get_mtrl_saleprice(arg_mtrlid,arg_cusid,arg_flag,arg_price,arg_zqrate,arg_msg)
- //功能:获得指定商品,指定客户的最新销售价格
- //参数:flag[0,最新销售价格,1次新销售价格]
- //参数:arg_price[返回最新价格]
- //返回:1成功,0失败,2查询失败
- Long rslt = 1
- Long cnt = 0
- Long count = 1 //记录取出个数
- Decimal rtn_price,rtn_zqrate,rtn_rate
- Decimal lde_saleprice, lde_rebate, lde_rate, obj_price
- String rtn_unit
- String rtn_wareunit
- int ls_price_ifpz
- //参数合法性检查
- IF arg_moneyid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_cusid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF arg_mtrlid = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- if sys_option_price_if_list <> 0 then
- select price_ifpz into :ls_price_ifpz from u_mtrldef where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 2
- GOTO ext
- END IF
- choose case ls_price_ifpz
- case 0 //不使用
- arg_status = ''
- arg_woodcode = ''
- arg_pcode = ''
- case 1//配置
- arg_woodcode = ''
- arg_pcode = ''
- case 2//配置1
- arg_status = ''
- arg_pcode = ''
- case 3//配置2
- arg_status = ''
- arg_woodcode = ''
- case 4//配置+配置1
- arg_pcode = ''
- case 5//配置1+配置2
- arg_status = ''
- case 6//配置+配置2
- arg_woodcode = ''
- //else 配置+配置1+配置2
- end choose
-
- end if
- IF sys_option_price_if_list = 0 THEN //取销售历史
-
- IF uof_get_saleprice_his(arg_cusid, arg_moneyid, arg_mtrlid, arg_status, arg_woodcode, arg_pcode, arg_unit , lde_saleprice, lde_rebate) = 0 THEN
- lde_saleprice = 0
- lde_rebate = 1
- END IF
-
- rtn_price = lde_saleprice
- rtn_zqrate = lde_rebate
-
-
- ELSEIF sys_option_price_if_list = 1 THEN //查价格表 rtn_rate 按默认值
- Long ll_i
- String ls_cusname,ls_listname
- Long ll_pricelistid
- Int li_flag, li_statusflag, li_price_ifpz
- String ls_unit, ls_status
- s_mtrlcfg_expr s_pz[]
-
-
- //
- SELECT unit,
- CASE :arg_unit when unit THEN 1 when unit_buy THEN rate_buy when unit_scll THEN rate_scll when unit_sale THEN rate_sale END,
- statusflag
- INTO :ls_unit, :lde_rate, :li_statusflag
- FROM u_mtrldef
- Where mtrlid = :arg_mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rtn_rate = arg_rate
- arg_unit = ls_unit
- ELSE
- rtn_rate = lde_rate
- END IF
-
- IF sys_option_price_if_status = 0 THEN
- IF li_statusflag <> 2 THEN
- arg_status = ''
- END IF
- arg_pcode = ''
- arg_woodcode = ''
- END IF
-
- SELECT name,pricelistid
- INTO :ls_cusname,:ll_pricelistid
- FROM u_cust
- Where cusid = :arg_cusid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 2 //没有价格表
- GOTO ext
- END IF
-
- s_sale_price_mx s_mx
- s_mx.mtrlid = arg_mtrlid
- s_mx.status = arg_status
- s_mx.woodcode = arg_woodcode
- s_mx.pcode = arg_pcode
- s_mx.unit = arg_unit
- s_mx.moneyid = arg_moneyid
- s_mx.qty = arg_qty
- IF ll_pricelistid = 0 THEN
- IF uof_get_dft_pricelistid(s_mx, arg_msg) = 0 THEN
- rslt = 2 //无标准价格表 或未审核
- GOTO ext
- END IF
- ll_pricelistid = s_mx.pricelistid
- ELSE
- s_mx.pricelistid = ll_pricelistid
- END IF
-
- IF uof_chk_pricelistid(ll_pricelistid, arg_moneyid, arg_msg) = 0 THEN
- rslt = 2 //币种不对, 未审核
- GOTO ext
- END IF
-
- //新增,优化代码 20130925
- IF uof_get_pricelist_price(s_mx, arg_msg) = 0 THEN
- rslt = 2 //查询失败
- GOTO ext
- END IF
-
- rtn_price = s_mx.price
- rtn_zqrate = s_mx.rebate
-
- ELSEIF sys_option_price_if_list = 2 THEN //取报价单
-
- IF uof_get_quoteprice(arg_mtrlid, arg_status, arg_woodcode, arg_pcode, arg_unit , lde_saleprice, lde_rebate) = 0 THEN
- lde_saleprice = 0
- lde_rebate = 1
- END IF
-
- rtn_price = lde_saleprice
- rtn_zqrate = lde_rebate
-
-
- ELSEIF sys_option_price_if_list = 3 THEN //取设定售价
-
- IF uof_get_lmsaleprice(arg_mtrlid, lde_saleprice, lde_rebate) = 0 THEN
- lde_saleprice = 0
- lde_rebate = 1
- END IF
-
- rtn_price = lde_saleprice
- rtn_zqrate = lde_rebate
- 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 //这2个字段没用的
- arg_unit = rtn_unit //这2个字段没用的
- RETURN rslt
- end function
- on uo_cusprice.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_cusprice.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|