如何根据销售报价单单据体的物料属性来配置审批流条件?
金蝶云社区-hanjoe
hanjoe
0人赞赏了该文章 1,983次浏览 未经作者许可,禁止转载编辑于2014年03月18日 13:46:21
需求如下,如果单据体的产品的物料分类是“主推商品”,则A经理审核,“辅推产品”则是B经理审核。
在BOS开发工具中,审批流配置的时候是无法根据单据体的字段属性(除了汇总等)来配置分支条件的。

可通过如下方式修改SQL变通处理。

--以物料分类作为分支条件,需要先找到物料分类的属性。
--物料分类是辅助资料,到辅助资料表找,得到FTypeID=504
SELECT * FROM t_SubMesType WHERE FName LIKE '%物料分类
%'
--将上述的FTypeID=504放到如下过滤得到

--20013 主推商品(举例而已)
--20014 辅推产品
SELECT * FROM t_SubMessage WHERE FTypeID=504
--确认1012010是CRM销售报价单,找到销售报价单表是PORFQ
SELECT * FROM ICClassType WHERE FID=1012010
--销售报价单表体的表名
PORFQEntry
SELECT * FROM ICClassTypeEntry WHERE FParentID=1012010
--找到FID,我这里举例是
72
SELECT FID,* FROM ICClassMCTemplate WHERE FClassTypeID=1012010
--把上述的FID放到这里

SELECT FCirculateCondition, * FROM ICClassMCTableInfo WHERE FTemplateID=72
--
找到需要配置分支条件的节点,用FTemplateID、FTagIndex做过滤条件
--我这里以 FTagIndex=10001做例子,如果报价单单据体包含物料分类是【20013 主推商品】则走该分支
SELECT FCirculateCondition, * FROM ICClassMCTableInfo WHERE FTemplateID=72 AND FTagIndex=10001
--
模拟“报价单单据体包含物料分类是【20013 主推商品】”写出SQL语句做测试,然后再更新ICClassMCTableInfo表
SELECT * FROM PORFQ WHERE
EXISTS (SELECT 1 FROM PORFQEntry pe
INNER JOIN t_ICItem itm ON pe.FItemID=itm.FItemID
WHERE PORFQ.FInterID=pe.FInterID AND itm.FTypeID=20013)


--执行SQL语句修改分支条件
--这样修改后,到BOS设计器修改分支条件可能没用,以后该分支条件都需要自己用SQL处理(比如需要增加部门等条件)
--以下SQL语句仅仅处理包含“主推商品”商品的物料就走该分支,其他条件您自己处理
UPDATE ICClassMCTableInfo set FCirculateCondition=' EXISTS (SELECT 1 FROM PORFQEntry pe
INNER JOIN t_ICItem itm ON pe.FItemID=itm.FItemID
WHERE PORFQ.FInterID=pe.FInterID AND itm.FTypeID=20013) '
WHERE FTemplateID=72 AND FTagIndex=10001
GO

--清缓存
UPDATE ICClassType SET FID=FID WHERE FID=1012010
GO