客户提出的需求:
1) 除部分特殊物料之外,采购订单的价格必须来源于采购价目表;
2) 特殊物料的价格在采购入库前录入采购价目表;
3) 采购入库单录入时,没有采购价格的物料,自动从价目表获取价格;采购入库单上已从源单携带价格的物料,不需按价目表更新价格;
需求的难点:已有价格的不需按价目表自动更新价格;
解决方案:
针对不用强制价格来源于价目表的特殊物料:
Ø 在物料资料中,新增复选框字段(F_ORA_CheckBox):强制价格管控;对所有需要进行强制价格来源于价目表的物料,进行批量勾选;
Ø 采购价格管理参数里面,设置价格来源的检查条件:FMaterialID.F_ORA_CheckBox=True
针对采购入库单自动取价:
因为【获取采购价格】服务在单据头菜单执行时,不能按设置条件只更新特定分录行的价格,所以必须通过一些特别的操作,来实现只更新指定分录行的要求;
第一步:在采购入库单的单据体中,新增一个价格字段;此字段有3个作用:1、暂存【获取采购价格】服务得到的采购价格;2、通过设置值更新事件的触发条件,将暂存的采购价格,更新原来没有价格的那些分录行中的价格(注意价格是否含税);3、通过值更新事件,调用价格字段的默认值更新事件,更新金额、价税合计等价格相关字段;
第二步:在采购入库单的单据头上,新增一个字段(类型没有特别要求,单据上不可见),设置值更新事件:调用字段值更新事件,用来触发单据体中新增价格字段的值更新事件;因为单据头菜单不能直接触发单据体字段的值更新事件,必须通过单据头字段来间接触发;
第三步:在单据的保存菜单里面(有两处),执行【保存】操作之前,新增【获取采购价格】服务;注意,配置此服务的时候,不能直接将价格输出到采购入库单的默认价格字段(注意价格是否含税),因为不能设置条件只更新没有价格的分录行(设置了也没有效果),所以只能先输出到自定义的价格字段,再通过其他的操作(第一步中的自定义单价字段的值更新事件),只更新没有价格的分录行;
第四步:在单据的保存菜单里面(有两处),执行【保存】操作之前,新增【获取采购价格】服务之后;新增一个【调用字段值更新服务】,触发第二步新增的单据头字段的值更新事件,从而间接触发第一步新增的单据体字段的值更新事件,最终实现有条件更新分录行单价目的;
推荐阅读