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

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

if (object_id('bobang_tgr_check_update', 'TR') is not null)
drop trigger bobang_tgr_check_update
go
create trigger cl_tgr_check_update
on bobang_bos_check
after update
as
declare @FID int
declare @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 --源单ID
declare @FEntryID_SRC bigint --源单FEntryID select @FID=FID,@FMultiCheckStatus=FMultiCheckStatus
from 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 int
declare @isRuKu int
if 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

七、K3 WISE 开发插件《Update字段级更新触发器 - BOS单审核后反写源单》的更多相关文章

  1. 四、K3 WISE 开发插件《工业单据老单插件开发新手指导》

    开发环境:K/3 Wise 13.0.K/3 Bos开发平台.Visual Basic 6.0 =============================================== 目录 一 ...

  2. K3 WISE 开发插件《K3 WISE常用数据表整理》

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------ FStatu ...

  3. 一、K3 WISE 开发插件《K3 WISE常用数据表整理》

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------FStatus ...

  4. 六、K3 WISE 开发插件《直接SQL报表开发新手指导 - BOM成本报表》

    ======================== 目录: 1.直接SQL报表 ======================== 1.直接SQL报表 以BOM成本报表为例,在销售模块部署,需要购买[金蝶 ...

  5. 十、K3 WISE 开发插件《SQL Profiler跟踪单据操作时产生的SQL语句》

    =================================== 目录: 1.查询帐套的数据库DBID 2.配置需要跟踪数据库的DBID 3.配置跟踪参数 4.跟踪进行 5.分析跟踪语句 === ...

  6. 三、K3 WISE 开发插件《K3 WISE开发手册》

    1.VB插件工程的命名.命名空间和生成的DLL命名要一致,否则导致注册不成功! 2.主控台的查询分析工具,添加sql直接报表,代码用到临时表,提示“在对应所需名称或序数的集合中未找到项目” 解决:在代 ...

  7. 二、K3 WISE 开发插件《 工业单据老单客户端插件事件、属性、方法》

    ===================== 目录: 1.插件事件说明如下 2.插件属性说明如下 3.插件方法说明如下 ===================== 1.插件事件说明如下:  序号 事   ...

  8. 十二、K3 WISE 开发插件《工业单据老单与自己添加的窗体 - 互相传值传参》

    ===================================== 目录: 1.演示效果--[销售订单]传值给[自定义窗体] 2.演示效果--[自定义窗体]传值给[销售订单] 3.附源码 4. ...

  9. 十一、K3 WISE 开发插件《VB插件开发如何代码调试 - 步骤讲解》

    =================================== 目录: 1.配置代码调试启动程序kdmain.exe 2.设置断点 3.触发调试 4.变量跟踪 ================ ...

随机推荐

  1. 多媒体开发之h264中的sps---sps信息提取之帧率

    ------------------------------author:pkf -----------------------------------------time:2015-8-20 --- ...

  2. (转)Ubuntu12.04上NFS Server安装使用过程

    原文链接:Ubuntu12.04上NFS Server安装使用过程 实现步骤: 1.服务器端:sudo apt-get install portmap2.服务器端:sudo apt-get insta ...

  3. 使用sphinx创建和查看文档

    1. 安装pip $ sudo apt-get install python-pip 2. 安装全文本浏览器lynx $ sudo apt-get install lynx 3. 使用pip安装sph ...

  4. zabbix 配置SNMP监控

    什么是SNMP? 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(database schema)和一组 ...

  5. [lua, mysql] 将多条记录数据组合成一条sql插入语句(for mysql)

    -- 演示将多条记录数据组合成一条sql插入语句(for mysql) function getTpl0(tname) -- 获取表各个字段 local t = { tpl_pack = {" ...

  6. sublime text3支持Vue语法高亮显示

    1.下载文件链接: 或https://github.com/vuejs/vue-syntax-highlight 解开压缩包vue-syntax-highlight-master,其内所有文件备用. ...

  7. Yii2 中cookie的用法(2)

    设置Cookie PHP setcookie("name", "Larry", time()+3600); Yii2 $cookies = Yii::$app- ...

  8. Java泛型概述

    泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除. 泛型基础 泛型类 我们首先定义 ...

  9. 使用 ML Pipeline 构建机器学习工作流

    http://www.ibm.com/developerworks/cn/opensource/os-cn-spark-practice5/

  10. 简单理解AOP(面向切面编程)

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP与OOP是面向不同领域的两种设计思想. ...