一、费用分配
费用分配共包含以下三种费用的分配:
Ø 期间费用分配:来源费用归集,分配依据的是费用分配标准设置中费用类型为费用项目对应的费用分配标准来进行分配的。
Ø 共耗材料分配:分配依据的是费用分配标准设置中费用类型为共耗材料对应的费用分配标准来进行分配的。
Ø 直接材料分配:其中直接材料分配采用的是根据分类法分配标准或者产品组中主联副所占比重就行分配。
其中直接材料分配的分配过程比较简单,暂没有开发接口支持自定义的分配标准进行分配,此处只关注依据费用分配标准进行的扩展开发。
二、费用分配的基本逻辑
以生产费用过程为例,见图:
费用分配的整体业务模型是我们定义好的,其定义是根据费用分配标准设置,可根据系统了解。
此模型的整体过程是不允许修改的,当前的扩展干预分配过程仅限定在单步过程,对于每一个过程其逻辑如下图:
扩展时只需要根据费用分配标准对应的权重对象即可,下面就来介绍一下费用分配标准。
三、费用分配标准
费用分配标准是分配的依据,现在系统中共定义了如下标准:
一般来说,可把费用分配标准分为如下几类:
四、分配标准自定义
需要通过BOS IDE找到分配标准对应的元数据,然后放开隐藏的两个字段:仅为复合标准运算因子和配置实现类。然后把实现类的信息通过配置实现类添加到数据库,参考预设的数据:
五、权重取数逻辑的实现
权重对象定义在:Kingdee.K3.FIN.CB.Common.BusinessEntity中,具体如下图:
注意:属性ProductDimeId的数据来源于T_CB_PROORDERDIME。
新增实现类,继承AbstractWeightInfo,然后重写GetWeightInfos方法即可。
六、实例实现
某客户生产产品是根据消耗废材的重量来计算成本,其和标准工时的计算比较相像,客户自行扩展了物料,增加了重量字段来记录其标准消耗,据此的实现可根据如下步骤进行:
1、增加费用分配标准
打开BOS IDE,修改费用分配标准元数据,仅为复合标准运算因子字段不隐藏,然后打开费用分配标准,新增一条名为标准重量的标准,勾选上仅为复合标准运算因子。
2、实现
在工程中增加一个类ComplexStdWeightWeight,其具体实现可以参考附件
工程引用:
Kingdee.K3.FIN.CB.App.Core.DLL
Kingdee.K3.FIN.Core.DLL
Kingdee.BOS.DLL
Kingdee.K3.FIN.CB.Common.BusinessEntity.DLL
Kingdee.BOS.App.Data.DLL
Kingdee.BOS.DataEntity.DLL
Kingdee.K3.FIN.CB.Common.Core.DLL
Kingdee.BOS.Core.DLL
注意:sb.AppendFormat(" select PDIM.FPRODUCTDIMEID, MATP.FWEIGHT AS FSTDWEIGHT");
FWEIGHT就是客户自行添加的字段:FCUST_PJZL
3、更新费用分配标准
更新新增标准重量分配标准的FGETWEIGHTSCLASS字段,把实现更新进去,如:
UPDATE T_CB_COSTALLOCCRITERIA SET FGETWEIGHTSCLASS=’反射实现’
WHERE FSTANDARDID=1111111
4、具体应用
新增一个费用分配标准,勾选复合,然后配置对应的计算公式即可,如:完工入库*标准重量
在费用分配标准设置中发送方成本中心选择对应的复合分配标准。
PS:目前只支持乘法,乘法才有意义!
推荐阅读