12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262 |
- $PBExportHeader$uo_config_change.sru
- forward
- global type uo_config_change from nonvisualobject
- end type
- end forward
- global type uo_config_change from nonvisualobject
- end type
- global uo_config_change uo_config_change
- type variables
- long uo_billid
- string uo_billcode
- end variables
- forward prototypes
- public function integer save (s_config_change arg_s_config, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getinfo (long arg_billid, ref s_config_change arg_s_config, ref string arg_msg)
- public function integer updatebegin (long arg_billid, ref string arg_msg)
- end prototypes
- public function integer save (s_config_change arg_s_config, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt
- rslt = 1
- DateTime server_dt
- Long ll_newid
- String ls_sccode,ls_new_billcode
- If IsNull(arg_s_config.scid) Then arg_s_config.scid = 0
- If IsNull(arg_s_config.billid) Then arg_s_config.billid = 0
- If IsNull(arg_s_config.billcode) Then arg_s_config.billcode = ''
- If IsNull(arg_s_config.rep) Then arg_s_config.rep = ''
- If IsNull(arg_s_config.mtrlid) Then arg_s_config.mtrlid = 0
- If IsNull(arg_s_config.status_ori) Then arg_s_config.status_ori = ''
- If IsNull(arg_s_config.woodcode_ori) Then arg_s_config.woodcode_ori = ''
- If IsNull(arg_s_config.pcode_ori) Then arg_s_config.pcode_ori = ''
- If IsNull(arg_s_config.status_new) Then arg_s_config.status_new = ''
- If IsNull(arg_s_config.woodcode_new) Then arg_s_config.woodcode_new = ''
- If IsNull(arg_s_config.pcode_new) Then arg_s_config.pcode_new = ''
- If IsNull(arg_s_config.if_status) Then arg_s_config.if_status = 0
- If IsNull(arg_s_config.if_woodcode) Then arg_s_config.if_woodcode = 0
- If IsNull(arg_s_config.if_pcode) Then arg_s_config.if_woodcode = 0
- If IsNull(arg_s_config.if_update_mtrl) Then arg_s_config.if_update_mtrl = 0
- If IsNull(arg_s_config.dscrp) Then arg_s_config.dscrp = ''
- If arg_s_config.rep = '' Then
- arg_msg = '请输入经手人'
- rslt = 0
- Goto ext
- End If
- Select Top 1 getdate() Into :server_dt From u_user;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- Goto ext
- End If
- If arg_s_config.if_status = 0 And arg_s_config.if_woodcode = 0 And arg_s_config.if_woodcode = 0 Then
- rslt = 0
- arg_msg = '请至少选择一个要更新的配置'
- Goto ext
- End If
- If arg_s_config.billid = 0 Then
- ll_newid = f_sys_scidentity(0,"u_config_change","billid",arg_msg,True,id_sqlca)
-
- If ll_newid <= 0 Then
- rslt = 0
- Goto ext
- End If
-
- If f_get_sccode(arg_s_config.scid,sqlca,ls_sccode,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- ls_new_billcode = getid(arg_s_config.scid,ls_sccode + 'CX',Date(server_dt),False,sqlca)
-
-
- If ls_new_billcode = "err" Then
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Insert Into u_config_change
- (scid,
- billid,
- billcode,
- billdate,
- rep,
- mtrlid,
- status_ori,
- woodcode_ori,
- pcode_ori,
- status_new,
- woodcode_new,
- pcode_new,
- if_status,
- if_woodcode,
- if_pcode,
- if_update_mtrl,
- dscrp,
- opdate,
- opemp)
- Values (:arg_s_config.scid,
- :ll_newid,
- :ls_new_billcode,
- :arg_s_config.billdate,
- :arg_s_config.rep,
- :arg_s_config.mtrlid,
- :arg_s_config.status_ori,
- :arg_s_config.woodcode_ori,
- :arg_s_config.pcode_ori,
- :arg_s_config.status_new,
- :arg_s_config.woodcode_new,
- :arg_s_config.pcode_new,
- :arg_s_config.if_status,
- :arg_s_config.if_woodcode,
- :arg_s_config.if_pcode,
- :arg_s_config.if_update_mtrl,
- :arg_s_config.dscrp,
- getdate(),
- :arg_opemp);
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
-
- uo_billcode = ls_new_billcode
- Else
- Update u_config_change
- Set scid = :arg_s_config.scid,
- billdate = :arg_s_config.billdate,
- rep = :arg_s_config.rep,
- mtrlid = :arg_s_config.mtrlid,
- status_ori = :arg_s_config.status_ori,
- woodcode_ori = :arg_s_config.woodcode_ori,
- pcode_ori = :arg_s_config.pcode_ori,
- status_new = :arg_s_config.status_new,
- woodcode_new = :arg_s_config.woodcode_new,
- pcode_new = :arg_s_config.pcode_new,
- if_status = :arg_s_config.if_status,
- if_woodcode = :arg_s_config.if_woodcode,
- if_pcode = :arg_s_config.if_pcode,
- if_update_mtrl = :arg_s_config.if_update_mtrl,
- dscrp = :arg_s_config.dscrp,
- moddate = getdate(),
- modemp = :arg_opemp
- Where billid = :arg_s_config.billid;
-
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Delete From u_config_change_mx
- Where billid = :arg_s_config.billid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除旧有汇总明细操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- ll_newid = arg_s_config.billid
- uo_billcode = arg_s_config.billcode
-
- End If
- uo_billid = ll_newid
- //插入明细
- //1.销售报价单
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid, relcode, status_ori, woodcode_ori, pcode_ori)
- Select :ll_newid,0,u_quote.quoteid, u_quotemx.printid, u_quote.quotecode, u_quotemx.status, u_quotemx.woodcode, u_quotemx.pcode
- From u_quotemx Inner JOIN
- u_quote ON u_quotemx.scid = u_quote.scid And
- u_quotemx.quoteid = u_quote.quoteid
- Where (u_quotemx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_quotemx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_quotemx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- and (u_quotemx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(销售报价单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //2.销售订单
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid, relcode,
- status_ori, woodcode_ori, pcode_ori,qty)
- Select :ll_newid,1,u_SaleTaskMx.TaskID, u_SaleTaskMx.printid, u_SaleTask.TaskCode,
- u_SaleTaskMx.status, u_SaleTaskMx.woodcode, u_SaleTaskMx.pcode,u_SaleTaskMx.SaleQty
- From u_SaleTaskMx Inner JOIN
- u_SaleTask ON u_SaleTaskMx.scid = u_SaleTask.scid And
- u_SaleTaskMx.TaskID = u_SaleTask.TaskID
- Where (u_SaleTaskMx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_SaleTaskMx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_SaleTaskMx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- and (u_SaleTaskMx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(销售订单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //3.生产计划
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid, relcode,status_ori, woodcode_ori, pcode_ori,qty)
- Select :ll_newid,2,OrderID,0, OrderCode, status_mode, woodcode, pcode, orderqty
- From u_Order_ml
- Where (u_Order_ml.status_mode = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_Order_ml.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_Order_ml.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_Order_ml.ordertype <> 4)
- and (u_Order_ml.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(生产计划)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //4.生产指令单
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid, relcode,status_ori, woodcode_ori, pcode_ori,qty)
- Select :ll_newid,3,OrderID,0, OrderCode, status_mode, woodcode, pcode, orderqty
- From u_Order_ml
- Where (u_Order_ml.status_mode = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_Order_ml.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_Order_ml.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_Order_ml.ordertype = 4)
- and (u_Order_ml.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(生产指令单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //5.进仓单
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid, relcode,status_ori, woodcode_ori, pcode_ori,qty)
- Select :ll_newid,4,u_inwaremx.inwareid, u_inwaremx.printid, u_inware.inwarecode,
- u_inwaremx.status, u_inwaremx.woodcode, u_inwaremx.pcode,
- u_inwaremx.qty
- From u_inware Inner JOIN
- u_inwaremx ON u_inware.scid = u_inwaremx.scid And
- u_inware.inwareid = u_inwaremx.inwareid
- Where (u_inwaremx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_inwaremx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_inwaremx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- and (u_inwaremx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(进仓单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //6.出仓单
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid, relcode,status_ori, woodcode_ori, pcode_ori,qty)
- Select :ll_newid,5,u_outwaremx.outwareid, u_outwaremx.printid, u_outware.outwarecode,
- u_outwaremx.status, u_outwaremx.woodcode, u_outwaremx.pcode,
- u_outwaremx.qty
- From u_outware Inner JOIN
- u_outwaremx ON u_outware.scid = u_outwaremx.scid And
- u_outware.outwareid = u_outwaremx.outwareid
- Where (u_outwaremx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_outwaremx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_outwaremx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- and (u_outwaremx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(出仓单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //7.条码生成单
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid, relcode,status_ori, woodcode_ori, pcode_ori,qty)
- Select :ll_newid,6,getbarid, ifrel, getbarcode, status, woodcode, pcode, qty
- From u_getbar
- Where (u_getbar.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_getbar.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_getbar.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- and (u_getbar.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(条码生成单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //8.条码
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid, relcode,status_ori, woodcode_ori, pcode_ori,qty)
- Select :ll_newid,7,getbarid,0, barcode, status, woodcode, pcode, qty
- From u_mtrlware_mx
- Where (u_mtrlware_mx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_mtrlware_mx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_mtrlware_mx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- and (u_mtrlware_mx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(条码)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //9.库存表
- Insert Into u_config_change_mx
- (billid, kind, relid, relprintid,status_ori, woodcode_ori, pcode_ori,qty)
- Select :ll_newid,8,mtrlwareid, storageid, Status, woodcode, pcode, noallocqty
- From u_mtrlware
- Where (u_mtrlware.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_mtrlware.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_mtrlware.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- and (u_mtrlware.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "插入明细失败(库存表)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- uo_billid = 0
- uo_billcode = ''
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Return rslt
- end function
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,li_flag
- s_config_change arg_s_config
- If arg_billid <= 0 Then
- rslt = 0
- arg_msg = '错误的单据唯一码'
- Goto ext
- End If
- If p_getinfo(arg_billid,arg_s_config,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If arg_s_config.flag <> 0 Then
- rslt = 0
- arg_msg = '单据不是在待审核状态,不可以删除'
- Goto ext
- End If
- Delete From u_config_change_mx
- Where billid = :arg_billid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Delete From u_config_change
- Where billid = :arg_billid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除单据操作失败"+"~n"+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 audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag
- Long ll_i,ll_j
- Long ll_cusid,ll_mtrlid,ll_scid,ll_mtrlwareid,ll_storageid,ll_mtrlwareid_new
- String ls_plancode,ls_mtrlcuscode,ls_location
- Long ll_sptid,ll_dxflag
- Decimal ld_noallocqty,ld_allocqty,ld_wareamt,ld_cost,ld_noauditingqty,ld_noauditinguqty,ld_unoallocqty
- String ls_status,ls_woodcode,ls_pcode,ls_status_new,ls_woodcode_new,ls_pcode_new
- Long ll_moneyid
- Decimal ld_qty,ld_qty1,ld_fprice,ld_zqrate,ld_price ,ld_fprice_bj,ld_zqrate_bj,ld_price_bj
- Long ll_pricelistid
- DateTime sys_changetime
- Long ll_row
- Long ll_balcdateint
- //结存表参数
- Decimal bgqty, bgamt, incqty, incamt, desqty, desamt
- Decimal balcqty, balcamt, pypk, pypkamt, buyinqty, buyinamt, buyinqty_pack, buyinamt_pack
- Decimal saleinqty_packpro, saleinamt_packpro, cpinqty, cpinamt, jginqty, jginamt, diinqty
- Decimal diinamt, mvinqty, mvinamt, otinqty, otinamt, pyinqty, pyinamt, ubgqty, uincqty
- Decimal udesqty, ubalcqty
- //
- s_config_change arg_s_config
- datastore ds_price_ori,ds_price_new
- ds_price_ori = Create datastore
- ds_price_new = Create datastore
- ds_price_ori.DataObject = 'ds_cus_price_config'
- ds_price_new.DataObject = 'ds_cus_price_config'
- ds_price_ori.SetTransObject(sqlca)
- ds_price_new.SetTransObject(sqlca)
- datastore ds_ware_ori,ds_ware_new
- ds_ware_ori = Create datastore
- ds_ware_new = Create datastore
- ds_ware_ori.DataObject = 'ds_mtrlware_config'
- ds_ware_new.DataObject = 'ds_mtrlware_config'
- ds_ware_ori.SetTransObject(sqlca)
- ds_ware_new.SetTransObject(sqlca)
- datastore ds_balc_ori,ds_balc_new
- ds_balc_ori = Create datastore
- ds_balc_new = Create datastore
- ds_balc_ori.DataObject = 'ds_warebalc_config'
- ds_balc_new.DataObject = 'ds_warebalc_config'
- ds_balc_ori.SetTransObject(sqlca)
- ds_balc_new.SetTransObject(sqlca)
- If arg_billid <= 0 Then
- rslt = 0
- arg_msg = '错误的单据唯一码'
- Goto ext
- End If
- If p_getinfo(arg_billid,arg_s_config,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If arg_s_config.flag <> 0 Then
- rslt = 0
- arg_msg = '单据不是待审核状态,不可以审核'
- Goto ext
- End If
- //更新数据
- //1.销售报价单
- Update u_quotemx
- Set u_quotemx.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_quotemx.status End ,
- u_quotemx.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_quotemx.woodcode End ,
- u_quotemx.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_quotemx.pcode End
- Where (u_quotemx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_quotemx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_quotemx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_quotemx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(销售报价单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //1.1 客户报价历史
- ds_price_ori.Retrieve(arg_s_config.mtrlid,arg_s_config.status_ori,arg_s_config.woodcode_ori,arg_s_config.pcode_ori,arg_s_config.if_status,arg_s_config.if_woodcode,arg_s_config.if_pcode)
- ds_price_new.Retrieve(arg_s_config.mtrlid,arg_s_config.status_new,arg_s_config.woodcode_new,arg_s_config.pcode_new,arg_s_config.if_status,arg_s_config.if_woodcode,arg_s_config.if_pcode)
- For ll_i = 1 To ds_price_ori.RowCount()
- ll_cusid = ds_price_ori.Object.cusid[ll_i]
- ll_mtrlid = ds_price_ori.Object.mtrlid[ll_i]
- ls_status = ds_price_ori.Object.status[ll_i]
- ls_woodcode = ds_price_ori.Object.woodcode[ll_i]
- ls_pcode = ds_price_ori.Object.pcode[ll_i]
- ll_moneyid = ds_price_ori.Object.moneyid[ll_i]
- ld_qty = ds_price_ori.Object.qty[ll_i]
- ld_qty1 = ds_price_ori.Object.qty1[ll_i]
- ld_fprice = ds_price_ori.Object.fprice[ll_i]
- ld_zqrate = ds_price_ori.Object.zqrate[ll_i]
- ld_price = ds_price_ori.Object.price[ll_i]
- ld_fprice_bj = ds_price_ori.Object.fprice_bj[ll_i]
- ld_zqrate_bj = ds_price_ori.Object.zqrate_bj[ll_i]
- ld_price_bj = ds_price_ori.Object.price_bj[ll_i]
- ll_pricelistid = ds_price_ori.Object.pricelistid[ll_i]
- sys_changetime = ds_price_ori.Object.sys_changetime[ll_i]
-
- If arg_s_config.if_status = 0 Then
- ls_status_new = ls_status
- Else
- ls_status_new = arg_s_config.status_new
- End If
-
- If arg_s_config.if_woodcode = 0 Then
- ls_woodcode_new = ls_woodcode
- Else
- ls_woodcode_new = arg_s_config.woodcode_new
- End If
-
- If arg_s_config.if_pcode = 0 Then
- ls_pcode_new = ls_pcode
- Else
- ls_pcode_new = arg_s_config.pcode_new
- End If
-
-
- ll_row = ds_price_new.Find('cusid = '+String(ll_cusid)+' and mtrlid = '+String(ll_mtrlid) +' and status = "'+ls_status_new+'" and woodcode = "'+ls_woodcode_new+'" and pcode = "'+ls_pcode_new+'" and moneyid = '+String(ll_moneyid) + ' and qty = '+String(ld_qty) + ' and qty1 = '+String(ld_qty1),1,ds_price_new.RowCount())
-
- If ll_row <= 0 Then
- Update u_cus_price
- Set status = :ls_status_new,
- woodcode = :ls_woodcode_new,
- pcode = :ls_pcode_new
- Where cusid = :ll_cusid
- And mtrlid = :ll_mtrlid
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode
- And moneyid = :ll_moneyid
- And qty = :ld_qty
- And qty1 = :ld_qty1;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(客户历史价)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Update u_cus_price_mx
- Set status = :ls_status_new,
- woodcode = :ls_woodcode_new,
- pcode = :ls_pcode_new
- Where cusid = :ll_cusid
- And mtrlid = :ll_mtrlid
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode
- And moneyid = :ll_moneyid
- And qty = :ld_qty
- And qty1 = :ld_qty1;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(客户历史价明细)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Else
- //作废原配置价格
- Update u_cus_price
- Set ifcancel = 1
- Where cusid = :ll_cusid
- And mtrlid = :ll_mtrlid
- And status = :ls_status
- And woodcode = :ls_woodcode
- And pcode = :ls_pcode
- And moneyid = :ll_moneyid
- And qty = :ld_qty
- And qty1 = :ld_qty1;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(客户历史价,作废原价格)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- //如果原价格最近更新时间晚于变更配置后价格的时间,用原价格更新到新配置
- If sys_changetime > ds_price_new.Object.sys_changetime[ll_row] Then
-
- Update u_cus_price
- Set fprice = :ld_fprice,
- zqrate = :ld_zqrate,
- price = :ld_price,
- fprice_bj = :ld_fprice_bj,
- zqrate_bj = :ld_zqrate_bj,
- price_bj = :ld_price_bj,
- pricelistid = :ll_pricelistid
- Where cusid = :ll_cusid
- And mtrlid = :ll_mtrlid
- And status = :ls_status_new
- And woodcode = :ls_woodcode_new
- And pcode = :ls_pcode_new
- And moneyid = :ll_moneyid
- And qty = :ld_qty
- And qty1 = :ld_qty1;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(客户历史价),更新配置价格失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- //把原价格明细中最后一条插入到新配置价格明细中
- 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,
- :ls_status_new,
- :ls_woodcode_new,
- :ls_pcode_new,
- u_cus_price_mx.dscrp,
- u_cus_price_mx.buildtype,
- u_cus_price_mx.printid,
- u_cus_price_mx.moneyid,
- u_cus_price_mx.qty,
- u_cus_price_mx.qty1
- )
- Select top 1 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.status,
- u_cus_price_mx.woodcode,
- 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.qty,
- u_cus_price_mx.qty1
- From u_cus_price_mx
- Where u_cus_price_mx.cusid = :ll_cusid
- And u_cus_price_mx.mtrlid = :ll_mtrlid
- And u_cus_price_mx.status = :ls_status
- And u_cus_price_mx.woodcode = :ls_woodcode
- And u_cus_price_mx.pcode = :ls_pcode
- And u_cus_price_mx.moneyid = :ll_moneyid
- And u_cus_price_mx.qty = :ld_qty
- And u_cus_price_mx.qty1 = :ld_qty1
- Order By u_cus_price_mx.opdate Desc;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(客户历史价),插入新配置价格明细失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- End If
-
- End If
-
-
- Next
- //2.销售订单
- Update u_SaleTaskMx
- Set u_SaleTaskMx.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_SaleTaskMx.status End ,
- u_SaleTaskMx.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_SaleTaskMx.woodcode End ,
- u_SaleTaskMx.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_SaleTaskMx.pcode End
- Where (u_SaleTaskMx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_SaleTaskMx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_SaleTaskMx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_SaleTaskMx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(销售订单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //2.1 u_saletaskmxmx
- Update u_saletaskmxmx
- Set u_saletaskmxmx.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_saletaskmxmx.status End ,
- u_saletaskmxmx.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_saletaskmxmx.woodcode End ,
- u_saletaskmxmx.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_saletaskmxmx.pcode End
- Where (u_saletaskmxmx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_saletaskmxmx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_saletaskmxmx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_saletaskmxmx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(销售订单u_saletaskmxmx)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //3.生产计划/生产指令单
- Update u_Order_ml
- Set u_Order_ml.status_mode = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_Order_ml.status_mode End ,
- u_Order_ml.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_Order_ml.woodcode End ,
- u_Order_ml.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_Order_ml.pcode End
- Where (u_Order_ml.status_mode = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_Order_ml.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_Order_ml.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_Order_ml.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(生产计划/指令单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //3.1生产需求
- Update u_OrderRqMtrl
- Set u_OrderRqMtrl.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_OrderRqMtrl.status End ,
- u_OrderRqMtrl.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_OrderRqMtrl.woodcode End ,
- u_OrderRqMtrl.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_OrderRqMtrl.pcode End
- Where (u_OrderRqMtrl.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_OrderRqMtrl.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_OrderRqMtrl.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_OrderRqMtrl.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(生产计划需求明细)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //3.2生产计划运算树
- Update u_OrderRqMtrl_tree
- Set u_OrderRqMtrl_tree.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_OrderRqMtrl_tree.status End ,
- u_OrderRqMtrl_tree.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_OrderRqMtrl_tree.woodcode End ,
- u_OrderRqMtrl_tree.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_OrderRqMtrl_tree.pcode End
- Where (u_OrderRqMtrl_tree.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_OrderRqMtrl_tree.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_OrderRqMtrl_tree.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_OrderRqMtrl_tree.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(生产计划运算)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //3.3生产领料明细
- Update u_OrderRqMtrl_scll
- Set u_OrderRqMtrl_scll.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_OrderRqMtrl_scll.status End ,
- u_OrderRqMtrl_scll.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_OrderRqMtrl_scll.woodcode End ,
- u_OrderRqMtrl_scll.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_OrderRqMtrl_scll.pcode End
- Where (u_OrderRqMtrl_scll.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_OrderRqMtrl_scll.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_OrderRqMtrl_scll.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_OrderRqMtrl_scll.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(生产领料明细)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //4.进仓单
- Update u_inwaremx
- Set u_inwaremx.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_inwaremx.status End ,
- u_inwaremx.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_inwaremx.woodcode End ,
- u_inwaremx.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_inwaremx.pcode End
- Where (u_inwaremx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_inwaremx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_inwaremx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_inwaremx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(进仓单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //4.1进仓单包件明细
- Update u_inwaremx_mx
- Set u_inwaremx_mx.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_inwaremx_mx.status End ,
- u_inwaremx_mx.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_inwaremx_mx.woodcode End ,
- u_inwaremx_mx.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_inwaremx_mx.pcode End
- Where (u_inwaremx_mx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_inwaremx_mx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_inwaremx_mx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_inwaremx_mx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(进仓单包件明细)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //5.出仓单
- Update u_outwaremx
- Set u_outwaremx.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_outwaremx.status End ,
- u_outwaremx.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_outwaremx.woodcode End ,
- u_outwaremx.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_outwaremx.pcode End
- Where (u_outwaremx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_outwaremx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_outwaremx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_outwaremx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(出仓单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //5.1出仓单包件明细
- Update u_outwaremx_mx
- Set u_outwaremx_mx.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_outwaremx_mx.status End ,
- u_outwaremx_mx.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_outwaremx_mx.woodcode End ,
- u_outwaremx_mx.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_outwaremx_mx.pcode End
- Where (u_outwaremx_mx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_outwaremx_mx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_outwaremx_mx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_outwaremx_mx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(出仓单包件明细)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //6.条码生成单
- Update u_getbar
- Set u_getbar.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_getbar.status End ,
- u_getbar.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_getbar.woodcode End ,
- u_getbar.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_getbar.pcode End
- Where (u_getbar.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_getbar.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_getbar.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_getbar.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(条码生成单)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- //7.条码
- Update u_mtrlware_mx
- Set u_mtrlware_mx.status = case :arg_s_config.if_status when 1 then :arg_s_config.status_new else u_mtrlware_mx.status End ,
- u_mtrlware_mx.woodcode = case :arg_s_config.if_woodcode when 1 then :arg_s_config.woodcode_new else u_mtrlware_mx.woodcode End ,
- u_mtrlware_mx.pcode = case :arg_s_config.if_pcode when 1 then :arg_s_config.pcode_new else u_mtrlware_mx.pcode End
- Where (u_mtrlware_mx.status = :arg_s_config.status_ori Or :arg_s_config.if_status = 0)
- And (u_mtrlware_mx.woodcode = :arg_s_config.woodcode_ori Or :arg_s_config.if_woodcode = 0)
- And (u_mtrlware_mx.pcode = :arg_s_config.pcode_ori Or :arg_s_config.if_pcode = 0)
- And (u_mtrlware_mx.mtrlid = :arg_s_config.mtrlid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(条码)"+"~n"+sqlca.SQLErrText
-
- Goto ext
- End If
- //8.库存,结存
- //库存ID要同时更新到出仓单明细
- ds_ware_ori.Retrieve(arg_s_config.mtrlid,arg_s_config.status_ori,arg_s_config.woodcode_ori,arg_s_config.pcode_ori,arg_s_config.if_status,arg_s_config.if_woodcode,arg_s_config.if_pcode)
- ds_ware_new.Retrieve(arg_s_config.mtrlid,arg_s_config.status_new,arg_s_config.woodcode_new,arg_s_config.pcode_new,arg_s_config.if_status,arg_s_config.if_woodcode,arg_s_config.if_pcode)
- For ll_i = 1 To ds_ware_ori.RowCount()
- ll_scid = ds_ware_ori.Object.scid[ll_i]
- ll_mtrlwareid = ds_ware_ori.Object.mtrlwareid[ll_i]
- ll_mtrlid = ds_ware_ori.Object.mtrlid[ll_i]
- ll_storageid = ds_ware_ori.Object.storageid[ll_i]
- ls_status = ds_ware_ori.Object.status[ll_i]
- ls_woodcode = ds_ware_ori.Object.woodcode[ll_i]
- ls_pcode = ds_ware_ori.Object.pcode[ll_i]
- ls_plancode = ds_ware_ori.Object.plancode[ll_i]
- ls_mtrlcuscode = ds_ware_ori.Object.mtrlcuscode[ll_i]
- ls_location = ds_ware_ori.Object.Location[ll_i]
- ll_sptid = ds_ware_ori.Object.sptid[ll_i]
- ll_dxflag = ds_ware_ori.Object.dxflag[ll_i]
- ld_noallocqty = ds_ware_ori.Object.noallocqty[ll_i]
- ld_unoallocqty = ds_ware_ori.Object.unoallocqty[ll_i]
- ld_allocqty = ds_ware_ori.Object.allocqty[ll_i]
- ld_wareamt = ds_ware_ori.Object.wareamt[ll_i]
- ld_cost = ds_ware_ori.Object.cost[ll_i]
- ld_noauditingqty = ds_ware_ori.Object.noauditingqty[ll_i]
- ld_noauditinguqty = ds_ware_ori.Object.noauditinguqty[ll_i]
-
- If arg_s_config.if_status = 0 Then
- ls_status_new = ls_status
- Else
- ls_status_new = arg_s_config.status_new
- End If
-
- If arg_s_config.if_woodcode = 0 Then
- ls_woodcode_new = ls_woodcode
- Else
- ls_woodcode_new = arg_s_config.woodcode_new
- End If
-
- If arg_s_config.if_pcode = 0 Then
- ls_pcode_new = ls_pcode
- Else
- ls_pcode_new = arg_s_config.pcode_new
- End If
-
- ll_row = ds_ware_new.Find('scid = '+String(ll_scid)+' and mtrlid = '+String(ll_mtrlid)+' and storageid = '+String(ll_storageid)+' status = "'+ls_status_new+'" and woodcode = "'+ls_woodcode_new+'" and pcode = "'+ls_pcode_new+'" and plancode = "'+ls_plancode+'" and mtrlcuscode = "'+ls_mtrlcuscode+'" and location = "'+ls_location+'" and sptid = '+String(ll_sptid)+' and dxflag = '+String(ll_dxflag),1,ds_ware_new.RowCount())
-
- if isnull(ll_row) then ll_row = 0
-
- If ll_row <= 0 Then
- Update u_mtrlware
- Set status = :ls_status_new,
- woodcode = :ls_woodcode_new,
- pcode = :ls_pcode_new
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- // And mtrlid = :ll_mtrlid
- // And status = :ls_status
- // And woodcode = :ls_woodcode
- // And pcode = :ls_pcode
- // And plancode = :ls_plancode
- // And mtrlcuscode = :ls_mtrlcuscode
- // And location = :ls_location
- // And sptid = :ll_sptid
- // And dxflag = :ll_dxflag;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(库存表)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Update u_warebalc
- Set status = :ls_status_new,
- woodcode = :ls_woodcode_new,
- pcode = :ls_pcode_new
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(结存表)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
- Else
- ll_mtrlwareid_new = ds_ware_new.Object.mtrlwareid[ll_row]
-
- //如果新配置已存在库存记录,则把原配置库存数量加到新配置库存记录中
- Update u_mtrlware
- Set noallocqty = noallocqty + :ld_noallocqty,
- unoallocqty = unoallocqty + :ld_unoallocqty,
- allocqty = allocqty + :ld_allocqty,
- wareamt = wareamt + :ld_wareamt,
- noauditingqty = noauditingqty + :ld_noauditingqty,
- noauditinguqty = noauditinguqty + :ld_noauditinguqty,
- cost = case (noallocqty + :ld_noallocqty) when 0 then cost else (wareamt + :ld_wareamt) / (noallocqty + :ld_noallocqty) End
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid_new;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(库存合并)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- //把原配置库存数量清0
- Update u_mtrlware
- Set noallocqty = 0,
- unoallocqty = 0,
- allocqty = 0,
- wareamt = 0,
- noauditingqty = 0,
- noauditinguqty = 0
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(库存合并)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- //将出仓单明细的mtrlwareid由原id更新到新id
- Update u_outwaremx
- Set u_outwaremx.mtrlwareid = :ll_mtrlwareid_new
- Where (u_outwaremx.mtrlwareid = :ll_mtrlwareid);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(出仓单明细库存ID变更)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- //更新结存
- ds_balc_ori.Retrieve(ll_scid,ll_mtrlwareid)
- ds_balc_new.Retrieve(ll_scid,ll_mtrlwareid_new)
-
- For ll_i = 1 To ds_balc_ori.RowCount()
- ll_balcdateint = ds_balc_ori.Object.balcdateint[ll_i]
-
- bgqty = ds_balc_ori.Object.bgqty[ll_i]
- bgamt = ds_balc_ori.Object.bgamt[ll_i]
- incqty = ds_balc_ori.Object.incqty[ll_i]
- incamt = ds_balc_ori.Object.incamt[ll_i]
- desqty = ds_balc_ori.Object.desqty[ll_i]
- desamt = ds_balc_ori.Object.desamt[ll_i]
- balcqty = ds_balc_ori.Object.balcqty[ll_i]
- balcamt = ds_balc_ori.Object.balcamt[ll_i]
- pypk = ds_balc_ori.Object.pypk[ll_i]
- pypkamt = ds_balc_ori.Object.pypkamt[ll_i]
- buyinqty = ds_balc_ori.Object.buyinqty[ll_i]
- buyinamt = ds_balc_ori.Object.buyinamt[ll_i]
- buyinqty_pack = ds_balc_ori.Object.buyinqty_pack[ll_i]
- buyinamt_pack = ds_balc_ori.Object.buyinamt_pack[ll_i]
- saleinqty_packpro = ds_balc_ori.Object.saleinqty_packpro[ll_i]
- saleinamt_packpro = ds_balc_ori.Object.saleinamt_packpro[ll_i]
- cpinqty = ds_balc_ori.Object.cpinqty[ll_i]
- cpinamt = ds_balc_ori.Object.cpinamt[ll_i]
- jginqty = ds_balc_ori.Object.jginqty[ll_i]
- jginamt = ds_balc_ori.Object.jginamt[ll_i]
- diinqty = ds_balc_ori.Object.diinqty[ll_i]
- diinamt = ds_balc_ori.Object.diinamt[ll_i]
- mvinqty = ds_balc_ori.Object.mvinqty[ll_i]
- mvinamt = ds_balc_ori.Object.mvinamt[ll_i]
- otinqty = ds_balc_ori.Object.otinqty[ll_i]
- otinamt = ds_balc_ori.Object.otinamt[ll_i]
- pyinqty = ds_balc_ori.Object.pyinqty[ll_i]
- pyinamt = ds_balc_ori.Object.pyinamt[ll_i]
- ubgqty = ds_balc_ori.Object.ubgqty[ll_i]
- uincqty = ds_balc_ori.Object.uincqty[ll_i]
- udesqty = ds_balc_ori.Object.udesqty[ll_i]
- ubalcqty = ds_balc_ori.Object.ubalcqty[ll_i]
-
- ll_row = ds_balc_new.Find('balcdateint = '+String(ll_balcdateint),1,ds_balc_new.RowCount())
-
- If ll_row > 0 Then
- //如果同一结存表有新库存ID,则把原库存ID结存表数量加到新库存结存上面,并把原结存数量清0
-
- Update u_warebalc
- Set bgqty = bgqty + :bgqty,
- bgamt = bgamt + :bgamt,
- incqty = incqty + :incqty,
- incamt = incamt + :incamt,
- desqty = desqty + :desqty,
- desamt = desamt + :desamt,
- balcqty = balcqty + :balcqty,
- balcamt = balcamt + :balcamt,
- pypk = pypk + :pypk,
- pypkamt = pypkamt + :pypkamt,
- buyinqty = buyinqty + :buyinqty,
- buyinamt = buyinamt + :buyinamt,
- buyinqty_pack = buyinqty_pack + :buyinqty_pack,
- buyinamt_pack = buyinamt_pack + :buyinamt_pack,
- saleinqty_packpro = saleinqty_packpro + :saleinqty_packpro,
- saleinamt_packpro = saleinamt_packpro + :saleinamt_packpro,
- cpinqty = cpinqty + :cpinqty,
- cpinamt = cpinamt + :cpinamt,
- jginqty = jginqty + :jginqty,
- jginamt = jginamt + :jginamt,
- diinqty = diinqty + :diinqty,
- diinamt = diinamt + :diinamt,
- mvinqty = mvinqty + :mvinqty,
- mvinamt = mvinamt + :mvinamt,
- otinqty = otinqty + :otinqty,
- otinamt = otinamt + :otinamt,
- pyinqty = pyinqty + :pyinqty,
- pyinamt = pyinamt + :pyinamt,
- ubgqty = ubgqty + :ubgqty,
- uincqty = uincqty + :uincqty,
- udesqty = udesqty + :udesqty,
- ubalcqty = ubalcqty + :ubalcqty
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid_new
- And balcdateint = :ll_balcdateint;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(结存表)失败(增加新库存ID结存数量)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
-
- //清空原库存ID结存数据
- Update u_warebalc
- Set bgqty = 0,
- bgamt = 0,
- incqty = 0,
- incamt = 0,
- desqty = 0,
- desamt = 0,
- balcqty = 0,
- balcamt = 0,
- pypk = 0,
- pypkamt = 0,
- buyinqty = 0,
- buyinamt = 0,
- buyinqty_pack = 0,
- buyinamt_pack = 0,
- saleinqty_packpro = 0,
- saleinamt_packpro = 0,
- cpinqty = 0,
- cpinamt = 0,
- jginqty = 0,
- jginamt = 0,
- diinqty = 0,
- diinamt = 0,
- mvinqty = 0,
- mvinamt = 0,
- otinqty = 0,
- otinamt = 0,
- pyinqty = 0,
- pyinamt = 0,
- ubgqty = 0,
- uincqty = 0,
- udesqty = 0,
- ubalcqty = 0
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid
- And balcdateint = :ll_balcdateint;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(结存表)失败(清空原结存记录)"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Else
- //没有找到新库存ID的结存表信息,则把原来结存表库存ID更新为新id,并把原配置更新为新配置
- Update u_warebalc
- Set status = :ls_status_new,
- woodcode = :ls_woodcode_new,
- pcode = :ls_pcode_new,
- mtrlwareid = :ll_mtrlwareid_new
- Where scid = :ll_scid
- And mtrlwareid = :ll_mtrlwareid
- And balcdateint = :ll_balcdateint;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "更新数据失败(结存表)失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- End If
-
- Next
- End If
-
- Next
- //////////////// //
- Update u_config_change
- Set flag = 1,
- auditdate = getdate(),
- auditemp = :arg_opemp
- Where billid = :arg_billid;
- 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
- Destroy ds_price_ori
- Destroy ds_price_new
- Destroy ds_ware_ori
- Destroy ds_ware_new
- Destroy ds_balc_ori
- Destroy ds_balc_new
- Return rslt
- end function
- public function integer p_getinfo (long arg_billid, ref s_config_change arg_s_config, ref string arg_msg);Int rslt = 1
- Select flag,
- mtrlid,
- status_ori,
- woodcode_ori,
- pcode_ori,
- status_new,
- woodcode_new,
- pcode_new,
- if_status,
- if_woodcode,
- if_pcode,
- if_update_mtrl
- Into :arg_s_config.flag,
- :arg_s_config.mtrlid,
- :arg_s_config.status_ori,
- :arg_s_config.woodcode_ori,
- :arg_s_config.pcode_ori,
- :arg_s_config.status_new,
- :arg_s_config.woodcode_new,
- :arg_s_config.pcode_new,
- :arg_s_config.if_status,
- :arg_s_config.if_woodcode,
- :arg_s_config.if_pcode,
- :arg_s_config.if_update_mtrl
- From u_config_change
- Where billid = :arg_billid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询单据信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
- ext:
- Return rslt
- end function
- public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
- If arg_billid <= 0 Then
- rslt = 0
- arg_msg = '错误的单据唯一码'
- Goto ext
- End If
- s_config_change arg_s_config
- If p_getinfo(arg_billid,arg_s_config,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If arg_s_config.flag <> 0 Then
- rslt = 0
- arg_msg = '单据不是待审核状态,不可以修改'
- Goto ext
- End If
- ext:
- Return rslt
- end function
- on uo_config_change.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_config_change.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|