一、前言:专业版按单生产 (MTO)的应用难点 本次产品需要解决思路主要基于KIS 专业版 V10.X。 本系列案例涉及对数据库的操作,特别是金蝶账套的单据模板数据表的修改,存在一定的数据风险,操作前请备份好账套。如果你对金蝶K3、KISPRO系列产品的数据结构不熟悉,请就此打住。望三思而后行! 金蝶专业版V10.0已于近日发版,新增的生产功能,其简易的按单生产(生产和领料管理)、生产成本计算,已经超越最初用友U6生产功能,作为低端产品,基本上能满足软件所定位的目标市场的企业需求。 但试用了专业版生产管理的朋友,也应该可以感觉得到,KIS 专业版若将在小企业的实际生产应用中,特别是按单生产类企业,至少还会面临以下几个问题: 1、没有计划功能,或者说计划功能太过于简陋。 (1)、专业版的BOM只是一个物料清单,由此,就可以看出产品对生产的解决方案,只定位基本上定位在进行简易加工组装生产类型的小企业,产品不太多,者说比较简单、BOM层级不太复杂(只有一、两级)。 (2)、采购建议可以算出物料需求并生成采购订单,但仅是单层次的物料计划(子件需求展开到最明细物料仍是单层次),且无法对物料的需求时间作出计划; 但“采购建议”功能有一个优点:能在计算时,考虑计算时点当前的即时库存、安全库存、采购在途量、销售未出库量、生产未领料单: 第一步,根据销售订单或生产任务单作简易的采购建议运算; 第二步,调整采购建议; 第三步,确认并下推并生成采购订单; (2)、无法生成计划生产产品的半成品生产计划及生产单,也就造成业务断链。 (3)、单层次的生产任务和领料可以作计划控制;但“采购建议”功能毕竟不是专门的MRP功能,简单得连序时簿都没有,记录浏览都成问题,要对物料需求、采购计划和跟踪更无从谈起。 显然,专业版要解决对按单生产(MTO),这种对销售、计划、采购、生产进行全面跟踪的业务应用,还是欠缺和遗憾的。 二、需求问题分析: 真的没有办法了嘛?俺们这号人懒,不好动,就不喜欢多做事,总想着法了省力。 基于如上分析,理了一下思路: 1、如何在将专业版的无计划或者说弱计划变为有计划,解决专业版的采购、生产的时间计划问题? 2、如何解决专业版的生产任务的子项物料需求的采购、入库、领料及仓存的计划跟踪问题? 3、如何解决专业版的生产任务的子项生产任务及跟踪问题? 细思了一下,决定自己操刀,先解决按单生产(MTO)采购问题再说。 今天晚上九点下班回家,恰好碰见KERUI大海在“总部KIS交流群”上说:商贸版的易用性、专业版的自定义、KISBOS报表的简便易用性,我靠,简直无敌! 这话不假,嘿嘿…… 三、需求实现: 庖丁解牛,讲求的是“快、准、狠”,但要这到三点,其实是有条件的,前提还是要熟悉业务,要有把好刀,要有头好牛,解牛关键的关键,是在哪一个部位下刀。 专业版生产管理的核心是《生产任务单》,采购建议、生产领料、产品入库、成本核算都是围绕《生产任务单》进行的,我们就拿它下刀吧! 基于K/3 MTO计划管理跟踪的原理,对于需要进行MTO计划管理的物料需求,MTO跟踪号和MTO管控贯穿了销售、计划、生产、采购、仓存等业务链的所有链单据;我们要在专业版上实现基本MTO跟踪效果,就必须对实行MTO计划管理的物料需求,在销售、生产、采购和仓存等几个环节实现全面跟踪。 所以,首要的环节,就是如何实现生产任务的子项物料需求的计划功能,关联并对采购订单进行跟踪。 说穿了,就是实现“生产任务→采购订单”这一业务流程。 基于如上思路,本次解决方案,仍还是玩转金蝶产品的单据自定义和业务流程自定义,沿用本系列一贯的做法,原则上不涉及编程操作,仍完全是调用产品的单据平台机制来解决问题。 1、 定义辅助资料“计划模式” 基本脚本如下: ---------------------------------- IF NOT EXISTS (SELECT * FROM t_SubMessage WHERE FInterID=14035 AND FTypeID=606) INSERT INTO t_SubMessage (FInterID,FBrno,FName,FID,FParentID,FTypeID,FSpec) VALUES (14035, '0', 'MTO计划模式', 'MTO',0,606, NULL) Go ---------------------------------- 2、 《生产任务单》单据自定义 至少需要增加以下字段: (1)、计划模式(FPlanMode); (2)、计划批号(FBatchNo); (3)、计划订购数量(FPlanOrderQty); (4)、实际订购数量(FPlanOrderComQty); 各字段用途及所作的基本控制如下: (1)、计划模式字段 设置数据录入,来源于基础资料-辅助属性“计划模式”。 基本脚本如下: ---------------- UPDATE ICTemplateentry SET FrelationID=’ FItemID’, FAction=’ .,FPlanMode’, FdefaultValue=’14036’ WHERE FID=’J01’ AND FfieldName=’ FPlanMode’ ------------------ (2)、计划批号字段。 对于要进行强计划管控的 MTO 子项物料,必须使用批次管理;弱计划管控的 MTO 子项物料,可以不使用批次管理,不进行MTO管控的 MTS子件,选择“MTS计划模式”。 之所以用批号作跟踪号,而没有新增“FMTONo”字段,主要基于两点考虑: 第一,K3的MTO跟踪管控,不仅体现单据上,同时还体现在相应的业务账表上,控件Faction解析件是K3独有的,专有版没有此功能。 第二、使用批次管理,牵涉的专业版单据改动量最小。且即时库存查询、账表查询等,系统都有批号查询功能。 基本脚本如下: -------------------- UPDATE ICTemplateentry SET FrelationID=’ FItemID’, FAction=’ =,Ftrack,80;AutoBatch’, FSaveRule=’ @:’ WHERE FID=’J01’ AND FfieldName=’ FBatchNo’ ---------------------- (3)、计划订购数量字段。 计划采购数量,等于计划用量,可修改。 基本脚本如下: ---------------------- UPDATE ICTemplateentry SET FrelationID=’ FUnitID,FAuxQty,FAuxPlanQty,FPlanQty,FScrapRate’, FAction=’ Cal,A=B/(1-C/100),FQty,FScrapRate’ WHERE FID=’J01’ AND FfieldName=’ FPlanOrderQty’ -------------- (4)、实际订购数量字段,用于采购订单下单反写。 3、 定义“生产任务单→采购订单”业务流程 关键字段设置 供应商:来源于《生产任务单》表体“计划订购商”字段,要求选单一致。 物料代码、物料名称、规格型号、辅助属性、单位,来源于《生产任务单》表体相同的字段。 数量:来源于《生产任务单》表体“计划订购数量”字段。 交货日期:来源于《生产任务单》表体“计划需求日期”字段。 批号:来源于《生产任务单》表体“计划批号”字段。 源单类型、源单编号、源单内码、源单分录:来源于《生产任务单》单据类型、编号、单据内码、分录ID等字段信息。 过滤条件: 来源于《生产任务单》表体子项需求为“MTO计划模式”、数量不为零的物料。 MTS计划模式的物料采购需求,仍可沿用原“采购建议”功能生成。 其基本选单条件脚本如下: ---------------------------------- UPDATE ICClassLink SET FCondition='U1.FPlanMode=14035 AND (U1.FPlanOrderQty - isnull(U1.FPlanOrderComQty, 0)>0)' WHERE FSourClassTypeID = -85 AND FDestClassTypeID = -71 GO ---------------------------------- 应用效果图,如下: 4、采购订单后续业务控制,相关单据均需要使用选单生成来实现控制,否则会出现业务断链。 对于要进行强计划管控的 MTO 子项物料,必须使用批次管理,所以应增加对于《外购入库单》和《领料单》的“批号”选单数据来源。 《外购入库单》的如下: ---------------------------------- IF NOT EXISTS (SELECT 1 FROM ICSelBills WHERE FID='A01' AND FFieldName='FOrderInterID' AND FDstCtlField='FBatchNo' ) Insert Into ICSelBills (FID,FFieldName,FDstCtlField,FDK,FSelType,FColName,FName,FTableName,FTableAlias) values('A01','FOrderInterID','FBatchNo',0,0,'FBatchNo','FBatchNo','POOrderEntry','u1') ---------------------------------- 《领料单》增加原理亦同,不同例示。
|