#实践案例#启用批号的物料可以反启用吗?方案来了!!

1 业务背景
1.1业务场景
本案例基于启用批号业务场景而撰写,产品为旗舰版V7.0,在企业的实际业务中,有启用批号管理业务场景,但是在使用过程中,批号并没有给公司带来很大便捷性,反而给后续的仓库造成很大的工作量,比如启用批号,下推领料的时候,有时候由于未能及时入库,或者由于入库单未能及时审批,出库的批号是未知之数,因此不能选择或者随便填写,出库单也就无从选择批号。此种情况是最为常见并且仓库工作量投入大量精力,往往数据不能及时有效录入系统。
1.2客户痛点分析
帐套中去掉批号管理
本来物料启用批号的主要目的就是想要追溯来源,并且为后续订单质量进行追踪,方便分批进行成本计算。但是在实际的操作过程中,仓库的工作也做了,不但没有起到强大的管理作用,反而经常出现实物批号跟系统库存批号不符的情况,更有甚者,库存中某个批号为正数,某个批号为负数,数量刚好相反,如果物料的计价方法为分批认定法的话,给财务的工作也造成了很大的困扰,往往获取不到负结存料号的单价,存货核算也就结账不成功。给财务造成很大的工作量,往往在期末结账的时候,都在大量查找各种产品,的各种成本,严重延误出报表的时间
1.3客户诉求与期望
客户最大的期望是仓库数据及时稳定,同时财务可以正常快速结账。考虑再三,还是决定去掉物料中的批号管理,这样仓库的工作量也会小一些,财务结账也会更顺畅一些
2 解决方案
2.1整体思路
根据客户实际的业务场景,在加上金蝶系统本身的功能,不在数据库中进行处理,系统中是根本不具有解决方案的,因此考虑到直接在数据库中清掉跟批号有关的所有数据,具体方案如下:
需要考虑的点
(1)物料属性修改:去掉所有物料的批号控制设置;
(2)出入库单据修改:清除所有出入库单据的批号;
(3)生产投料资料批号清除;
(4)生产投料变更单批号清除;
(5)生产任务单批号清除;
(6)生产任务变更单批号清除;
(7)生产物料报废/补料单批号清除;
(8)采购销售发票批号清除;
(9)初始化库存单据批号清除;
(10)库存余额数据批号清除和数据处理;
(11)即时库存重算:前端系统重算【校对及时库存】。
3 关键步骤及效果展示
步骤1:物料属性修改:去掉所有物料的批号控制设置;
update t_icitem set FBatchManager = 0 where FBatchManager = 1
如果只是某一个或者部分料号误操作,启用了批号,则直接在最后增加where语句即可
步骤2:出入库单据修改:清除所有出入库单据的批号;
update ICStockbillEntry set FBatchNo = '' where isnull(FBatchNo,'') <> ''
如果只是某一个或者部分料号误操作,启用了批号,在入库的时候提示需要输入序列号,还未入库的情况下,则不需要处理此步骤
步骤3:生产投料资料批号清除
update PPBOMEntry set FBatchNo = '' where isnull(FBatchNo,'') <> ''
步骤4:生产投料变更单批号清除
update PPBomChangeEntry set FBatchNo = '' where isnull(FBatchNo,'') <> ''
步骤5:生产任务单批号清除;
update ICMO set FGMPBatchNo = '' where isnull(FGMPBatchNo,'') <> ''
步骤6:生产任务变更单批号清除;
update ICMOChangeEntry set FBatchNo = '' where isnull(FBatchNo,'') <> ''
步骤7:生产物料报废/补料单批号清除;
update ICItemScrapEntry set FBatchNo = '' where isnull(FBatchNo,'') <> ''
步骤8:采购销售发票批号清除;
update ICPurchaseEntry set FBatchNo = '' where isnull(FBatchNo,'') <> ''
update ICSaleEntry set FBatchNo = '' where isnull(FBatchNo,'') <> ''
步骤9:初始化库存单据批号清除;
第一步删掉期初数据并且备份数据,参考如下:
select a.* into ICInvBal_bak01 from ICInvBal a,(
select FYear,FPeriod,FStockID,FItemID
from ICInvBal
group by FYear,FPeriod,FStockID,FItemID
having count(1) > 1 ) b
where a.FYear = b.FYear and a.FPeriod = b.FPeriod and a.FStockID = b.FStockID and a.FItemID = b.FItemID
delete a
from ICInvBal a,ICInvBal_bak01 b
where a.FYear = b.FYear and a.FPeriod = b.FPeriod and a.FStockID = b.FStockID and a.FItemID = b.FItemID
insert into ICInvBal(FBrNo,FYear,FPeriod,FStockID,FItemID,FBatchNo,FBegQty,FReceive,FSend,FYtdReceive,FYtdSend,FEndQty,FBegBal,FDebit,FCredit,
FYtdDebit,FYtdCredit,FEndBal,FBegDiff,FReceiveDiff,FSendDiff,FEndDiff,FBillInterID,FStockPlaceID,FKFPeriod,FKFDate,
FYtdReceiveDiff,FYtdSendDiff,FSecBegQty,FSecReceive,FSecSend,FSecYtdReceive,FSecYtdSend,FSecEndQty,FAuxPropID,FStockInDate,
FMTONo)
select
'0',FYear,FPeriod,FStockID,FItemID,'',sum(FBegQty),sum(FReceive),sum(FSend),sum(FYtdReceive),sum(FYtdSend),sum(FEndQty),sum(FBegBal),sum(FDebit),sum(FCredit),
sum(FYtdDebit),sum(FYtdCredit),sum(FEndBal),0,0,0,0,0,0,0,'',
0,0,0,0,0,0,0,0,0,'',''
from ICInvBal_bak01
group by FYear,FPeriod,FStockID,FItemID
第二部更新数据:
update ICInvBal set FBatchNo = '' where isnull(FBatchNo,'') <> ''
步骤
#实践案例#启用批号的物料可以反启用吗?方案来了!!
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



