FORM主从块头行金额汇总
FORM主从块头行金额汇总
步骤:
1. 在主块CUX_OM_HEADER创建零时汇总项目,:<合计项目名称>_RTOT_DB,NUMBER(38)/DISPLAY_ITEM, TOTAL_AMOUNT_RTOT_DB,非数据库项,不显示 2. 在从块创建2个零时统计项目,一个<被统计项>_RTOT_OLD,另一个<被统计项>_RTOT_DB,类型 CHAR(61) DISPLAY_ITEM,LINE_AMOUNT_RTOT_DB、LINE_AMOUNT_RTOT_OLD,非数据库项,不显示 3. 计算汇总调用的方法: --计算汇总金额 PROCEDURE running_total(p_event VARCHAR2) IS BEGIN app_calculate.running_total(p_event, 'CUX_OM_LINE.LINE_AMOUNT', 'CUX_OM_HEADER.TOTAL_AMOUNT'); END running_total; 4. 数量或者单价更改,WHEN-VALIDATE-ITEM CUX_OM_LINE_PKG.event('AMOUNT_INIT'); CUX_OM_LINE_PKG.running_total('WHEN-VALIDATE-ITEM'); 包计算行金额 ELSIF p_event = 'AMOUNT_INIT' THEN :CUX_OM_LINE.LINE_AMOUNT := :CUX_OM_LINE.ORDER_QUANTITY * :CUX_OM_LINE.UNIT_SELLING_PRICE; 5. 主块POST_QUERY cux_om_header_pkg.event('POST-QUERY'); SELECT nvl(SUM(cola.order_quantity * cola.unit_selling_price), 0) INTO :cux_om_header.total_amount FROM cux_order_lines_all cola WHERE cola.cux_order_header_id = :cux_om_header.cux_order_header_id; :cux_om_header.total_amount_rtot_db := :cux_om_header.total_amount; 6. 从快触发器 KEY-DELREC CUX_OM_LINE_PKG.running_total('KEY-DELREC'); delete_record; CUX_OM_LINE_PKG.running_total('UNDELETE'); KEY-DUPREC CUX_OM_LINE_PKG.running_total('KEY-DUPREC'); duplicate_record; KEY-CLRREC CUX_OM_LINE_PKG.running_total('KEY-CLRREC'); app_folder.event('KEY-CLRREC'); WHEN-CLEAR-BLOCK CUX_OM_LINE_PKG.running_total('WHEN-CLEAR-BLOCK'); POST-QUERY app_folder.event('POST-QUERY'); app_globe.event('POSET-QUERY'); CUX_OM_LINE_PKG.event('AMOUNT_INIT'); CUX_OM_LINE_PKG.running_total('POST-QUERY'); if :system.trigger_record =1 then SELECT nvl(SUM(cola.order_quantity * cola.unit_selling_price),0) INTO :CUX_OM_HEADER.total_amount FROM cux_order_lines_all cola WHERE cola.cux_order_header_id = :CUX_OM_HEADER.cux_order_header_id; :CUX_OM_HEADER.TOTAL_AMOUNT_RTOT_DB:=:CUX_OM_HEADER.total_amount; end if;