12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091 |
- $PBExportHeader$uo_warebalc_cmpl.sru
- forward
- global type uo_warebalc_cmpl from nonvisualobject
- end type
- end forward
- global type uo_warebalc_cmpl from nonvisualobject
- end type
- global uo_warebalc_cmpl uo_warebalc_cmpl
- type variables
- Int uo_option_warebalc_checksale
- int uo_option_wkpmtrlware
- int uo_option_outware_scll_new_cj_mtrlware
- end variables
- forward prototypes
- public function integer uof_warebalc_cmplamt (long arg_storageid, long arg_balcdateint, long arg_mtrlwareid, ref string arg_msg, boolean arg_ifcommit, transaction commit_transaction)
- public function integer uof_get_planprice (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_planprice, ref string arg_msg)
- public function integer uof_cmpl_warebalc_amt (long cur_storageid, long ll_balcdateint_cmpl, ref string arg_msg)
- public function integer uof_warebalc_cmplamt_all (long arg_storageid, long arg_balcdateint, ref string arg_msg, boolean arg_ifcommit, transaction commit_transaction)
- end prototypes
- public function integer uof_warebalc_cmplamt (long arg_storageid, long arg_balcdateint, long arg_mtrlwareid, ref string arg_msg, boolean arg_ifcommit, transaction commit_transaction);//0.采购收货单、成本价调整单的成本价不调整;采购退货单考虑【311】选项判断
- //1.查找最后成本调整时间,无则用上月结存时间;查上月结存时间(无则询问确定?怕是截数了的);查下月结存时间
- //2.依次更新外协收货单成本价、更新其他进仓单成本价(进仓正数)、更新其他进仓单成本价(进仓负数)
- //3.更新出仓单成本价
- //4.更新结存金额,下月期初金额;如果是最后结存,则更新库存金额
- Long rslt = 1
- Int li_storagetype
- Long ll_scid_storage
- Long ll_balcdateint_cmpl_arr[], ll_cmpl_cnt
- Long ll_balcdateint
- Long ll_balcdateint_cmpl = 0 //要计算的月份结存日期
- Long ll_balcdateint_last //= ? 前一个月份的结存日期
- Long i, j, cnt
- Decimal ld_newcost // 最新成本价
- Decimal ld_bgqty,ld_bgamt,ld_incqty,ld_incamt,ld_desqty,ld_desamt
- Decimal ld_ubgqty,ld_uincqty,ld_udesqty
- Long ll_mtrlid
- Int li_ifunit, li_BalcCmplNotUpdate
- String ls_status,ls_pcode,ls_woodcode
- String ls_mtrlcode,ls_msg
- Decimal ld_balcqty_update,ld_balcamt_update
- Decimal ld_desamt_update,ld_outcost_update
- Decimal lde_add_desamt, lde_costamt_add, lde_addamt
- Long ll_scid_add, ll_outwareid_add, ll_printid_add
- Decimal ld_vincqty,ld_vincamt,ld_vdesqty,ld_vdesamt,ld_uvincqty,ld_uvdesqty
- Decimal ld_vinqty,ld_vuinqty,ld_vinamt
- Decimal ld_voutqty,ld_vuoutqty,ld_voutamt, ld_vdesamt_update
- DateTime ldt_Aduitingdate, ldt_chkdate
- String ls_pfcode
- Decimal lde_planprice, lde_cost_in, lde_cost, lde_mtrlprice, lde_planprice_son
- Long ll_sonmtrlid[]
- Decimal ld_qty[]
- IF arg_storageid = -1 THEN
- rslt = 0
- arg_msg = '请先选择仓库'
- GOTO ext
- END IF
- //如果是算历史,但后期有成本调整的,同样不算
- SELECT MAX(u_inware.auditingdate)
- INTO :ldt_Aduitingdate
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid
- WHERE (u_inware.storageid = :arg_storageid)
- AND (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.sptname = '调整成本价(负单)' OR
- u_inware.sptname = '更新成本价(正单)')
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询成本价调整单失败,操作取消'
- GOTO ext
- END IF
- //
- SELECT scid,storagetype
- INTO :ll_scid_storage,:li_storagetype
- FROM u_storage
- WHERE storageid = :arg_storageid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询仓库资料失败,操作取消'
- GOTO ext
- END IF
- SELECT u_mtrldef.mtrlid, u_mtrldef.mtrlcode, u_warebalc.status, u_warebalc.woodcode,
- u_warebalc.pcode, u_mtrldef.ifunit, u_mtrldef.BalcCmplNotUpdate
- INTO :ll_mtrlid, :ls_mtrlcode, :ls_status, :ls_woodcode, :ls_pcode, :li_ifunit, :li_BalcCmplNotUpdate
- FROM u_warebalc INNER JOIN
- u_mtrldef ON u_warebalc.mtrlid = u_mtrldef.mtrlid
- WHERE u_warebalc.storageid = :arg_storageid
- AND u_warebalc.balcdateint = :arg_balcdateint
- AND u_warebalc.mtrlwareid = :arg_mtrlwareid
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询结存信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF uof_get_planprice(ll_mtrlid, ls_status,ls_woodcode, ls_pcode, lde_planprice, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- //确定要计算的范围
- IF arg_balcdateint = 0 THEN
- ll_cmpl_cnt++
- ll_balcdateint_cmpl_arr[ll_cmpl_cnt] = arg_balcdateint
- ELSE
- DECLARE waredate_cur CURSOR FOR
- SELECT distinct u_warebalc.balcdateint
- FROM u_warebalc
- WHERE ( storageid = :arg_storageid )
- AND balcdateint >= :arg_balcdateint
- AND mtrlwareid = :arg_mtrlwareid
- ORDER BY balcdateint
- Using commit_transaction;
-
- OPEN waredate_cur;
- FETCH waredate_cur Into :ll_balcdateint;
- DO WHILE commit_transaction.SQLCode = 0 //循环读取明细数据
- ll_cmpl_cnt++
- ll_balcdateint_cmpl_arr[ll_cmpl_cnt] = ll_balcdateint
-
- FETCH waredate_cur Into :ll_balcdateint;
- LOOP
- CLOSE waredate_cur;
-
- ll_cmpl_cnt++
- ll_balcdateint_cmpl_arr[ll_cmpl_cnt] = 0
- END IF
- ll_balcdateint_cmpl = ll_balcdateint_cmpl_arr[1] //按选择, 可以重算历史
- SELECT max(balcdateint) INTO :ll_balcdateint_last
- FROM u_warebalc
- WHERE storageid = :arg_storageid
- AND mtrlwareid = :arg_mtrlwareid
- AND ((:ll_balcdateint_cmpl = 0 AND balcdateint > 0)
- OR (:ll_balcdateint_cmpl > 0 AND balcdateint > 0 AND balcdateint < :ll_balcdateint_cmpl))
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询上次结存失败,操作取消'
- GOTO ext
- END IF
- IF IsNull(ll_balcdateint_last) THEN ll_balcdateint_last = -1
- FOR i = 1 To ll_cmpl_cnt
- ll_balcdateint_cmpl = ll_balcdateint_cmpl_arr[i]
-
- IF IsNull(ldt_Aduitingdate) THEN
- IF ll_balcdateint_last = -1 THEN
- ldt_chkdate = DateTime(2000-01-01,23:59:59)
- ELSE
- ldt_chkdate = DateTime(Date(Left(String(ll_balcdateint_last),4)+'-'+Mid(String(ll_balcdateint_last), 5, 2)+'-'+Right(String(ll_balcdateint_last),2)),23:59:59)
- END IF
- ELSE
- ldt_chkdate = ldt_Aduitingdate
- END IF
-
- IF ll_balcdateint_cmpl = 0 THEN
- ls_msg = '期间:本期'
- ELSE
- ls_msg = '期间:'+String(ll_balcdateint_cmpl)
- END IF
- ls_msg += ',物料:'+ls_mtrlcode+ ',库存id:'+String(arg_mtrlwareid)
- IF ls_status <> "" THEN
- ls_msg += ','+sys_option_change_status+':'+ls_status
- END IF
- IF ls_woodcode <> "" THEN
- ls_msg += ','+sys_option_change_woodcode+':'+ls_woodcode
- END IF
- IF ls_pcode <> "" THEN
- ls_msg += ','+sys_option_change_pcode+':'+ls_pcode
- END IF
-
- //查期初
- SELECT balcqty,balcamt,ubalcqty
- INTO :ld_bgqty,:ld_bgamt,:ld_ubgqty
- FROM u_warebalc
- WHERE storageid = :arg_storageid
- AND mtrlwareid = :arg_mtrlwareid
- AND balcdateint = :ll_balcdateint_last
- Using commit_transaction;
- IF commit_transaction.SQLCode = -1 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'查询上月结存失败,'+commit_transaction.SQLErrText
- GOTO ext
- ELSEIF commit_transaction.SQLCode = 100 THEN
- ld_bgqty = 0
- ld_bgamt = 0
- ld_ubgqty = 0
- END IF
-
- IF IsNull(ld_bgqty) THEN ld_bgqty = 0
- IF IsNull(ld_bgamt) THEN ld_bgamt = 0
- IF IsNull(ld_ubgqty) THEN ld_ubgqty = 0
- IF ld_bgqty = 0 THEN ld_bgamt = 0
-
- //0.更新进仓costamt
- UPDATE u_inwaremx
- SET u_inwaremx.costamt = round(u_inwaremx.price * u_inwaremx.qty, 2)
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid
- WHERE (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.balcdateint = :ll_balcdateint_cmpl)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新进仓单成本金额失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //1.更新外协收货单单价(billtype = 4)
- //有外协单的才查,提搞速度
- SELECT count(*) INTO :cnt
- FROM ow_wfjgmx_in_aft
- WHERE EXISTS
- (SELECT 1
- FROM (SELECT u_inware.scid, u_inware.relid, u_inwaremx.printid
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid
- WHERE (u_inware.billtype = 4)
- AND (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.auditingdate > :ldt_chkdate)
- AND (u_inware.balcdateint = :ll_balcdateint_cmpl)) a
- WHERE a.scid = ow_wfjgmx_in_aft.scid AND
- a.relid = ow_wfjgmx_in_aft.inwareid AND
- a.printid = ow_wfjgmx_in_aft.printid)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新外协收货单材料成本价失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- ls_pfcode = f_get_dft_pf(ll_mtrlid)
- //
- j = 1
- DECLARE cur_inmx CURSOR FOR
- SELECT u_PrdPF.SonMtrlid,
- u_prdpf.Sonscale / (1 - u_PrdPF.sonloss) + u_PrdPF.SonDECLoss
- FROM u_PrdPF
- WHERE ( u_PrdPF.mtrlid = :ll_mtrlid )
- And ( u_PrdPF.pfcode = :ls_pfcode );
-
- OPEN cur_inmx;
- FETCH cur_inmx Into :ll_sonmtrlid[j],:ld_qty[j];
- DO WHILE sqlca.SQLCode = 0
- j++
- FETCH cur_inmx Into :ll_sonmtrlid[j],:ld_qty[j];
- LOOP
- CLOSE cur_inmx;
-
- cnt = j - 1
-
- lde_mtrlprice = 0
- FOR j = 1 To cnt
- IF uof_get_planprice(ll_sonmtrlid[j], '','', '', lde_planprice_son, arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
-
- lde_mtrlprice += lde_planprice_son * ld_qty[j]
- NEXT
-
- //更新外协收货单材料成本价
- UPDATE ow_wfjgmx_in_aft
- SET fprice = :lde_mtrlprice,
- price = :lde_mtrlprice + case when qty = 0 then 0 else round(jgprice * uqty / qty, 5) * rebate END
- WHERE EXISTS
- (SELECT 1
- FROM (SELECT u_inware.scid, u_inware.relid, u_inwaremx.printid
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid
- WHERE (u_inware.billtype = 4)
- AND (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.auditingdate > :ldt_chkdate)
- AND (u_inware.balcdateint = :ll_balcdateint_cmpl)) a
- WHERE a.scid = ow_wfjgmx_in_aft.scid AND
- a.relid = ow_wfjgmx_in_aft.inwareid AND
- a.printid = ow_wfjgmx_in_aft.printid)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新外协收货单材料成本价失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //更新外协收货单对应进仓单成本价
- UPDATE u_inwaremx
- SET u_inwaremx.fprice = ow_wfjgmx_in_aft.fprice * ow_wfjgmx_in_aft.rate + ow_wfjgmx_in_aft.jgprice * ow_wfjgmx_in_aft.rebate,
- u_inwaremx.planprice = ow_wfjgmx_in_aft.fprice * ow_wfjgmx_in_aft.rate + ow_wfjgmx_in_aft.jgprice * ow_wfjgmx_in_aft.rebate,
- u_inwaremx.price = ow_wfjgmx_in_aft.fprice * ow_wfjgmx_in_aft.rate + ow_wfjgmx_in_aft.jgprice * ow_wfjgmx_in_aft.rebate,
- u_inwaremx.cost = ow_wfjgmx_in_aft.fprice * ow_wfjgmx_in_aft.rate + ow_wfjgmx_in_aft.jgprice * ow_wfjgmx_in_aft.rebate,
- u_inwaremx.uprice = ( ow_wfjgmx_in_aft.fprice * ow_wfjgmx_in_aft.rate + ow_wfjgmx_in_aft.jgprice * ow_wfjgmx_in_aft.rebate) /u_inwaremx.rate,
- u_inwaremx.costamt = round(( ow_wfjgmx_in_aft.fprice * ow_wfjgmx_in_aft.rate + ow_wfjgmx_in_aft.jgprice * ow_wfjgmx_in_aft.rebate) * u_inwaremx.qty, 2)
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid INNER JOIN
- ow_wfjgmx_in_aft ON u_inware.scid = ow_wfjgmx_in_aft.scid AND
- u_inware.relid = ow_wfjgmx_in_aft.inwareid AND
- u_inwaremx.printid = ow_wfjgmx_in_aft.printid
- WHERE (u_inware.billtype = 4)
- AND (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.auditingdate > :ldt_chkdate)
- AND (u_inware.balcdateint = :ll_balcdateint_cmpl)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新外协收货单对应进仓单成本价失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- //,23,25,
- //2.更新其他正数进仓单价(qty > 0 billtype <> 1 billtype <> 4)
- IF li_BalcCmplNotUpdate = 0 THEN
- UPDATE u_inwaremx
- SET u_inwaremx.fprice = :lde_planprice,
- u_inwaremx.planprice = :lde_planprice,
- u_inwaremx.price = :lde_planprice,
- u_inwaremx.cost = :lde_planprice,
- u_inwaremx.uprice = :lde_planprice /u_inwaremx.rate,
- u_inwaremx.costamt = round(:lde_planprice * u_inwaremx.qty, 2)
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid
- WHERE (u_inwaremx.qty > 0) AND (u_inware.billtype <> 1 AND u_inware.billtype <> 4)
- AND (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.auditingdate > :ldt_chkdate)
- AND (u_inware.balcdateint = :ll_balcdateint_cmpl)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新非采购外协的正数进仓单成本价失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
-
- //处理一次带V的数据
- //查正数进仓
- SELECT isnull(sum(u_inwaremx.qty),0),
- isnull(sum(u_inwaremx.uqty),0),
- isnull(sum(u_inwaremx.costamt),0)
- INTO :ld_vincqty,
- :ld_uvincqty,
- :ld_vincamt
- FROM u_inware,u_inwaremx
- WHERE u_inware.scid = u_inwaremx.scid
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inwaremx.mtrlwareid = :arg_mtrlwareid
- AND u_inware.storageid = :arg_storageid
- AND u_inware.balcdateint = :ll_balcdateint_cmpl
- AND u_inware.flag = 1
- AND u_inwaremx.qty > 0
- AND u_inwaremx.ifvqty = 0
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'查询正数进仓信息失败,'+ls_msg+','+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF IsNull(ld_vincqty) THEN ld_vincqty = 0
- IF IsNull(ld_vincamt) THEN ld_vincamt = 0
- IF IsNull(ld_uvincqty) THEN ld_uvincqty = 0
-
- IF ld_bgqty + ld_vincqty <> 0 And ld_bgamt + ld_vincamt <> 0 THEN
- lde_cost_in = Round((ld_bgamt + ld_vincamt) / (ld_bgqty + ld_vincqty),sys_option_cost_dec)
- ELSE
- lde_cost_in = lde_planprice
- END IF
-
- UPDATE u_inwaremx
- SET u_inwaremx.fprice = :lde_cost_in,
- u_inwaremx.planprice = :lde_cost_in,
- u_inwaremx.price = :lde_cost_in,
- u_inwaremx.cost = :lde_cost_in,
- u_inwaremx.uprice = :lde_cost_in /u_inwaremx.rate,
- u_inwaremx.costamt = round(:lde_cost_in * u_inwaremx.qty, 2)
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid
- WHERE (u_inwaremx.qty > 0) AND (u_inware.billtype <> 1 AND u_inware.billtype <> 4)
- AND (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.auditingdate > :ldt_chkdate)
- AND (u_inware.balcdateint = :ll_balcdateint_cmpl)
- AND (u_inwaremx.ifvqty = 1)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新非采购外协的正数进仓单成本价失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //END IF
-
- //3.更新其他负数进仓单价(qty < 0 billtype <> 1 billtype <> 4)
-
- //查正数进仓
- SELECT isnull(sum(u_inwaremx.qty),0),
- isnull(sum(u_inwaremx.uqty),0),
- isnull(sum(u_inwaremx.costamt),0),
- isnull(sum(case u_inwaremx.ifvqty when 0 then 0 else u_inwaremx.qty END ),0),
- isnull(sum(case u_inwaremx.ifvqty when 0 then 0 else u_inwaremx.uqty END ),0),
- isnull(sum(round(case u_inwaremx.ifvqty when 0 then 0 else u_inwaremx.costamt END,2)),0)
- INTO :ld_incqty,
- :ld_uincqty,
- :ld_incamt,
- :ld_vincqty,
- :ld_uvincqty,
- :ld_vincamt
- FROM u_inware,u_inwaremx
- WHERE u_inware.scid = u_inwaremx.scid
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inwaremx.mtrlwareid = :arg_mtrlwareid
- AND u_inware.storageid = :arg_storageid
- AND u_inware.balcdateint = :ll_balcdateint_cmpl
- AND u_inware.flag = 1
- AND u_inwaremx.qty > 0
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'查询正数进仓信息失败,'+ls_msg+','+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ld_incqty) THEN ld_incqty = 0
- IF IsNull(ld_incamt) THEN ld_incamt = 0
- IF IsNull(ld_uincqty) THEN ld_uincqty = 0
- IF IsNull(ld_vincqty) THEN ld_vincqty = 0
- IF IsNull(ld_vincamt) THEN ld_vincamt = 0
- IF IsNull(ld_uvincqty) THEN ld_uvincqty = 0
-
-
-
- IF ld_bgqty + ld_incqty <> 0 And ld_bgamt + ld_incamt <> 0 THEN
- lde_cost_in = Round((ld_bgamt + ld_incamt) / (ld_bgqty + ld_incqty),sys_option_cost_dec)
- ELSE
- lde_cost_in = lde_planprice
- END IF
- IF lde_cost_in < 0 THEN lde_cost_in = lde_planprice
-
- UPDATE u_inwaremx
- SET u_inwaremx.fprice = :lde_cost_in,
- u_inwaremx.planprice = :lde_cost_in,
- u_inwaremx.price = :lde_cost_in,
- u_inwaremx.cost = :lde_cost_in,
- u_inwaremx.uprice = :lde_cost_in /u_inwaremx.rate,
- u_inwaremx.costamt = round(:lde_cost_in * u_inwaremx.qty, 2)
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid
- WHERE (u_inwaremx.qty < 0) AND (u_inware.billtype <> 1) AND (u_inware.billtype <> 4)
- AND (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.auditingdate > :ldt_chkdate)
- AND (u_inware.balcdateint = :ll_balcdateint_cmpl)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新非采购外协的负数进仓单成本价失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF sys_option_buyth_use_price_update_wareamt = 0 THEN
- UPDATE u_inwaremx
- SET u_inwaremx.planprice = :lde_cost_in,
- u_inwaremx.cost = :lde_cost_in,
- u_inwaremx.costamt = round(:lde_cost_in * u_inwaremx.qty, 2)
- FROM u_inware INNER JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid AND
- u_inware.inwareid = u_inwaremx.inwareid
- WHERE (u_inwaremx.qty < 0) AND (u_inware.billtype = 1)
- AND (u_inwaremx.mtrlwareid = :arg_mtrlwareid)
- AND (u_inware.auditingdate > :ldt_chkdate)
- AND (u_inware.balcdateint = :ll_balcdateint_cmpl)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新采购退货单成本价失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
-
- //4.更新出仓单价
-
-
- //查进仓
- SELECT isnull(sum(u_inwaremx.qty),0),
- isnull(sum(u_inwaremx.uqty),0),
- isnull(sum(u_inwaremx.costamt),0),
- isnull(sum(case u_inwaremx.ifvqty when 0 then 0 else u_inwaremx.qty END ),0),
- isnull(sum(case u_inwaremx.ifvqty when 0 then 0 else u_inwaremx.uqty END ),0),
- isnull(sum(case u_inwaremx.ifvqty when 0 then 0 else u_inwaremx.costamt END),0)
- INTO :ld_incqty,
- :ld_uincqty,
- :ld_incamt,
- :ld_vincqty,
- :ld_uvincqty,
- :ld_vincamt
- FROM u_inware,u_inwaremx
- WHERE u_inware.scid = u_inwaremx.scid
- AND u_inware.inwareid = u_inwaremx.inwareid
- AND u_inwaremx.mtrlwareid = :arg_mtrlwareid
- AND u_inware.storageid = :arg_storageid
- AND u_inware.balcdateint = :ll_balcdateint_cmpl
- AND u_inware.flag = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'查询进仓信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ld_incqty) THEN ld_incqty = 0
- IF IsNull(ld_incamt) THEN ld_incamt = 0
- IF IsNull(ld_uincqty) THEN ld_uincqty = 0
- IF IsNull(ld_vincqty) THEN ld_vincqty = 0
- IF IsNull(ld_vincamt) THEN ld_vincamt = 0
- IF IsNull(ld_uvincqty) THEN ld_uvincqty = 0
-
- //查出仓
- SELECT isnull(sum(u_outwaremx.qty),0),
- isnull(sum(u_outwaremx.uqty),0),
- isnull(sum(round(u_outwaremx.costamt,2)),0),
- isnull(sum(case u_outwaremx.ifvqty when 0 then 0 else u_outwaremx.qty END),0),
- isnull(sum(case u_outwaremx.ifvqty when 0 then 0 else u_outwaremx.uqty END),0),
- isnull(sum(case u_outwaremx.ifvqty when 0 then 0 else u_outwaremx.costamt END),0)
- INTO :ld_desqty,
- :ld_udesqty,
- :ld_desamt,
- :ld_vdesqty,
- :ld_uvdesqty,
- :ld_vdesamt
- FROM u_outware,u_outwaremx
- WHERE u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- AND u_outwaremx.mtrlwareid = :arg_mtrlwareid
- AND u_outware.storageid = :arg_storageid
- AND u_outware.balcdateint = :ll_balcdateint_cmpl
- AND u_outware.flag = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'查询出仓信息失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- IF IsNull(ld_desqty) THEN ld_desqty = 0
- IF IsNull(ld_desamt) THEN ld_desamt = 0
- IF IsNull(ld_udesqty) THEN ld_udesqty = 0
- IF IsNull(ld_vdesqty) THEN ld_vdesqty = 0
- IF IsNull(ld_vdesamt) THEN ld_vdesamt = 0
- IF IsNull(ld_uvdesqty) THEN ld_uvdesqty = 0
-
-
- // SELECT count(*)
- // INTO :cnt
- // FROM u_outwaremx INNER JOIN
- // u_outware ON u_outwaremx.scid = u_outware.scid AND
- // u_outwaremx.outwareid = u_outware.outwareid
- // WHERE u_outwaremx.mtrlwareid = :arg_mtrlwareid
- // AND u_outware.storageid = :arg_storageid
- // AND u_outware.scid = :ll_scid_storage
- // AND u_outware.balcdateint = :ll_balcdateint_cmpl
- // AND (u_outware.auditingdate > :ldt_chkdate)
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = ls_msg+'~r~n'+'更新出仓单成本价失败,'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF cnt > 0 THEN
- IF ld_bgqty + ld_incqty <> 0 And ld_bgamt + ld_incamt <> 0 THEN
- lde_cost = Round((ld_bgamt + ld_incamt) / (ld_bgqty + ld_incqty),sys_option_cost_dec)
- ELSE
- lde_cost = lde_planprice
- END IF
-
- IF lde_cost < 0 THEN lde_cost = lde_planprice
-
- UPDATE u_outwaremx
- SET u_outwaremx.cost = :lde_cost,
- u_outwaremx.costamt = round(u_outwaremx.qty * :lde_cost,2)
- FROM u_outwaremx INNER JOIN
- u_outware ON u_outwaremx.scid = u_outware.scid AND
- u_outwaremx.outwareid = u_outware.outwareid
- WHERE u_outwaremx.mtrlwareid = :arg_mtrlwareid
- AND u_outware.storageid = :arg_storageid
- AND u_outware.scid = :ll_scid_storage
- AND u_outware.balcdateint = :ll_balcdateint_cmpl
- AND (u_outware.auditingdate > :ldt_chkdate)
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新出仓单成本价失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- // END IF
- //5.更新结存(库存)金额
-
- //再读一次数,防止小数点的误差
- SELECT isnull(sum(round(u_outwaremx.costamt,2)),0),
- isnull(sum(case u_outwaremx.ifvqty when 0 then 0 else u_outwaremx.costamt END),0)
- INTO :ld_desamt_update, :ld_vdesamt_update
- FROM u_outware,u_outwaremx
- WHERE u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- AND u_outwaremx.mtrlwareid = :arg_mtrlwareid
- AND u_outware.storageid = :arg_storageid
- AND u_outware.balcdateint = :ll_balcdateint_cmpl
- AND u_outware.flag = 1
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'重新查询本月出仓成本金额失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- //修正结余为负数; 结余数=0,结余金额<>0;的情况
- If (ld_bgqty + ld_incqty - ld_desqty = 0 And ld_bgamt + ld_incamt - ld_desamt_update <> 0) Or ld_bgamt + ld_incamt - ld_desamt_update < 0 THEN
- lde_add_desamt = ld_bgamt + ld_incamt - ld_desamt_update
-
- DECLARE outware CURSOR FOR
- SELECT u_outwaremx.scid, u_outwaremx.outwareid, u_outwaremx.printid, u_outwaremx.costamt
- FROM u_outware,u_outwaremx
- WHERE u_outware.scid = u_outwaremx.scid
- AND u_outware.outwareid = u_outwaremx.outwareid
- AND u_outwaremx.mtrlwareid = :arg_mtrlwareid
- AND u_outware.storageid = :arg_storageid
- AND u_outware.balcdateint = :ll_balcdateint_cmpl
- AND u_outware.flag = 1
- Using commit_transaction;
- OPEN outware;
- FETCH outware Into :ll_scid_add, :ll_outwareid_add, :ll_printid_add, :lde_costamt_add;
- DO WHILE commit_transaction.SQLCode = 0
- IF lde_add_desamt > 0 THEN
-
- lde_addamt = lde_add_desamt
- lde_add_desamt = 0
-
- ELSE
- IF lde_costamt_add > Abs(lde_add_desamt) THEN
- lde_addamt = lde_add_desamt
- lde_add_desamt = 0
- ELSE
- lde_addamt = 0 - lde_costamt_add
- lde_add_desamt = lde_add_desamt + lde_costamt_add
- END IF
-
- END IF
-
- UPDATE u_outwaremx
- SET costamt = costamt + :lde_addamt
- WHERE scid = :ll_scid_add
- AND outwareid = :ll_outwareid_add
- AND printid = :ll_printid_add
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+"修正出仓明细金额失败,"+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF lde_add_desamt = 0 THEN EXIT //完成修正
-
- FETCH outware Into :ll_scid_add, :ll_outwareid_add, :ll_printid_add, :lde_costamt_add;
- LOOP
-
- CLOSE outware;
-
- ld_desamt_update = ld_bgamt + ld_incamt
- END IF
-
- ld_balcqty_update = ld_bgqty + ld_incqty - ld_desqty
- ld_balcamt_update = ld_bgamt + ld_incamt - ld_desamt_update
- IF ld_balcqty_update = 0 THEN ld_balcamt_update = 0
-
- IF ld_balcqty_update <> 0 THEN
- ld_newcost = Round(ld_balcamt_update/ld_balcqty_update,sys_option_cost_dec)
- ELSE
- ld_newcost = lde_planprice
- END IF
-
- //yyx2012-10-27_end
-
- IF li_ifunit = 0 THEN
- ld_ubgqty = 0
- ld_uincqty = 0
- ld_udesqty = 0
- END IF
- //更新期间出金额,结存金额
- UPDATE u_warebalc
- SET bgamt = :ld_bgamt,
- incamt = :ld_incamt,
- desamt = :ld_desamt_update,
- balcamt = :ld_balcamt_update,
- vincamt = :ld_vincamt,
- vdesamt = :ld_vdesamt_update
- WHERE mtrlwareid = :arg_mtrlwareid
- AND balcdateint = :ll_balcdateint_cmpl
- AND scid = :ll_scid_storage
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新结存失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
-
- IF ll_balcdateint_cmpl = 0 THEN
- UPDATE u_mtrlware
- SET cost = :ld_newcost,
- wareamt = :ld_balcamt_update
- WHERE mtrlwareid = :arg_mtrlwareid
- AND Storageid = :arg_storageid
- AND scid = :ll_scid_storage
- Using commit_transaction;
- IF commit_transaction.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = ls_msg+'~r~n'+'更新库存金额失败,'+commit_transaction.SQLErrText
- GOTO ext
- END IF
- END IF
- // //更新期间出金额,结存金额
- // UPDATE u_warebalc
- // SET bgqty = :ld_bgqty,
- // bgamt = :ld_bgamt,
- // incqty = :ld_incqty,
- // incamt = :ld_incamt,
- // desqty = :ld_desqty,
- // desamt = :ld_desamt_update,
- // balcqty = :ld_balcqty_update,
- // balcamt = :ld_balcamt_update,
- // ubgqty = :ld_ubgqty,
- // uincqty = :ld_uincqty,
- // udesqty = :ld_udesqty,
- // ubalcqty = :ld_ubgqty + :ld_uincqty - :ld_udesqty,
- // vincqty = :ld_vincqty,
- // vdesqty = :ld_vdesqty,
- // vincamt = :ld_vincamt,
- // vdesamt = :ld_vdesamt,
- // uvincqty = :ld_uvincqty,
- // uvdesqty = :ld_uvdesqty
- // WHERE mtrlwareid = :arg_mtrlwareid
- // AND balcdateint = :ll_balcdateint_cmpl
- // AND scid = :ll_scid_storage
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = ls_msg+'~r~n'+'更新结存失败,'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- //
- // IF ll_balcdateint_cmpl = 0 THEN
- // UPDATE u_mtrlware
- // SET cost = :ld_newcost,
- // noallocqty = :ld_balcqty_update,
- // unoallocqty = :ld_ubgqty + :ld_uincqty - :ld_udesqty,
- // wareamt = :ld_balcamt_update
- // WHERE mtrlwareid = :arg_mtrlwareid
- // AND Storageid = :arg_storageid
- // AND scid = :ll_scid_storage
- // Using commit_transaction;
- // IF commit_transaction.SQLCode <> 0 THEN
- // rslt = 0
- // arg_msg = ls_msg+'~r~n'+'更新库存金额失败,'+commit_transaction.SQLErrText
- // GOTO ext
- // END IF
- // END IF
-
-
-
- ll_balcdateint_last = ll_balcdateint_cmpl //为下个循环准备
- NEXT
- ext:
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- public function integer uof_get_planprice (long arg_mtrlid, string arg_status, string arg_woodcode, string arg_pcode, ref decimal arg_planprice, ref string arg_msg);Int rslt = 1
- Decimal lde_planprice,ld_price_sh,ld_price_bj
- Int li_mtrlorigin
- SELECT mtrlorigin INTO :li_mtrlorigin
- FROM u_mtrldef
- WHERE u_mtrldef.mtrlid = :arg_mtrlid
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料计划价失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- //采购类,如果最新价为0,取最新报价,
- IF li_mtrlorigin = 2 THEN
- SELECT top 1 v_maxprice_sptprice.price,v_maxprice_sptprice.price_bj
- INTO :ld_price_sh,:ld_price_bj
- FROM v_maxprice_sptprice
- WHERE v_maxprice_sptprice.mtrlid = :arg_mtrlid
- Using sqlca;
- IF sqlca.SQLCode = -1 THEN
- rslt = 0
- arg_msg = '查询采购物料最新价失败,'+sqlca.SQLErrText
- GOTO ext
- ELSEIF sqlca.SQLCode = 100 THEN
- lde_planprice = 0
- ELSEIF sqlca.SQLCode = 0 THEN
- IF ld_price_sh > 0 THEN
- lde_planprice = ld_price_sh
- ELSE
- IF ld_price_bj > 0 THEN
- lde_planprice = ld_price_bj
- ELSE
- lde_planprice = 0
- END IF
- END IF
- END IF
- END IF
- IF lde_planprice = 0 THEN
- SELECT top 1 dbo.f_get_planprice_mtrl(:arg_mtrlid,:arg_status,:arg_woodcode, :arg_pcode)
- INTO :lde_planprice
- FROM u_user
- WHERE empid = 0
- Using sqlca;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询物料计划价失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- arg_planprice = lde_planprice
- ext:
- RETURN rslt
- end function
- public function integer uof_cmpl_warebalc_amt (long cur_storageid, long ll_balcdateint_cmpl, ref string arg_msg);Long rslt = 1
- IF cur_storageid <= 0 THEN
- rslt = 0
- arg_msg = '请先选择仓库'
- RETURN rslt
- END IF
- Long cnt
- Long ll_i = 0
- Long ll_mtrlwareid, arr_mtrlwareid[]
- SELECT count(0)
- INTO :cnt
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid AND
- u_inwaremx.inwareid = u_inware.inwareid
- WHERE (u_inware.flag = 1)
- AND u_inware.balcdateint = :ll_balcdateint_cmpl
- AND u_inwaremx.mtrlwareid = 0
- And u_inware.storageid = :cur_storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询进仓明细库存ID失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '进仓明细存在非法库存ID,请先更新进仓明细库存ID'
- rslt = 0
- GOTO ext
- END IF
- DECLARE cur1 CURSOR FOR
- SELECT u_warebalc.mtrlwareid
- FROM u_mtrldef INNER JOIN
- u_warebalc ON u_mtrldef.mtrlid = u_warebalc.mtrlid
- WHERE (u_warebalc.Storageid = :cur_storageid)
- And (u_warebalc.balcdateint = :ll_balcdateint_cmpl);
-
- OPEN cur1;
- FETCH cur1 Into :ll_mtrlwareid;
- DO WHILE sqlca.SQLCode = 0
- ll_i++
- arr_mtrlwareid[ll_i] = ll_mtrlwareid
- FETCH cur1 Into :ll_mtrlwareid;
- LOOP
- CLOSE cur1;
- FOR ll_i = 1 To UpperBound(arr_mtrlwareid)
- ll_mtrlwareid = arr_mtrlwareid[ll_i]
- IF uof_warebalc_cmplamt(cur_storageid, ll_balcdateint_cmpl, ll_mtrlwareid, arg_msg, True, sqlca) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- RETURN rslt
- end function
- public function integer uof_warebalc_cmplamt_all (long arg_storageid, long arg_balcdateint, ref string arg_msg, boolean arg_ifcommit, transaction commit_transaction);
- Long rslt = 1
- datastore ds_cmpl
- IF arg_storageid = -1 THEN
- rslt = 0
- arg_msg = "请选择仓库!"
- GOTO ext
- END IF
- String ls_storagename
- ls_storagename = f_find_storageid(String(arg_storageid))
- Long cnt
- Long ll_balcdateint_cmpl = 0 //要计算的月份结存日期
- Long ll_balcdateint_last //= ? 前一个月份的结存日期
- ll_balcdateint_cmpl = arg_balcdateint //按选择, 可以重算历史
- Long ll_i
- Long ll_mtrlid,ll_mtrlwareid
- String ls_mtrlcode,ls_msg
- //ll_i = dw_pageretr.GetRow()
- ds_cmpl = Create datastore
- ds_cmpl.DataObject = 'ds_warebalc_cmpl_warebalc_amt'
- ds_cmpl.SetTransObject(sqlca)
- SELECT count(*)
- INTO :cnt
- FROM u_inwaremx INNER JOIN
- u_inware ON u_inwaremx.scid = u_inware.scid AND
- u_inwaremx.inwareid = u_inware.inwareid
- WHERE (u_inware.flag = 1)
- AND u_inware.balcdateint = :ll_balcdateint_cmpl
- AND u_inwaremx.mtrlwareid = 0
- And u_inware.storageid = :arg_storageid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询进仓明细库存ID失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF cnt > 0 THEN
- arg_msg = '进仓明细存在非法库存ID,请先更新进仓明细库存ID'
- rslt = 0
- GOTO ext
- END IF
- //清空筛选内容
- cnt = ds_cmpl.Retrieve(arg_storageid,ll_balcdateint_cmpl,sys_option_cost_dec)
- //
- String ls_status, ls_woodcode, ls_pcode
- FOR ll_i = 1 To ds_cmpl.RowCount()
- ll_mtrlid = ds_cmpl.Object.u_mtrldef_mtrlid[ll_i]
- ll_mtrlwareid = ds_cmpl.Object.u_warebalc_mtrlwareid[ll_i]
- ls_mtrlcode = ds_cmpl.Object.u_mtrldef_mtrlcode[ll_i]
- ls_status = ds_cmpl.Object.u_warebalc_status[ll_i]
- ls_woodcode = ds_cmpl.Object.u_warebalc_woodcode[ll_i]
- ls_pcode = ds_cmpl.Object.u_warebalc_pcode[ll_i]
-
- ls_msg = '物料:'+ls_mtrlcode+',库存id:'+String(ll_mtrlwareid)
-
- IF ls_status <> "" THEN
- ls_msg += ','+sys_option_change_status+':'+ls_status
- END IF
- IF ls_woodcode <> "" THEN
- ls_msg += ','+sys_option_change_woodcode+':'+ls_woodcode
- END IF
- IF ls_pcode <> "" THEN
- ls_msg += ','+sys_option_change_pcode+':'+ls_pcode
- END IF
-
- IF uof_warebalc_cmplamt(arg_storageid, ll_balcdateint_cmpl, ll_mtrlwareid, arg_msg, false, commit_transaction) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- ext:
- Destroy ds_cmpl
- IF rslt = 0 THEN
- ROLLBACK Using commit_transaction;
- ELSEIF arg_ifcommit THEN
- COMMIT Using commit_transaction;
- END IF
- RETURN rslt
- end function
- on uo_warebalc_cmpl.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_warebalc_cmpl.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String arg_msg
- String str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('152',str_optionvalue,arg_msg)
- uo_option_warebalc_checksale = Long(str_optionvalue)
- str_optionvalue = ''
- f_get_sys_option_value('057',str_optionvalue,arg_msg)
- uo_option_wkpmtrlware = Long(str_optionvalue)
- end event
|