码迷,mamicode.com
首页 > 其他好文 > 详细

1-1SBO学习心得(存储过程应用)

时间:2014-07-07 20:17:52      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   数据   os   

SBO_SP_TransactionNotification这个存储过程主要应用于页面操作(数据库操作)的放行和阻止。当返回0时放行(commit),当返回1时阻止(回滚)。

--    ADD    YOUR    CODE    HERE
if @object_type=22 and @transaction_type in (A,U)    
    /*开始-判定是否超过价格清单中的价格*/
    
    BEGIN
    declare @visorder nvarchar
        set @visorder=(select top 1 T1.visorder+1 from --查找行号
                        OPOR T0  INNER JOIN POR1 T1 ON T0.DocEntry = T1.DocEntry --订单主表和从表关联 
                        where (T1.DocEntry=@list_of_cols_val_tab_del) --条件1,从表主键等于传进来的主键值
                        AND ISNULL(T0.U_owtm,-1)<>1 --条件2,非审批提交
                        and (T1.INMPRICE+T1.LineVat/T1.Quantity --条件3,税后价格
                        >ISNULL((select T2.Price from ITM1 T2 where T2.PriceList=(SELECT TOP 1 T3.ListNum FROM dbo.OCRD T3 WHERE T3.CardCode=T0.CardCode) and T1.ItemCode=T2.ItemCode),0))--价格清单中的价格    
                    
                    )
        if @visorder is not null --如果不为空证明存在这种数据,返回行号
        begin
            select @error=1
            select @error_message=N+@visorder+N行物料的价格超过允许的范围
        end
    end
    /*结束-判断是否超过价格清单中的价格*/

我们在add your code here部分加入此段代码可以实现如下功能:如果采购订单中任何一行物料的价格高于为供应商预设的价格,则阻止并报错。

其中 if @object_type=22and @transaction_type in (A‘,U)
用作判断(1)操作来自于哪个数据对象,22代表采购订单;(2)是何种操作,A和U代码新增或更新。也就是说,当对采购订单进行更新或新增操作时会触发下面的代码。
SQL逻辑:将采购订单主表和从表关联,取出从表中的行号。当行号不为空证明超价格限制的行,报错;为空证明无此类行,通过。
条件1:找到被操作的采购订单记录;
     条件2:非审批状态;
     条件3:物料行的税后价格大于供应商预设的价格。
bubuko.com,布布扣
错误信息:bubuko.com,布布扣
向S001供应商购买A0001物料,预设价格未10RMB,订单上填写的税后价格未11.7元,阻止。

1-1SBO学习心得(存储过程应用),布布扣,bubuko.com

1-1SBO学习心得(存储过程应用)

标签:des   style   blog   color   数据   os   

原文地址:http://www.cnblogs.com/dfkjerp/p/3813254.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!