29
2023
04
10:04:01

以单据分录字段作为审批流程判断条件的实现方法

判断销售订单是否存在非系统定价的分录:

如下表达式用来判断是否存在非系统定价(销售价目表中没有对应单价的)的分录:

len(filter(lambda x:  (x.FMaterialID !=null  and x.FPriceUnitQty>0 and x.FSysPrice=0),FSaleOrderEntry)) > 0

上式中:

FSaleOrderEntry 为销售订单表体的标识

FMaterialID 为物料编码

FPriceUnitQty 为销售定价数量

FSysPrice 为系统定价(销售价目表价格自动写入)

Lambda 用来循环判断销售订单明细各字段是否符合条件

Filter 返回符合条件的值列表

Len 判断filter返回列表的值个数

 

流程判断条件界面如下:


如下表达式成立时,表示没有非系统定价的分录:

len(filter(lambda x:  (x.FMaterialID !=null  and x.FPriceUnitQty>0 and x.FSysPrice=0),FSaleOrderEntry)) = 0,以此作为审批流另一个分支的判断条件;

 

注意,所有的明细表字段判断条件,都必须写在lambda函数里面才能正确识别, 写成这样是不行的:FMaterialID !=null  and  len(filter(lambda x:  (x.FPriceUnitQty>0 and x.FSysPrice=0),FSaleOrderEntry)) = 0


同上原理,可以实现如下流程判断:


 判断销售订单是否存在没有bom的分录:

如下表达式,可以判断销售订单分录上BOM版本是否为空:

len(filter(lambda x:  (x.FMaterialID !=null  and x.FMaterialID.FErpClsID in ('2','3','9') and x.FBomID=null),FSaleOrderEntry)) > 0

上式中:

FErpClsID是字符型枚举字段,用来确定物料是否为自制、委外或配置属性

FBomID 是BOM版本字段,只能判空,不能判断是否为0


判断物料清单中子项BOM版本是否为空:

len(filter(lambda x:  (x.FMATERIALIDCHILD !=null  and x.FMATERIALIDCHILD.FErpClsID in ('2','3','9') and x.FBomID=null),FTreeEntity)) > 0

上式中:

FMATERIALIDCHILD是指物料清单子项物料






推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/4017.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: