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;
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。