订单头与订单行金额汇总

  订单头有非数据库项 总金额(汇总行金额)

  订单行有非数据库项 金额,是由行块的数据库项 数量与单价的乘积得到

  头块:order_headers,总金额项:amount,行块:order_lines,金额项:amount

刚开始我准备在quantity和unit_price的when-validate-item中加入如下代码

  if :order_lines.unit_price is not null and :order_lines.quantity is not null then
       :order_lines.amount:=:order_lines.unit_price*:order_lines.quantity;
       :order_headers.amount:=:order_headers.amount+:order_lines.amount;
      end if;

当数量和单价不为空时,就计算出这一行的金额,再将原来的头总金额加上当前行金额。

但是经过测试发现很大问题,在第一次输入数量和单价之后,如果要对它们进行改动,总金额会一直增加。

  参考资料后找到app_calculate.running_total方法来实现需求,这是oracle自带的汇总计算方法。

首先在头块中添加AMOUNT_RTOT_DB项(命名规则为汇总项_RTOT_DB,类型为显示项,数据类型number(38)),

行块中再添加AMOUNT_RTOT_DB,AMOUNT_RTOT_OLD都为显示项,char(61),这三项都是必须的。然后将代码改为

  if :order_lines.unit_price is not null and :order_lines.quantity is not null then
       :order_lines.amount:=:order_lines.unit_price*:order_lines.quantity;
       app_calculate.running_total(‘WHEN-VALIDATE-ITEM‘,‘ORDER_LINES.AMOUNT‘,‘ORDER_HEADERS.AMOUNT‘);
      end if;

即可。

  在查询时,由于两项汇总金额都是非数据项,所已需要在头行块的post-query触发器中进行计算,行块只需求当前行的金额

  :order_lines.amount:=:order_lines.quantity*:order_lines.unit_price;

头块需要查询数据库

  declare 
     cursor cur_line is
     select * from TRN_ORDER_LINES_11205
     where header_id=:order_headers.header_id;
     amount number(10,2):=0;
    begin
     for line_rec in cur_line loop
           amount:=amount+line_rec.QUANTITY*line_rec.UNIT_PRICE ;
       end loop;
     :order_headers.amount:=amount;
   end;

      

时间: 2024-09-28 21:39:56

订单头与订单行金额汇总的相关文章

订单捕获-销售订单自定义

订单捕获-销售订单自定义 你可以自定义销售订单窗口外观来满足需求.所有订单和行块(包含查找窗口)都是作为文件夹块来设计的.你可以隐藏.显示和更改你文件夹的外观. 允许的自定义 您可以从这些可能的自定义选择. 隐藏一个项目(文本项目,复选框,弹出列表,选项组) 注意:如果你想要在销售订单头区域窗口(单个行文件夹块)显示一个当前隐藏的字段,你应该先隐藏一个当前显示的字段.在单个行文件夹块中,显示字段操作在当前光标所在的字段下放置一个新字段. 注意:在多个行文件夹块中,显示字段操作在当前光标所在的字段

实现主从块金额汇总

1.FORM使用app_calculate.running_total汇总行金额,行上有编码重复验证. 情况一:当录入多个编码重复的行并保存时,报错,清除一个重复行再保存(头行金额一致),报错"编码重复",再清除重复行,头上金额不减少. 情况二:失效清除按钮,当录入多个编码重复的行并保存时,报错,删除一个重复行再保存(头行金额一致),报错"编码重复",再删除重复行(头行金额一致),保存,头金额重新又加上了已删除行金额,报错"编码重复" 汇总头行金

ecshop 导出订单 导出excel订单

ecshop 导出订单 导出excel订单 很多时候,我们每月或者每年都需要做一个订单销售总结,这时要从ecshop订单管理里面拿订单详情,所以需要给ecshop订单管理加一个“导出订单”功能! 思路分析:ecshop后台的“订单管理”里面“打印订单”就是我们要的内容,只需要把内容用PHPExcel导出到一个excel表里面即可. 最终效果:所有信息版,为了能看全所有信息,我把列缩小了 1,admin\templates\order_list.htm 加入“导出订单”按钮 <input name

9. PHP接入微信支付订单、退款订单、转款订单的查询

微信并未提供一个统一的查询接口.对应每种查询均需要不同的api.为了便于大家在项目中使用,忽略细节.对以上三种进行了封装.通过工厂的方式降低调用成本. $wxconfig = [ 'app_id' => 'wxxxx', // 公众账号ID 'mch_id' => 'xxxx',// 商户id 'md5_key' => 'xxxxxx',// md5 秘钥 'notify_url' => 'http://test.helei.com/pay-notify.html', 'time_

mvc购物车项目--提交订单并创建订单

SubmitOrderServlet.java public class SubmitOrderServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setC

插入订单并且输出订单号的sql存储过程

--插入订单-- create proc InsertOrders ( @OrderNumber varchar(300), @OrderState varchar(30), @OrderType varchar(30), @OrderTime DateTime, @OrderFirm varchar(300), @OrderMoney decimal(8,2), @SendWayMoney decimal(8,2), @RegisterId int, @CoalitionOrdersId in

WMS仓库管理系统---(13)订单管理--创建订单

订单模块可谓是WMS系统中最重要的一个模块,所有的业务开展都是围绕订单来运作的.订单模块也是系统中业务繁杂的一个模块,包括订单创建,订单审核,订单分配,订单拣货,订单打包,订单出库配送等各个环节,这一节我们看下订单怎么创建. 1.订单创建 订单创建的时候要填写收货人,手机号,固定电话,邮箱,性别,收货地址等信息,同时要添加购买商品.创建订单时候的时候,同时创建客户信息, 如下图 2.商品添加 根据名称,编码选择客户的商品,进行下单处理,如下图 3.表设计 订单这块设计的表有订单表,订单明细表,订

佩特来项目经验小集合(3)___从多表统计金额汇总到一张表

来这个项目主要是佩特来公司各部门及各代理商使用的系统,这个系统其中的一下功能就是统计代理商费用.费用的统计放在了费用池(传统方式统计代理商费用就叫费用池)数据表中,代理商可以根据费用池的中的金额购买东西,费用池中的钱来自于代理商每次填写的维修鉴定单中. 下面看一下这部分的数据表结构: 下面的存储过程是汇总材料费及其他费用表的费用并汇总到费用池信息表的存储过程,这段代码有点长,加入了各种判断: -- ============================================= --

mysql 获取刚插入行id汇总

mysql 获取刚插入行id汇总 我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的.但在多线程情况下,就不行了. 下面介绍三种方法 (1) getGeneratedKeys()方法: 程序片断: Connection conn = ;        Serializable ret = null;        PreparedStatement state = .;