博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
七、K3 WISE 开发插件《Update字段级更新触发器 - BOS单审核后反写源单》
阅读量:4591 次
发布时间:2019-06-09

本文共 4397 字,大约阅读时间需要 14 分钟。

审核成功触发,是一个比较典型的场景。需要用到update触发器,跟踪到审核状态的变化。

引用的源码《采购检验单审核后反写收料通知单》,其中采购检验单是BOS自定义单据。

if (object_id('bobang_tgr_check_update', 'TR') is not null)    drop trigger bobang_tgr_check_updategocreate trigger cl_tgr_check_updateon bobang_bos_checkafter updateas declare @FID intdeclare @FMultiCheckStatus  varchar(100)declare @FAuxQtyPass float --合格数量declare @FQtyPass float --基本单位合格数量declare @FAuxNotPassQty float --不合格数量declare @FNotPassQty float --基本单位不合格数量declare @FAuxConPassQty float --让步接收数量declare @FConPassQty float --基本单位让步接收数量declare @FID_Src bigint --源单IDdeclare @FEntryID_SRC bigint --源单FEntryIDselect @FID=FID,@FMultiCheckStatus=FMultiCheckStatusfrom inserted--审核时if update(FMultiCheckStatus) and @FMultiCheckStatus=16 begin     declare mycursor cursor for     select FAuxPassQty,FPassQty,FAuxUnPassQty,FUnPassQty,FAuxConcessQty,FConcessQty,FID_Src,FEntryID_Src     from bobang_bos_checkentry where FID=@FID    open mycursor      fetch next from mycursor     into @FAuxQtyPass,@FQtyPass,@FAuxNotPassQty,@FNotPassQty,@FAuxConPassQty,@FConPassQty,@FID_Src,@FEntryID_SRC    while (@@fetch_status=0)     begin         update t1         set t1.FAuxQtyPass=t1.FAuxQtyPass+isnull(@FAuxQtyPass,0),        t1.FQtyPass=t1.FQtyPass+isnull(@FQtyPass,0),        t1.FAuxNotPassQty=t1.FAuxNotPassQty+isnull(@FAuxNotPassQty,0),        t1.FNotPassQty=t1.FNotPassQty+isnull(@FNotPassQty,0),        t1.FAuxConPassQty=t1.FAuxConPassQty+isnull(@FAuxConPassQty,0),        t1.FConPassQty=t1.FConPassQty+isnull(@FConPassQty,0)        from POInStockEntry t1         left join POInStock t2 on t1.FInterID=t2.FInterID        where t1.FInterID=@FID_Src and t1.FEntryID=@FEntryID_SRC        and t2.FTranType=72    fetch next from mycursor     into @FAuxQtyPass,@FQtyPass,@FAuxNotPassQty,@FNotPassQty,@FAuxConPassQty,@FConPassQty,@FID_Src,@FEntryID_SRC    end     close mycursor     DEALLOCATE mycursor end --驳回前检查declare @isTuiLiao intdeclare @isRuKu intif update(FMultiCheckStatus) and @FMultiCheckStatus=4 begin     declare mycursor cursor for     select FAuxPassQty,FPassQty,FAuxUnPassQty,FUnPassQty,FAuxConcessQty,FConcessQty,FID_Src,FEntryID_Src     from bobang_bos_checkentry where FID=@FID    open mycursor      fetch next from mycursor     into @FAuxQtyPass,@FQtyPass,@FAuxNotPassQty,@FNotPassQty,@FAuxConPassQty,@FConPassQty,@FID_Src,@FEntryID_SRC    while (@@fetch_status=0)     begin         select @isTuiLiao=COUNT(*) from POInStockEntry         where FSourceTrantype=72 and  FSourceInterId=@FID_Src and FSourceEntryID=@FEntryID_SRC        if @isTuiLiao>0        begin            raiserror ('已下推退料通知单,不能反审核!',16,1)            rollback tran            end                select @isRuKu=COUNT(*) from ICStockBillEntry         where FSourceTrantype=72 and  FSourceInterId=@FID_Src and FSourceEntryID=@FEntryID_SRC        if @isTuiLiao>0        begin            raiserror ('已下推外购入库单,不能反审核!',16,1)            rollback tran            end            fetch next from mycursor     into @FAuxQtyPass,@FQtyPass,@FAuxNotPassQty,@FNotPassQty,@FAuxConPassQty,@FConPassQty,@FID_Src,@FEntryID_SRC    end     close mycursor     DEALLOCATE mycursor end--驳回初始时if update(FMultiCheckStatus) and @FMultiCheckStatus=2 begin     declare mycursor cursor for     select FAuxPassQty,FPassQty,FAuxUnPassQty,FUnPassQty,FAuxConcessQty,FConcessQty,FID_Src,FEntryID_Src     from bobang_bos_checkentry where FID=@FID    open mycursor      fetch next from mycursor     into @FAuxQtyPass,@FQtyPass,@FAuxNotPassQty,@FNotPassQty,@FAuxConPassQty,@FConPassQty,@FID_Src,@FEntryID_SRC    while (@@fetch_status=0)     begin         update t1         set t1.FAuxQtyPass=t1.FAuxQtyPass-isnull(@FAuxQtyPass,0),        t1.FQtyPass=t1.FQtyPass-isnull(@FQtyPass,0),        t1.FAuxNotPassQty=t1.FAuxNotPassQty-isnull(@FAuxNotPassQty,0),        t1.FNotPassQty=t1.FNotPassQty-isnull(@FNotPassQty,0),        t1.FAuxConPassQty=t1.FAuxConPassQty-isnull(@FAuxConPassQty,0),        t1.FConPassQty=t1.FConPassQty-isnull(@FConPassQty,0)        from POInStockEntry t1         left join POInStock t2 on t1.FInterID=t2.FInterID        where t1.FInterID=@FID_Src and t1.FEntryID=@FEntryID_SRC        and t2.FTranType=72    fetch next from mycursor     into @FAuxQtyPass,@FQtyPass,@FAuxNotPassQty,@FNotPassQty,@FAuxConPassQty,@FConPassQty,@FID_Src,@FEntryID_SRC    end     close mycursor     DEALLOCATE mycursor end

 

转载于:https://www.cnblogs.com/star-studio/p/7483908.html

你可能感兴趣的文章
linux上很方便的上传下载文件工具rz和sz使用介绍
查看>>
React之特点及常见用法
查看>>
【WEB前端经验之谈】时间一年半,或沉淀、或从零开始。
查看>>
优云软件助阵GOPS·2017全球运维大会北京站
查看>>
java23中设计模式只责任链模式
查看>>
linux 装mysql的方法和步骤
查看>>
poj3667(线段树区间合并&区间查询)
查看>>
51nod1241(连续上升子序列)
查看>>
SqlSerch 查找不到数据
查看>>
集合相关概念
查看>>
Memcache 统计分析!
查看>>
(Python第四天)字符串
查看>>
个人介绍
查看>>
使用python动态特性时,让pycharm自动补全
查看>>
NSDate
查看>>
堆排序
查看>>
java架构《Socket网络编程基础篇》
查看>>
HASH、HASH函数、HASH算法的通俗理解
查看>>
easyui学习日记20141213
查看>>
getopt()函数
查看>>