$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