工作流由数据流组成

准备写一篇工作流的文章,标题就是“数据流代替工作流解决方案”。
如果大家有这方面的格式模板,请给我一个,不胜感激。

在此简单的说下原理:

例如,市场人员因为查看库存没有要的货物,于是填了一张采购申请单,要求某时要货给客户,这时,这张单据状态是未审核,所以,还不能进行采购计划(计划条件一:审核人不为空)。相关部门自动接收采购申请单数据(条件:审核人为空),于是根据实际情况审核。

  采购计划人员在制作计划筛选的时候,发现有已审核的采购申请,于是可以实施下一步的工作流程,在制单过程中,数据源为已审核的采购申请数据。

  采购计划后,也是根据情况审核...下一步工作...,计划单据审核成功后,采购申请人员可以查看自己申请的货物及计划状态,如果已采购,还可以查看采购到货后分配给自己的数量。

  总之,信息管理理的就是数据,一切皆数据,一切皆数据流。

代码:

其实有了这个平台,代码就不用写了,配置就搞定,要写就写SQL,业务逻辑和工作流就体现在这里。


打开配置,就发现申请单的数据显示视图如下:

单据列配置:
No|产品库ID|分类|质量等级|国标代码|片芯型号|规格|型号|需方代码|需方型号|执行标准|品牌型号|品牌|尺寸|组别|电压|容量|端头|引脚|其它特性|最小包装|包装形式|单位|不含税单价|税率|含税单价|数量|不含税金额|含税金额|要求到货日|客户编码|客户名称|客户订单号|紧急程度|扩展一|扩展二|扩展三|扩展四|已计划|待计划|计划状态|小注

主表视图:
Select fcOperator,Convert(nchar(10), fdMakeDate,120) ,fcApplicationNo,fcMemo
From bps_Application
Where fcApplicationNo='@ReceiptNo'

明细表视图:
Select 产品库ID,分类,质量等级,国标代码,国标型号,规格,型号,需方代码,需方型号,执行标准,品牌型号,品牌,
      尺寸,组别,电压,容量,端头,引脚,其它特性,最小包装,包装形式,单位,
      fnPrice 不含税单价,fnTaxRate 税率,fnTaxPrice 含税单价,fnQuantity 数量,fnAmount 不含税金额,fnTaxAmount 含税金额,
      Convert(char(10),fdIntoGoods,120) As 要求到货日,fcCustomerCode 客户编码,I_Customer.fcName 客户名称,
      fcCustomerOrderNo 客户订单号,fcExigentFlag 紧急程度,fcExpandA 扩展1,fcExpandB 扩展2,fcExpandC 扩展3,fcExpandD 扩展4,

      dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID)  As 已计划,
      fnQuantity - dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID)  As 待计划,
      dbo.GetPlanStateForApplication(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID)  As 计划状态,

      fcRemark 小注
From bps_ApplicationDetail
    Inner Join uv_ProductLibSelect
        On bps_ApplicationDetail.fgProductLibID=uv_ProductLibSelect.产品库ID
    --可能不指定客户,因此为左连接
    Left Join I_Customer
        On bps_ApplicationDetail.fcCustomerCode=I_Customer.fcCode
Where fcApplicationNo='@ReceiptNo'
Order By DetailSn

这样,一张申请单搞定
工作流的下一步主要工作就是采购计划,采购计划数据流来源依据于很多,其中之一就是申请。


单据列配置:
No|产品库ID|分类|质量等级|国标代码|国标型号|规格|型号|需方代码|需方型号|执行标准|品牌型号|品牌|尺寸|组别|电压|容量|端头|引脚|其它特性|最小包装|包装形式|单位|不含税单价|税率|含税单价|计划数量|不含税金额|含税金额|到货日期|申请单号|申请人|申请数量|共计划|计划状态|已采购|小注

主表视图:
Select fcOperator As 制单人,Convert(nchar(10), fdMakeDate,120) As 制单日期,fcPlanNo As 单据编号,fcMemo As 备注
 From bps_Plan
Where fcPlanNo='@ReceiptNo'

明细表视图:

Select 产品库ID,分类,质量等级,国标代码,国标型号,规格,型号,需方代码,需方型号,执行标准,品牌型号,品牌,
      尺寸,组别,电压,容量,端头,引脚,其它特性,最小包装,包装形式,单位,
      bps_PlanDetail.fnPrice 不含税单价,bps_PlanDetail.fnTaxRate 税率,bps_PlanDetail.fnTaxPrice 含税单价,
      bps_PlanDetail.fnQuantity 数量,bps_PlanDetail.fnAmount 不含税金额,bps_PlanDetail.fnTaxAmount 含税金额,
      Convert(nchar(10),bps_PlanDetail.fdIntoGoods,120) 计划到货日期,bps_PlanDetail.fcApplicationNo 申请单号,bps_Application.fcOperator 申请人,
      dbo.GetApplicationQuantity(bps_PlanDetail.fcApplicationNo,bps_PlanDetail.fgProductLibID) As 申请数量,
      dbo.GetApplicationQuantityOfPlan(bps_PlanDetail.fcApplicationNo,bps_PlanDetail.fgProductLibID) As 共计划,fcPlanState As 计划状态,
      dbo.GetPlanQuantityOfPurchase(bps_PlanDetail.fcPlanNo,bps_PlanDetail.fgProductLibID) As 已采购,
      bps_PlanDetail.fcRemark 小注
From bps_PlanDetail
    Inner Join uv_ProductLibSelect
        On bps_PlanDetail.fgProductLibID=uv_ProductLibSelect.产品库ID

    --可能不走申请而直接选产品库,因此为左连接
    Left Join bps_Application
        On bps_PlanDetail.fcApplicationNo=bps_Application.fcApplicationNo
       
Where fcPlanNo='@ReceiptNo'
Order By bps_PlanDetail.DetailSn

其实配置的列“国标型号”数据源参照选择配置的是一个存储过程名称“up_bps_PlanSelectApplication”

up_bps_PlanSelectApplication实现如下:

--采购计划中选择申请的产品并且审核有效且未关闭,按产品排序,同一产品按到货日期排,先要到货的先显示
CREATE PROCEDURE up_bps_PlanSelectApplication  AS

 Select 产品库ID,分类,质量等级,国标代码,国标型号,规格,型号,需方代码,需方型号,执行标准,品牌型号,品牌,
       尺寸,组别,电压,容量,端头,引脚,其它特性,最小包装,包装形式,单位,
       fnPrice 不含税单价,fnTaxRate 税率,fnTaxPrice 含税单价,fnQuantity 数量,fnAmount 不含税金额,fnTaxAmount 含税金额,
       Convert(char(10),fdIntoGoods,120) As 要求到货日,bps_Application.fcApplicationNo 申请单号,bps_Application.fcOperator 申请人,
       dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID)  As 已计划,
       fnQuantity - dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID)  As 待计划,
       fcRemark 小注
       --GetApplicationQuantityOfPlan(申请单号,产品ID),用于返回计划单中响应的申请单中指定产品数量
 From bps_ApplicationDetail
     Inner Join bps_Application
         On bps_ApplicationDetail.fcApplicationNo=bps_Application.fcApplicationNo
     Inner Join uv_ProductLibSelect
         On bps_ApplicationDetail.fgProductLibID=uv_ProductLibSelect.产品库ID
     Left Join I_Customer
         On bps_ApplicationDetail.fcCustomerCode=I_Customer.fcCode
 --Where fcApplicationNo='@ReceiptNo'
 Where Isnull(fcChecker,'') <> ''   --首先是审核人不为空,即要审核了的
            And Isnull(fbCancel,0) = 0  --其次是本单据没有被取消
            And Isnull(fbDefault,1)= 1  --再次,为了扩展加的条件
     --以上是固定条件,下面是其它条件
            --计划中响应申请的数量小于申请人申请的数量时显示 
            And dbo.GetApplicationQuantityOfPlan(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID) < bps_ApplicationDetail.fnQuantity
            --只要计划终止的,不再显示 
            And dbo.GetPlanStateForApplication(bps_ApplicationDetail.fcApplicationNo,bps_ApplicationDetail.fgProductLibID)<>'关闭'

 Order By 产品库ID,fdIntoGoods  --按产品排序,同一产品按到货日期排,先要到货的先显示
GO
由存储过程up_bps_PlanSelectApplication可知,逻辑包含在此,并实现工作流其实是采购计划数据流(来流)。

数据库表
S_ReceiptSetup 实现每个业务单据如“采购申请”、“采购计划”的界面配置及一些简单的业务逻辑配置,如标题、子标题、ISO文件号、表顶、表头、表脚、表底、多层表头、明细表列、列宽、有效性、完整性验证、格式、动态计算、合计等。

S_ReceiptSetup还一个作用就是配置审核程序。


如果单据的主表有fcChecker这个字段,你可以不用在S_ReceiptSetup配置审核程序,而是直接在表S_CheckReceiptConfig中填写,如:

采购计划审核(fcCheckName字段)  采购计划(fcReceipName字段)

当然,你也可以自己写审核的逻辑:
如“撤销采购计划审核”的逻辑为:


(fcFilterString字段)
SELECT fcPlanNo + '|' + CONVERT(nchar(10), fdMakeDate, 120) + '|' + fcOperator AS t From bps_Plan Where IsNull(fcChecker,'')<>'' And fcPlanNo Not In (Select fcPlanNo From bps_PurchaseDetail Where bps_PurchaseDetail.fcPlanNo = bps_Plan.fcPlanNo)

(fcUpdateString字段)

Update bps_Plan Set fcChecker='' Where fcPlanNo='@ReceiptNo'

采购申请的审核类同上面的“采购计划审核”。

所以,申请单据填写后(主表明细表有数据),经过授权主管审核(fcChecker不为空了),采购计划的数据源就有了。

工作流:申请--审核申请--计划,而这,就是用数据流做的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值