3-0SBO学习心得(格式化搜索和存储过程的综合应用)

功能:

(1)采购订单中每行的物料税后折后价格均不能高于为供应商预设的价格,否则报错。

  实现:存储过程

(2)例外情况,如货源紧张可能出现超价格采购,此种情况可通过审批来跳过(1)的控制。(让存储过程失效)

  实现:加入一个自定义字段(1:送审;-1不送审)。存储过程发现此字段取值为1表明为例外采购,即将送领导审批;取值为-1则表示不是例外采购,控制启动。

(3)判断自定义字段的值,如果1就触发领导审批,-1不触发领导审批。

  实现:格式化搜索可以抓到此字段的值,然后在查询向导中写逻辑。如果1返回true,如果-1返回false。

     新建审批模板,将审批模板的触发条件与上面的 逻辑关联。

实现以下功能:

  (1)自定义字段默认选择不送审,当采购订单提交时会判断价格,超价格阻止,不超放行。

  (2)自定义字段选择送审时,不判断采购订单的价格,直接触发审批逻辑。

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
    /*结束-判断是否超过价格清单中的价格*/

2、添加自定义字段:

在营销单据-标题中,添加自定义字段:OWTM-审批模版,字母数字(10),定义有效值:-1表示无,1表示低于销售价格,为必填值,默认值为-1。

3、在查询向导中加入以下逻辑:

declare @owtm varchar

@owtm=$[OPOR.U_owtm.0]

set ‘true‘ where @owtm=1

4、设置审批模板,将3中的逻辑引用为触发条件。

3-0SBO学习心得(格式化搜索和存储过程的综合应用)

时间: 2024-09-29 16:33:36

3-0SBO学习心得(格式化搜索和存储过程的综合应用)的相关文章

2-0SBO学习心得(格式化搜索)

SBO的大部分业务单据都是主.从表的关系结构,类似于单头和单身的关系. 格式化搜索的原理就是抓取到当前激活页面(单据)里显示的任意值. 抓取方式: 1.针对表头:$[表名.字段名]或者$[$Item.0]2.针对表身:$[$Item.Column.0/number/currency/date],最常用的还是0和number这个2个参数. 例:在采购订单中,取表身中的物料编号,$[$38.1.0/number]. 38表示表身,14表示第14列,0表示取这个格子里的值. 抓到值以后的用法: 这个值

我的MYSQL学习心得(十) 自定义存储过程和函数

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习

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

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 T

1-0SBO学习心得(存储过程理论)

一.原理:系统中每张单据在进行新增(A).删除(D).修改(U).关闭(L).取消(C)时都会触发数据库相应业务数据的更新,更新数据但不立刻commit,更新完数据后会先触发一个名为SBO_SP_TransactionNotification的存储过程,存储过程返回名为@error的参数,取1或者0.当返回0时表示正常,系统继续commit操作:当返回1时表示不正常,数据库回滚,操作无效. 该存储过程代码如下: USE [DFKJ_TEST] GO /****** Object: StoredP

我的MYSQL学习心得(十)

原文:我的MYSQL学习心得(十) 我的MYSQL学习心得(十) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(十二) 这一篇<我的MYSQL学习心得(十)>将会讲解MYSQL的存储过程和函数 MYSQL中创建存储过程

我的MYSQL学习心得(十七) 复制

原文:我的MYSQL学习心得(十七) 复制 我的MYSQL学习心得(十七) 复制 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的

计算机学习心得

计算机学习心得体会 心得一:计算机学习心得体会 21世纪是一个信息经济时代,为适应时代的发展,作为一名当代大学生,所受的社会压力将比任何时候的大学生都要来得沉重,因此在校期间,我们必须尽可能的利用好学习时间,尽可能地学习更多的知识和能力,学会创新求变,以适应社会的需要. 毕竟,不管将来是要从事什么样的相关行业,都需要掌握较为全面的计算机知识,因为小到计算机的组装维修,大到服务器的维护与测试,知道的更多更全面,那么对于自己以后找工作以及参加工作帮助就越大.在知识经济时代,没有一个用人单位会傻到和知

我的MYSQL学习心得(十二)

原文:我的MYSQL学习心得(十二) 我的MYSQL学习心得(十二) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 我的MYSQL学习心得(六) 我的MYSQL学习心得(七) 我的MYSQL学习心得(八) 我的MYSQL学习心得(九) 我的MYSQL学习心得(十) 我的MYSQL学习心得(十一) 这一篇<我的MYSQL学习心得(二)>将会讲解MYSQL的触发器 触发器是一个特殊的存储过程,不

我的MYSQL学习心得(六)

我的MYSQL学习心得(六) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL学习心得(五) 这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MOD()对于带有小数部分的数值也起作用,他返回除法运算后的精确余数 SELECT MOD(31,8) 2.四舍五入函数TR