以单据分录字段作为审批流程判断条件的实现方法原创
金蝶云社区-谁是我
谁是我
36人赞赏了该文章 8,129次浏览 未经作者许可,禁止转载编辑于2020年02月13日 11:25:00

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

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

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是指物料清单子项物料




赞 36