目前在星空旗舰中预置了采购入库单、销售出库单、直接调拨单、分步式调出单、分步式调入单等常用单据参与组织间结算,但是实际业务场景中还会有很多其他单据也有跨组织结算的情况,按下面步骤就可以配置自定义单据参与跨组织结算
一、 结算单据映射配置
结算单据映射功能目前在运行时界面屏蔽了,要增加的话,先打开开发平台,在供应链中台—>公共服务模型-->映射配置 中可以找到【结算单据映射配置】的业务对象,打开后点列表然后点预览就可以查看到目前系统中已经配置好的结算单据映射信息,在这里就可以新增你要增加单据的结算字段映射。 (不要随意更改预置的单据的映射配置,否则可能会导致结算功能异常。)
目标业务对象实体默认为结算单据模型(ism_billmapcfg),来源单据选择对应结算单据
所属应用必须是:组织间结算
部分字段说明:
字段 | 说明 |
目标业务对象实体 | 默认为结算单据模型 |
来源单据 | 结算源单与结算虚单的单据对象 |
本位币 | 仅映射源单字段,结算清单的本位币会根据应收结算组织和应付结算组织重新获取 |
跨组织业务 | 必须映射,单据体字段,在单据提交操作中有挂服务根据结算判定自动给该字段赋值 |
是否跨法人 | 必须映射,单据体字段,在单据提交操作中有挂服务根据结算判定和会计核算体系自动给该字段赋值 |
结算币别 | 取价币别来源为来源业务单据时,会获取该字段值 |
汇率表 | 仅映射源单字段,结算清单的汇率表会根据应收结算组织和应付结算组织重新获取默认汇率表 |
汇率日期 | 仅映射源单字段,结算清单的汇率日期会根据取价来源的汇率来源重取 |
汇率 | 仅映射源单字段,结算清单的汇率会根据之前取到的汇率表,汇率日期,币别和本位币重取 |
含税 | 取价来源为来源业务单据价格时,会获取该字段值 |
分录标识 | 组织间结算模型暂时仅支持单分录模型,因此需要配置支持的分录标识。该字段需要取分录的标识,例如:采购入库单的billentry。 |
单价 | 取价来源为来源业务单据价格时,会获取该字段值 |
税率 | 取价来源为来源业务单据税率时,会获取该字段值 |
含税单价 | 取价来源为来源业务单据价格时,会获取该字段值 |
来源单据实体 | 取价规则获取来源业务单据币别、价格、税率时,需要配置该字段的映射 |
来源单据ID | 取价规则获取来源业务单据币别、价格、税率时,需要配置该字段的映射 |
来源单据行ID | 取价规则获取来源业务单据币别、价格、税率时,需要配置该字段的映射 |
核心单据实体 | 取价规则获取来源订单币别、价格、税率时,需要配置该字段的映射 |
核心单据ID | 取价规则获取来源订单币别、价格、税率时,需要配置该字段的映射 |
核心单据行ID | 取价规则获取来源订单币别、价格、税率时,需要配置该字段的映射 |
注意:一个单据只需要一条配置,若有同一单据有多条配置则可能会导致相关配置冲突。
会用到结算模型的场景有:
1、结算路径设置匹配条件
2、生成结算清单中的字段
3、内部单据字段重置设置
4、单据是否跨法人字段,跨组织业务字段赋值
…
(由于该对象在产品前端不展示,二开的话要把映射生成预置SQL部署)
二、 结算判定的设置
结算判定的作用主要是指定单据上的供货方组织字段和需求方组织字段,并且指定过滤条件哪些过滤条件下的单据才需要做结算。(系统会默认只有供货方组织字段值和需求方组织字段值不一样的才会做结算)
打开 供应链云 –> 组织间结算 -> 结算配置 ->结算判定配置,点击新增
三、 业务方向设置
判定配置用于决定单据是否组织间结算条件执行中是正向还是反向, 一般都是按库存事务的业务方向决定。
四、 新增跨组织单据到内部交易单据的转换规则
开发服务云—>单据转换开发—>转换路线 中新增跨组织单据到内部交易单据的转换路线并设置字段映射,可以先参考下系统预置的其他的内部交易单据的转换规则的设置。
内部交易单据字段要赋值为true
内部交易单据类别:生成的三张内部交易单据中,内部组织间的出单和入单要设置为:对内,另外一张对外单据要设置成:对外
要记录关联关系,目标单和源单的关联实体是物料明细单据体。
字段映射中常见函数说明:
获取结算路径中的数据:getSettleRelationValue(参数1,参数2,参数3)
参数1:结算路径中的字段标识
参数2:字段在结算路径的单据头还是单据体 0:单据头 1:单据体
参数3:如果字段在单据体取单据体的哪一行数据 0:第一行 1:对应匹配的行 2:最后一行
获取内部供应商:getInnerSupplier(参数1,参数2)
参数1:供应商的内部单元组织ID (供应方组织)
参数2:供应商的使用组织 (需求方组织)
获取内部客户:getInnerCustomer(参数1,参数2)
参数1:客户的内部单元组织ID (需求方组织)
参数2:客户的使用组织 (供应方组织)
单据转换的一些插件说明:
Kd.scmc.im.formplugin.botp.InvAfterBotpPlugin: 库存单据处理库存事务字段默认值,辅助数量等
Kd.scmc.im.formplugin.botp.SCMCBillConvertPlugin:处理业务类型,退货类型等
Kd.scmc.ism.formplugin.settle.SettleHandleCurrencyPlugin:处理对内的内部交易单据是采购入和销售出的币别和汇率。(参考预置的单据转换) 对外的内部单据无需这个插件直接通过单据映射币别汇率
Kd.scmc.ism.formplugin.settle.TransInOutBillPlugin:处理内部交易单据是调拨单的币别和汇率 (参考预置的单据转换) 对外的内部单据无需这个插件直接通过单据映射币别汇率
kd.scmc.ism.formplugin.botp.ShiftingTimeBotpPlugin:记录单据转换的关系(ism_innersettle_botp),为后续时间偏移服务
目前对内的内部交易单据只支持:销售出库单(销售退货单),采购入库单(采购退料单),分步式调出单,分步式调入单这四种。
五、 内部交易单据生成方案设置
虚单生成方案用于指定生成结算单据的方式,例如通过哪个BOTP生成结算单据。
打开 供应链云 –> 组织间结算 -> 结算配置 ->内部单据生成方案列表,点击新增或修改对应预置方案。结算路径中配的是哪个内部单据方案就修改哪个内部单据生成方案。
在生成配置上增行,源单据对象选择结算来源单据,生成目标单据对象选择结算生成单据。
结算路径中要新增刚才增加的生成内部交易单据的单据转换规则,系统才会在单据审核时自动生成内部交易单据。
六、 结算路径的设置 [新增单据,结算路径可以不用修改]
系统预置有动态路径,如果没有单独配置具体供应方组织和需求方组织的结算路径,系统将匹配动态路径进行结算。
如果要指定具体供货方和需求方的结算路径,就需要新增结算路径
打开供应链云 –> 组织间结算 -> 结算路径 -> 结算路径列表 ,根据业务需求来设置供应方结算组织、需求方结算组织、供应方单据生成方案、需求方单据生成方案、对外单据生成方案。
七、 业务单据跨组织业务字段和跨法人标识字段赋值
在单据的保存和提交操作的服务端服务中新增“跨组织字段赋值服务”服务。
前提:在前面的结算单据映射中一定要映射“是否跨法人”和“跨组织业务”字段,这两个字段要在跨组织业务单据的单据体。
八、 增加客户和供应商的校验
如果业务跨组织业务单据会生成采购入库单和销售出库单的内部交易单据,因为采购入库单和销售出库单上有客户和供应商的字段,所以首先要创建好客户和供应商资料才能正常的生成内部交易单据。所以在跨组织业务单据的提交操作的插件中要新增是否已经创建了客户和供应商的校验器。
kd.scmc.im.validator.settle.SupplyCustomerValidator
九、 跨组织单据审核自动生成内部交易单据
在单据的审核操作的服务端服务中新增“生成组织间结算(异步)”服务。
十、 跨组织单据反审核操作挂校验插件
1、 先打开开发平台,在供应链—>库存管理-->基础设置—>库存校验器配置(im_validatorcfg) 中新增单据的一个反审核校验:kd.scmc.im.validator.tpl.SettleBillListValidator : 已生成结算清单不允许反审核
2、 在跨组织单据的反审核操作的服务端服务中新增“组织间结算虚单反结算处理”服务
3、增加校验规则:单据后台任务校验。 因为审核时生成内部交易单据是个异步服务,如果反审核点的过快,可能审核生成内部交易单据都还没有完成,要等审核的服务执行完才能反审核。
十一、 日期偏移设置
因为在财务成本核算时出库的成本依赖于出库前入库的成本,所以要保证内部交易单据的先后顺序。在生成内部交易单据的单据转换的插件中增加处理日期偏移的插件:记录单据转换的关系(ism_innersettle_botp),为后续时间偏移服务
kd.scmc.ism.formplugin.botp.ShiftingTimeBotpPlugin
在内部交易单据审核操作中增加处理日期偏移的插件:(根据时间偏移的设置重置内部交易单据的创建时间或审核时间) kd.scmc.im.opplugin.settle.ShiftingTimeHandlePlugin
时间偏移设置,打开开发平台—>供应链—>组织间结算-->结算配置—>时间偏移配置(ism_timeshifting_config) 。 新增单据对应内部交易单据的时间偏移, 偏移原则:按正常的物料流转的先后顺序设置偏移时间。 内部交易单据的时间为跨组织业务源单的时间+时间偏移量。
最后,通过创建结算清单功能就能够将自定义的跨组织业务单据生成结算清单了。
推荐阅读