ITPub博客

首页 > Linux操作系统 > Linux操作系统 > EBS报表

EBS报表

原创 Linux操作系统 作者:csweiliang 时间:2009-06-29 11:01:44 0 删除 编辑

最近学习了EBS 开发报表输出的两种格式:

1.文本格式

CREATE OR REPLACE PROCEDURE giti_inv_fh_rpt(errbuf      OUT VARCHAR2,
                                            retcode     OUT VARCHAR2,
                                            l_date_from IN VARCHAR2,
                                            l_date_to   IN VARCHAR2 ) IS
  --创建游标 mycur
  --游标的开始

  CURSOR mycur IS
  ---需求名称:各工厂库存旬报
 
    SELECT rownum ro,
           hou.NAME organization_name,
           ms.segment2 order_type,
           msi.segment1 item_code,
           giti_item_pkg.get_item_class(msi.segment1) class1,
           SUM(mmt.transaction_quantity) quantity,
           mmt.subinventory_code sub_code,
           to_char(mmt.transaction_date, 'YYYY-MM-DD') transaction_date
   
      FROM inv.mtl_material_transactions mmt,
           inv.mtl_sales_orders          ms,
           inv.mtl_system_items_b        msi,
           hr.hr_all_organization_units  hou
     WHERE mmt.transaction_source_type_id = 2
       AND mmt.transaction_source_id = ms.sales_order_id
       AND msi.inventory_item_id = mmt.inventory_item_id
       AND msi.organization_id = 83
       AND (msi.segment1 LIKE '1%' OR msi.segment1 LIKE 'Y1%')
       AND mmt.organization_id IN ('82', '441', '442', '443', '444', '445', '635')
       AND mmt.transaction_date >= fnd_date.垃圾广告ical_to_date(l_date_from)--to_date(l_date_from, 'yyyy/mm/dd ')
       AND mmt.transaction_date < fnd_date.垃圾广告ical_to_date(l_date_to)+1 --to_date(l_date_to, 'yyyy/mm/dd') + 1
       AND hou.organization_id = mmt.organization_id
       AND mmt.transaction_quantity < 0
     GROUP BY rownum,
              hou.NAME,
              hou.organization_id,
              ms.segment2,
              msi.segment1,
              mmt.subinventory_code,
              to_char(mmt.transaction_date, 'YYYY-MM-DD')
    UNION ALL
    SELECT rownum,
           hou.NAME organization_name,
           ms.segment2 order_type,
           msi.segment1 item_code,
           giti_item_pkg.get_item_class(msi.segment1) ,
           SUM(mmt.transaction_quantity) quantity,
           mmt.subinventory_code,
           to_char(mmt.transaction_date, 'YYYY-MM-DD') transaction_date
   
      FROM inv.mtl_material_transactions mmt,
           inv.mtl_sales_orders          ms,
           inv.mtl_system_items_b        msi,
           hr.hr_all_organization_units  hou
     WHERE mmt.transaction_source_type_id = 12
       AND mmt.transaction_source_id = ms.sales_order_id
       AND msi.inventory_item_id = mmt.inventory_item_id
       AND msi.organization_id = 83
       AND (msi.segment1 LIKE '1%' OR msi.segment1 LIKE 'Y1%')
       AND mmt.organization_id IN ('82', '441', '442', '443', '444', '445', '635')
       AND mmt.transaction_date >= fnd_date.垃圾广告ical_to_date(l_date_from)   --to_date(l_date_from, 'yyyy/mm/dd ')
       AND mmt.transaction_date < fnd_date.垃圾广告ical_to_date(l_date_to)+1    --to_date(l_date_to, 'yyyy/mm/dd') + 1
       AND hou.organization_id = mmt.organization_id
       AND mmt.transaction_quantity < 0
     GROUP BY hou.NAME,
              rownum,
              hou.organization_id,
              ms.segment2,
              msi.segment1,
              mmt.subinventory_code,
              to_char(mmt.transaction_date, 'YYYY-MM-DD');
  --游标的结束

  l_print_line VARCHAR2(4000);
  --l_dem        VARCHAR2(10) := ',';
  l_k          VARCHAR2(30) := '           ';
 
BEGIN
  fnd_file.put_line(fnd_file.output, lpad('各工厂库存情况旬报表', 78));
                                
  l_print_line := '序号'||l_k||'组织名称' ||  l_k || '销售类型' ||  l_k || '品号' ||  l_k||'大类' ||l_k|| '销售数量' || l_k  || '子库名称/子库' || l_k || '交易日';
  fnd_file.put_line(fnd_file.output, l_print_line);

  FOR rec IN mycur
  LOOP
    l_print_line :=rec.ro||l_k|| rec.organization_name ||'  '|| rec.order_type ||'     '|| rec.item_code ||'         '||rec.class1 ||'            ' || rec.quantity || '           '|| rec.sub_code  ||'               '|| rec.transaction_date;
    fnd_file.put_line(fnd_file.output, l_print_line);
  END LOOP;
  fnd_file.put_line(fnd_file.output, lpad('***报表结束***', 80));

END giti_inv_fh_rpt;
/

2.html 格式

 

--------用html输出报表----------------

CREATE OR REPLACE PACKAGE giti_inv_xbb IS

  -- Author  : YUWEILIANG
  -- Created : 2009-4-28 7:57:25
  -- Purpose : 各工厂库存情况旬报表

  PROCEDURE giti_inv_fh_rpt(errbuf      OUT VARCHAR2,
                            retcode     OUT VARCHAR2,
                            l_date_from IN VARCHAR2,
                            l_date_to   IN VARCHAR2);

  PROCEDURE print_line(g_srs_flag     IN VARCHAR2,
                       p_line_type    IN VARCHAR2,
                       p_line_content IN VARCHAR2);

END giti_inv_xbb;
/
CREATE OR REPLACE PACKAGE BODY giti_inv_xbb IS

  PROCEDURE giti_inv_fh_rpt(errbuf      OUT VARCHAR2,
                            retcode     OUT VARCHAR2,
                            l_date_from IN VARCHAR2,
                            l_date_to   IN VARCHAR2) IS
 
    --创建游标 mycur
    --游标的开始
    --需求名称:各工厂库存旬报
    CURSOR mycur IS
   
      SELECT rownum ro,
             hou.NAME organization_name,
             ms.segment2 order_type,
             msi.segment1 item_code,
             SUM(mmt.transaction_quantity) quantity,
             mmt.subinventory_code sub_code,
             to_char(mmt.transaction_date, 'YYYY-MM-DD') transaction_date
     
        FROM inv.mtl_material_transactions mmt,
             inv.mtl_sales_orders          ms,
             inv.mtl_system_items_b        msi,
             hr.hr_all_organization_units  hou
       WHERE mmt.transaction_source_type_id = 2
         AND mmt.transaction_source_id = ms.sales_order_id
         AND msi.inventory_item_id = mmt.inventory_item_id
         AND msi.organization_id = 83
         AND (msi.segment1 LIKE '1%' OR msi.segment1 LIKE 'Y1%')
         AND mmt.organization_id IN ('82', '441', '442', '443', '444', '445', '635')
         AND mmt.transaction_date >= to_date(l_date_from, 'yyyy-mm-dd ')
         AND mmt.transaction_date < to_date(l_date_to, 'yyyy-mm-dd') + 1
         AND hou.organization_id = mmt.organization_id
         AND mmt.transaction_quantity < 0
       GROUP BY rownum,
                hou.NAME,
                hou.organization_id,
                ms.segment2,
                msi.segment1,
                mmt.subinventory_code,
                to_char(mmt.transaction_date, 'YYYY-MM-DD')
      UNION ALL
      SELECT rownum,
             hou.NAME organization_name,
             ms.segment2 order_type,
             msi.segment1 item_code,
             SUM(mmt.transaction_quantity) quantity,
             mmt.subinventory_code,
             to_char(mmt.transaction_date, 'YYYY-MM-DD') transaction_date
     
        FROM inv.mtl_material_transactions mmt,
             inv.mtl_sales_orders          ms,
             inv.mtl_system_items_b        msi,
             hr.hr_all_organization_units  hou
       WHERE mmt.transaction_source_type_id = 12
         AND mmt.transaction_source_id = ms.sales_order_id
         AND msi.inventory_item_id = mmt.inventory_item_id
         AND msi.organization_id = 83
         AND (msi.segment1 LIKE '1%' OR msi.segment1 LIKE 'Y1%')
         AND mmt.organization_id IN ('82', '441', '442', '443', '444', '445', '635')
         AND mmt.transaction_date >= to_date(l_date_from, 'yyyy-mm-dd ')
         AND mmt.transaction_date < to_date(l_date_to, 'yyyy-mm-dd') + 1
         AND hou.organization_id = mmt.organization_id
         AND mmt.transaction_quantity < 0
       GROUP BY hou.NAME,
                rownum,
                hou.organization_id,
                ms.segment2,
                msi.segment1,
                mmt.subinventory_code,
                to_char(mmt.transaction_date, 'YYYY-MM-DD');
    --游标的结束 
 
    l_temp_string VARCHAR2(10000);
  BEGIN
 
    print_line('Y', 'OUTFILE', '');
    print_line('Y', 'OUTFILE', '');
    print_line('Y', 'OUTFILE', '各工厂库存旬报表' || '');
    print_line('Y', 'OUTFILE', '<!-- ========================================================= -->');
    print_line('Y', 'OUTFILE', '<!--             Copyright (c) 2008 GITI Corporation           -->');
    print_line('Y', 'OUTFILE', '<!--                  All rights reserved                      -->');
    print_line('Y', 'OUTFILE', '<!-- ========================================================= -->');
    print_line('Y', 'OUTFILE', '');
    print_line('Y', 'OUTFILE', '');
    print_line('Y', 'OUTFILE', '  div.breakafter { page-break-after:always; }');
    print_line('Y', 'OUTFILE', '  .tableheader { background: #ccce99; color: #546699;}');
    print_line('Y', 'OUTFILE', '  div.breakbefore { page-break-before:always; }');
    print_line('Y',
               'OUTFILE',
               '  body {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
    print_line('Y',
               'OUTFILE',
               '  table {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
    print_line('Y', 'OUTFILE', '');
    print_line('Y', 'OUTFILE', '');
    print_line('Y', 'OUTFILE', '');
    print_line('Y', 'OUTFILE', '

各工厂库存旬报表
');
    print_line('Y', 'OUTFILE', '
');
    print_line('Y', 'OUTFILE', '');
 
    print_line('Y', 'LOGFILE', 'AFTER TITLE');
 
    l_temp_string := ' ' || '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                   
                     '';
    print_line('Y', 'OUTFILE', l_temp_string);    
   
    print_line('Y', 'LOGFILE', ' TITLE');
    FOR rec IN mycur
    LOOP
      l_temp_string :=  '' ||
                        '' ||
                        '' ||
                        '' ||
                        '' ||
                        '' ||
                        '' ||
                        '';
      --打印一行
      print_line('Y', 'OUTFILE', l_temp_string);
   
    END LOOP;
  EXCEPTION
    WHEN fnd_api.g_exc_error THEN
      retcode := '1';
      errbuf  := 'RETCODE=1';
    WHEN fnd_api.g_exc_unexpected_error THEN
      retcode := '2';
      errbuf  := 'RETCODE=2';
    WHEN OTHERS THEN
      retcode := '2';
      errbuf  := SQLERRM;
      print_line('Y', 'OUTFILE', '
Exception
');
      print_line('Y', 'OUTFILE', '' || 'ERROR' || '');
      print_line('Y', 'OUTFILE', '
');
      print_line('Y', 'OUTFILE', '' || SQLERRM || '');
      print_line('Y', 'OUTFILE', '
');
      print_line('Y', 'OUTFILE', '');
      print_line('Y', 'OUTFILE', '');
  END;
 
  PROCEDURE print_line(g_srs_flag     IN VARCHAR2,
                       p_line_type    IN VARCHAR2,
                       p_line_content IN VARCHAR2) IS
  BEGIN
    IF g_srs_flag = 'N' THEN
      htp.p(p_line_content);
    ELSE
      IF p_line_type = 'OUTFILE' THEN
        fnd_file.put_line(fnd_file.output, p_line_content);
      ELSIF p_line_type = 'LOGFILE' THEN
        fnd_file.put_line(fnd_file.log, p_line_content);
      END IF;
    END IF;
  END print_line;

END giti_inv_xbb;
/
或者

CREATE OR REPLACE PACKAGE BODY CUX_BOE_CUST_PERIOD_RPT IS
  g_conc_request_id CONSTANT NUMBER := fnd_global.conc_request_id;
  g_srs_flag        VARCHAR2(1) := 'Y';
  g_formt_mask      VARCHAR2(100) := 'YYYY-MM-DD';
  PROCEDURE MAIN(ERRBUF      OUT VARCHAR2,
                 RETCODE     OUT VARCHAR2,
                 P_POLICY_ID IN NUMBER,
                 P_PERIOD    IN VARCHAR2) IS
    LV_HEADER VARCHAR2(10000) := '
                               
                               
                               
                                佳通轮胎有限公司客户当前手续费报表
                               
                               
                                <-- $header: porstyl2.css 115.9 2002/10/24 04:30:42 dkfchan ship ${  }
                                <!--
                                   body         {background-color: #ffffff;}

                                   .subheader1  {font-family: Arial, Helvetica, Geneva, sans-serif;
                                                 font-size: 13pt;
                                                 font-weight: bold;
                                                 color: #336699;}
                                   .tableheader {font-family: Arial, Helvetica, Geneva, sans-serif;
                                                 font-size: 10pt;
                                                 font-weight: bold;
                                                 background: #cccc99;
                                                 color: #336699;
                                                 text-align: left;}
                                   .tabledata   {font-family: Arial, Helvetica, Geneva, sans-serif;
                                                 font-size: 10pt;
                                                 background: #f7f7e7;
                                                 color: #000000;}
                                -->
                               
                               
                               

序号组织名称销售类型品号销售数量子库名称/子库交易日
'  || nvl(rec.ro, 0)                || ''  || nvl(rec.organization_name, '-') || ''  || nvl(rec.order_type, '-')        || ''                || nvl(rec.item_code, '-')         || ''                || nvl(TO_CHAR(rec.quantity), '-')          || ''                || nvl(rec.sub_code, '-')          || ''                || nvl(rec.transaction_date, NULL)  || '

                               
                               

                               

佳通轮胎有限公司客户当前手续费报表


                               
                                 
                                   
                                  
                                   
                                   
                                   
                                   
                                   
                                   
                                   
                                   
                                   
                                  
                                   
                                   
                                   
                                   
                                   
                                  
                                   
                                   
                                   
                                   
                                   
                                   

                                   


                                   
                                   
                                   
                                   
                                   
                                   
                                   
                                   
                                   
                                 ';
    LV_BODY   VARCHAR2(3000) := '
                              
                              
                              
                              
                              
                               
                              
                               
                              
                              
                              
                              
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                               
                             ';
    LV_STRING VARCHAR2(3000);
    LV_TAIL   VARCHAR2(200) := '
销售中心收款编号客户编码客户名称特惠客户全免客户银行信息收款日期汇票到期日释放日期收款金额手续费总超出金额汇票比例总汇票比例特惠比率减免比例基础比率超额比率银行/天数比率金额固定组合比率累计增加最终比率 银行/天数固定银行/金额比率银行/金额固定金额比率准确计息比率天数比率天数固定传送标志冻结状态手续费率
TEXT01TEXT02TEXT03TEXT04TEXT05TEXT06TEXT07TEXT08TEXT09TEXT10TEXT11TEXT12TEXT13TEXT14TEXT15TEXT16TEXT17TEXT58TEXT68TEXT19TEXT20TEXT21TEXT22TEXT23TEXT24TEXT25TEXT26TEXT27TEXT28TEXT29TEXT30TEXT31TEXT32TEXT18
';

    CURSOR C_RECEIPTS(P_ORG_ID IN NUMBER) IS
    /*SELECT ACRA.RECEIPT_NUMBER, --收款编号
                                                                                             T.REMITTED_AMOUNT, --收款金额
                                                                                             CUST.CUSTOMER_NUMBER, --客户编码
                                                                                             CUST.CUSTOMER_NAME, --客户名称
                                                                                             DECODE(CUST.ATTRIBUTE1, 'Y', '是', 'N', '否') SPEC_BENE_FLAG, --特惠客户
                                                                                             DECODE(CUST.ATTRIBUTE2, 'Y', '是', 'N', '否') ALLOW_ALL_FREE_FLAG, --全免客户
                                                                                             T.ISSUE_BANK_NAME BANK_NAME, --银行信息
                                                                                             ACRA.RECEIPT_DATE, --收款日期
                                                                                             T.DUE_DATE, --汇票到期日期
                                                                                             T.ATTRIBUTE8 RELE_DATE, --释放日期
                                                                                             ROUND(TO_NUMBER(T.ATTRIBUTE1), 2) CHARGE_AMT,
                                                                                             CBCR.BASE_RULE, --手续费率
                                                                                             DECODE(T.ATTRIBUTE6,
                                                                                                    'Y',
                                                                                                    CBCR.MAIN_ADJ_RULE,
                                                                                                    'N',
                                                                                                    CBCR.OTHER_ADJ_RULE) BANK_RULE, -- 银行比率
                                                                                             T.ATTRIBUTE4 AMT_RULE, --金额比率
                                                                                             T.ATTRIBUTE3 DAYS_RULE, --天数比率
                                                                                             CBCR.BASE_RULE * NVL(T.ATTRIBUTE4, 1) * NVL(T.ATTRIBUTE3, 1) *
                                                                                             NVL(DECODE(T.ATTRIBUTE6,
                                                                                                        'Y',
                                                                                                        CBCR.MAIN_ADJ_RULE,
                                                                                                        'N',
                                                                                                        CBCR.OTHER_ADJ_RULE),
                                                                                                 1) COMB_RULE, --组合比率
                                                                                             T.ATTRIBUTE5 SPEC_RULE, --特惠比率
                                                                                             CBCR.BASE_RULE * NVL(T.ATTRIBUTE4, 1) * NVL(T.ATTRIBUTE3, 1) *
                                                                                             NVL(T.ATTRIBUTE5, 1) * NVL(DECODE(T.ATTRIBUTE6,
                                                                                                                               'Y',
                                                                                                                               CBCR.MAIN_ADJ_RULE,
                                                                                                                               'N',
                                                                                                                               CBCR.OTHER_ADJ_RULE),
                                                                                                                        1) F_RULE, --最终比率
                                                                                             T.ATTRIBUTE9 INTERFACE_ID
                                                                                        FROM CUX.CUX_BILL_OF_EXCHANGES_ALL T,
                                                                                             AR_CASH_RECEIPTS_ALL          ACRA,
                                                                                             AR_CASH_RECEIPT_HISTORY_ALL   ACRH,
                                                                                             CUX_BOE_CALC_RULE             CBCR,
                                                                                             --CUX_BOE_CUSTOMER_V            CUST
                                                                                             CUX_BOE_TM_INTERFACE CUST
                                                                                       WHERE T.RELATED_DOCUMENT_ID = ACRA.CASH_RECEIPT_ID
                                                                                         AND ACRA.CASH_RECEIPT_ID = ACRH.CASH_RECEIPT_ID
                                                                                         AND CBCR.CALC_RULE_ID = T.ATTRIBUTE2
                                                                                         AND CUST.DOCUMENT_ID = T.DOCUMENT_ID
                                                                                         AND CBCR.POLICY_ID = CUST.POLICY_ID
                                                                                            --AND ACRH.FIRST_POSTED_RECORD_FLAG = 'Y'
                                                                                         AND CUST.ORG_ID = FND_GLOBAL.ORG_ID
                                                                                         AND CBCR.POLICY_ID = P_POLICY_ID
                                                                                         AND ACRH.GL_DATE BETWEEN P_DATE_FROM AND P_DATE_TO
                                                                                       ORDER BY ACRA.RECEIPT_NUMBER;*/
      SELECT CUST.NAME, --销售中心
             CUST.RECEIPT_NUMBER, --收款编号
             CUST.REMITTED_AMOUNT, --收款金额
             CUST.CUSTOMER_NUMBER, --客户编码
             CUST.CUSTOMER_NAME, --客户名称
             DECODE(CUST.ATTRIBUTE1, 'Y', '是', 'N', '否') SPEC_BENE_FLAG, --特惠客户
             DECODE(CUST.ATTRIBUTE2, 'Y', '是', 'N', '否') ALLOW_ALL_FREE_FLAG, --全免客户
             CUST.BANK_NAME, --银行信息
             CUST.RECEIPT_DATE, --收款日期
             CUST.DUE_DATE, --汇票到期日期
             CUST.RELEASE_DATE RELE_DATE, --释放日期
             CUST.SOURCE_LINES_AMOUNT CHARGE_AMT, --手续费
             get_cust_base_rule(CUST.ORG_ID,CUST.POLICY_ID,CUST.CUSTOMER_ID) NEW_BASE_RULE, --基础比率
             get_cust_overtake_rule(CUST.ORG_ID,CUST.POLICY_ID,CUST.CUSTOMER_ID)  NEW_OVERTAKE_RULE,--超额比率
             CBCR.BASE_RULE, --手续费率
             DECODE(SUBSTR(CUST.PERIOD_NAME, 4, 5),
                    '07',
                    DECODE(CUST.ATTRIBUTE2,  --brain.chen on 2007.05.31
                           'Y',
                           '',
                           DECODE(T.ATTRIBUTE6,
                                  'Y',
                                  CBCR.MAIN_ADJ_RULE,
                                  'N',
                                  CBCR.OTHER_ADJ_RULE)),
                    T.ATTRIBUTE10 --08年银行比率


                                  )BANK_RULE, -- 银行比率

             T.ATTRIBUTE11 BANK_AMOUNT,         --银行固定 08年政策新增
             T.ATTRIBUTE4 AMT_RULE, --金额比率
             T.ATTRIBUTE9 AMT_AMOUNT, --金额固定 08年政策新增
             T.ATTRIBUTE5 PREC_RULE, --准确计息比率
             T.ATTRIBUTE3 DAYS_RULE, --天数比率
             T.ATTRIBUTE8 DAYS_AMOUNT, --天数固定 08年政策新增
             DECODE(SUBSTR(CUST.PERIOD_NAME, 4, 5),
                    '07',
                    CBCR.BASE_RULE * NVL(T.ATTRIBUTE4, 1) * NVL(T.ATTRIBUTE3, 1) *
                    NVL(T.ATTRIBUTE5, 1) * NVL(DECODE(T.ATTRIBUTE6,
                                                      'Y',
                                                      CBCR.MAIN_ADJ_RULE,
                                                      'N',
                                                      CBCR.OTHER_ADJ_RULE), 1),
                    CBCR.BASE_RULE * NVL(T.ATTRIBUTE4, 1) * NVL(T.ATTRIBUTE3, 1) *
                    NVL(T.ATTRIBUTE5, 1)) COMB_RULE, --组合比率
             NVL(T.ATTRIBUTE11, 0) + NVL(T.ATTRIBUTE9, 0) + NVL(T.ATTRIBUTE8, 0) TOTAL_AMOUNT,  --累计增加 08年政策
             CUST.SPEC_RULE, --特惠比率
             DECODE(SUBSTR(CUST.PERIOD_NAME, 4, 5),
                           '07',
                           CBCR.BASE_RULE * NVL(T.ATTRIBUTE4, 1) * NVL(T.ATTRIBUTE3, 1) *
                           NVL(T.ATTRIBUTE5, 1) * NVL(CUST.SPEC_RULE, 1) *
                           NVL(DECODE(T.ATTRIBUTE6,
                                      'Y',
                                      CBCR.MAIN_ADJ_RULE,
                                      'N',
                                      CBCR.OTHER_ADJ_RULE),
                               1),
                           NVL(T.ATTRIBUTE15,
                           --CUST.SOURCE_LINES_AMOUNT / NVL(CUST.REMITTED_AMOUNT, CUST.SOURCE_LINES_AMOUNT)
                              DECODE(NVL(CUST.REMITTED_AMOUNT,0),
                                     0,
                                     DECODE(NVL(CUST.SOURCE_LINES_AMOUNT, 0),
                                            0,
                                            0,
                                            1),
                                     NVL(CUST.SOURCE_LINES_AMOUNT, 0) / CUST.REMITTED_AMOUNT)
                              --MODI BY LEONFENG 20080108
                           )
                   )F_RULE, --最终比率
             DECODE(CUST.IMPORT_FLAG, 'Y', '是', 'N', '否') IMPORT_FLAG,
             CUST.BOE_SCALE,  --汇票比率
             T.ATTRIBUTE1,  --减免比率
             CUST.TOTAL_BOE_SCALE, --总汇票比率
             CUST.OVER_AMOUNT,  --总超出金额
             T.ATTRIBUTE16,  --银行金额比例
             T.ATTRIBUTE17,   --银行金额固定
             DECODE(CUST.FREEZE_FLAG,
                    'Y',
                    '冻结',
                    '释放') FREEZE_FLAG
        FROM CUX.CUX_BILL_OF_EXCHANGES_ALL T,
             CUX_BOE_CALC_RULE             CBCR,
             CUX_BOE_TM_INTERFACE_V        CUST
       WHERE T.DOCUMENT_ID = CUST.DOCUMENT_ID
         AND CBCR.CALC_RULE_ID = T.ATTRIBUTE2
         AND CUST.POLICY_ID = CBCR.POLICY_ID
         AND CUST.ORG_ID =
             DECODE(P_ORG_ID, 88, CUST.ORG_ID, P_ORG_ID, P_ORG_ID) --FND_GLOBAL.ORG_ID
         AND CUST.POLICY_ID = P_POLICY_ID
         AND CUST.PERIOD_NAME = P_PERIOD
       ORDER BY CUST.RECEIPT_NUMBER;
    V_START_DATE DATE;
    V_END_DATE   DATE;
    V_ORG_ID     NUMBER;

  BEGIN
    --100总公司显示所有OU的报表,其他分公司只显示当前OU的报表
    V_ORG_ID := FND_GLOBAL.ORG_ID;

    /*SELECT START_DATE, END_DATE
     INTO V_START_DATE, V_END_DATE
     FROM GL_PERIOD_STATUSES
    WHERE CLOSING_STATUS IN ('O', 'C')
      AND APPLICATION_ID = 101
      AND SET_OF_BOOKS_ID = 1
      AND ADJUSTMENT_PERIOD_FLAG = 'N'
         --AND TO_CHAR(SYSDATE, 'YYYY') = PERIOD_YEAR
      AND PERIOD_NAME = P_PERIOD;*/

    CUX_CONC_UTL.OUT_MSG(LV_HEADER);
    FOR REC IN C_RECEIPTS(V_ORG_ID) LOOP

      LV_STRING := LV_BODY;
      LV_STRING := REPLACE(LV_STRING, 'TEXT01', NVL(REC.NAME, ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT02',
                           NVL(TO_CHAR(REC.RECEIPT_NUMBER), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT03',
                           NVL(REC.CUSTOMER_NUMBER, ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT04',
                           NVL(REC.CUSTOMER_NAME, ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT05',
                           NVL(REC.SPEC_BENE_FLAG, ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT06',
                           NVL(REC.ALLOW_ALL_FREE_FLAG, ''));
      LV_STRING := REPLACE(LV_STRING, 'TEXT07', NVL(REC.BANK_NAME, ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT08',
                           NVL(TO_CHAR(REC.RECEIPT_DATE, 'YYYY-MM-DD'),
                               ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT09',
                           NVL(TO_CHAR(REC.DUE_DATE, 'YYYY-MM-DD'), ''));

      LV_STRING := REPLACE(LV_STRING,
                           'TEXT10',
                           NVL(TO_CHAR(REC.RELE_DATE, 'YYYY-MM-DD'), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT11',
                           NVL(TO_CHAR(REC.REMITTED_AMOUNT), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT12',
                           NVL(TO_CHAR(ROUND(REC.CHARGE_AMT, 4)), ''));

      LV_STRING := REPLACE(LV_STRING,
                           'TEXT13',
                           NVL(TO_CHAR(ROUND(REC.OVER_AMOUNT, 4)), ''));

      LV_STRING := REPLACE(LV_STRING,
                           'TEXT14',
                           NVL(TO_CHAR(ROUND(REC.BOE_SCALE, 4)), ''));

      --银行固定
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT15',
                           NVL(TO_CHAR(ROUND(REC.TOTAL_BOE_SCALE, 4)), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT16',
                           NVL(TO_CHAR(ROUND(REC.SPEC_RULE, 4)), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT17',
                           NVL(TO_CHAR(REC.ATTRIBUTE1), ''));

      --基础比率
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT58',
                           NVL(TO_CHAR(REC.NEW_BASE_RULE), ''));
      --超额比率
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT68',
                           NVL(TO_CHAR(REC.NEW_OVERTAKE_RULE), ''));

      --金额比率
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT18',
                           NVL(TO_CHAR(REC.BASE_RULE), ''));
      --金额固定
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT19',
                           NVL(TO_CHAR(REC.BANK_RULE), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT20',
                           NVL(TO_CHAR(REC.AMT_AMOUNT), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT21',
                           NVL(TO_CHAR(ROUND(REC.COMB_RULE, 4)), ''));
      --天数固定
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT22',
                           NVL(TO_CHAR(ROUND(REC.TOTAL_AMOUNT, 4)), ''));

      LV_STRING := REPLACE(LV_STRING,
                           'TEXT23',
                           NVL(TO_CHAR(ROUND(REC.F_RULE, 6)), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT24',
                           NVL(TO_CHAR(REC.BANK_RULE), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT25',
                           NVL(TO_CHAR(ROUND(REC.ATTRIBUTE16, 6)), ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT26',
                           NVL(TO_CHAR(ROUND(REC.ATTRIBUTE17, 6)), ''));
      --汇票比例
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT27',
                           NVL(TO_CHAR(round(REC.AMT_RULE, 4)), ''));
      --减免比例
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT28',
                           NVL(TO_CHAR(REC.PREC_RULE), ''));
      --总超出金额
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT29',
                           NVL(TO_CHAR(ROUND(REC.DAYS_RULE, 4)), ''));
      --总汇票比例
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT30',
                           NVL(TO_CHAR(ROUND(REC.DAYS_AMOUNT, 4)), ''));
      --传送标志
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT31',
                           NVL(REC.IMPORT_FLAG, ''));
      LV_STRING := REPLACE(LV_STRING,
                           'TEXT32',
                           NVL(REC.FREEZE_FLAG, ''));
      CUX_CONC_UTL.OUT_MSG(LV_STRING);

    END LOOP;
    CUX_CONC_UTL.OUT_MSG(LV_TAIL);
  END MAIN;


  PROCEDURE CUXZGSAT(ERRBUF      OUT VARCHAR2,
                     RETCODE     OUT VARCHAR2,
                     P_ORG_ID    IN NUMBER,
                     P_PERIOD    IN VARCHAR2) IS

    l_start_date  DATE;
    l_end_date    DATE;
    CURSOR C_RECEIPTS(p_start_date DATE, p_end_date DATE) IS
      SELECT hou.name ORG_NAME,
             hp.party_name cust_name,
             flv.meaning boe_doc_type,
             boe.remittor_name,
             boe.issue_bank_name,
             boe.date_of_issue,
             boe.due_date,
             boe.remitted_amount,
             boe.document_number1 || boe.document_number2 || boe.document_number3 document_number,
             boe.remittee_name,
             boe.receive_bank_name,
             boe.receive_bank_account_name,
             boe.issue_bank_account_name,
             boe.agreement_number,
             boe.currency_code,
             boe.issue_bank_number,
             boe.issue_bank_address,
             get_first_endor(boe.document_id)first_endor,
             get_second_endor(boe.document_id)second_endor,
             cr.receipt_number
      FROM cux.cux_bill_of_exchanges_all boe,
           ar_cash_receipts_all              cr,
           ar_cash_receipt_history_all       crh,
           ar_cash_receipt_history_all       crhc,
           hz_cust_accounts              hca,
           hz_parties                    hp,
           fnd_lookup_values             flv,
           HR_ORGANIZATION_UNITS    HOU
      WHERE 1 = 1
      AND   boe.related_document_id = cr.cash_receipt_id
      AND   cr.cash_receipt_id = crh.cash_receipt_id
      AND   crh.first_posted_record_flag = 'Y'
      AND   cr.cash_receipt_id = crhc.cash_receipt_id
      AND   crhc.current_record_flag = 'Y'
      AND   crhc.status <> 'REVERSED'
      AND   cr.pay_from_customer = hca.cust_account_id(+)
      AND   hca.party_id = hp.party_id(+)
      AND   flv.lookup_code(+) = boe.document_type
      AND   flv.LANGUAGE(+) = 'ZHS'
      AND   flv.lookup_type(+) = 'CUX_BOE_DOC_TYPE'
      AND   crh.gl_date between nvl(p_start_date, crh.gl_date) and nvl(p_end_date, crh.gl_date)
      AND   CR.ORG_ID = DECODE(P_ORG_ID,88,CR.ORG_ID,NVL(P_ORG_ID,CR.ORG_ID))
      AND   CRH.ORG_ID = DECODE(P_ORG_ID,88,CRH.ORG_ID,NVL(P_ORG_ID,CRH.ORG_ID))
      AND   CRHC.ORG_ID = DECODE(P_ORG_ID,88,CRHC.ORG_ID,NVL(P_ORG_ID,CRHC.ORG_ID))
      AND CR.ORG_ID = HOU.organization_id
      ;
    V_START_DATE DATE;
    V_END_DATE   DATE;
    V_ORG_ID     NUMBER;
    l_temp_string VARCHAR2(4000);
    l_org_name   VARCHAR2(500);
  BEGIN
    IF P_ORG_ID IS NOT NULL THEN
      SELECT ou.name
      INTO l_org_name
      FROM hr_operating_units ou
      WHERE ou.organization_id = P_ORG_ID;
    END IF;
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '银行票据信息' || l_org_name || '');
    print_line(g_srs_flag, 'OUTFILE', '<!-- ========================================================= -->');
    print_line(g_srs_flag, 'OUTFILE', '<!--             Copyright (c) 2006 Hand Corporation           -->');
    print_line(g_srs_flag, 'OUTFILE', '<!--                  All rights reserved                      -->');
    print_line(g_srs_flag, 'OUTFILE', '<!-- ========================================================= -->');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '  div.breakafter { page-break-after:always; }');
    print_line(g_srs_flag, 'OUTFILE', '  .tableheader { background: #cccc99; color: #336699;}');
    print_line(g_srs_flag, 'OUTFILE', '  div.breakbefore { page-break-before:always; }');
    print_line(g_srs_flag, 'OUTFILE', '  body {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
    print_line(g_srs_flag, 'OUTFILE', '  table {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');

    print_line(g_srs_flag, 'OUTFILE', '

银行票据信息
');

    print_line(g_srs_flag, 'OUTFILE', '

');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '
业务实体 :' || l_org_name || '
打印时间 :' || to_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || '
');

    print_line(g_srs_flag, 'OUTFILE', '

');

    l_temp_string := '

' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '';

    print_line(g_srs_flag, 'OUTFILE', l_temp_string);

    BEGIN
      SELECT START_DATE, END_DATE
        INTO l_start_date, l_end_date
        FROM GL_PERIOD_STATUSES
       WHERE CLOSING_STATUS IN ('O', 'C', 'N')
         AND APPLICATION_ID = 101
         AND SET_OF_BOOKS_ID = 1
         AND ADJUSTMENT_PERIOD_FLAG = 'N'
            --AND TO_CHAR(SYSDATE, 'YYYY') = PERIOD_YEAR
         AND PERIOD_NAME = P_PERIOD;
    EXCEPTION
      WHEN OTHERS THEN
        l_start_date := null;
        l_end_date := null;
    END;

    FOR x IN C_RECEIPTS(l_start_date, l_end_date)
    LOOP
      l_temp_string := '

' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '' ||
                         '';
      print_line(g_srs_flag, 'OUTFILE', l_temp_string);
    END LOOP;
    print_line(g_srs_flag, 'OUTFILE', '
业务实体客户名称汇票类型出票人全称付款银行名称出票日期到日期出票金额汇票编号收款人名称收款人开户银行收款人帐号出票人帐号承兑协议编号付款币种付款行行号付款行地址第一背书人第二背书人收款编号
' || x.ORG_NAME || '' || nvl(x.cust_name, '') || '' || x.boe_doc_type || '' || x.remittor_name || '' || x.issue_bank_name || '' || to_char(x.date_of_issue, 'YYYY-MM-DD') || '' || to_char(x.due_date, 'YYYY-MM-DD') || '' || to_char(round(x.remitted_amount, 2)) || '' || x.document_number || '' || x.remittee_name || '' || x.receive_bank_name || '' || x.receive_bank_account_name || '' || x.issue_bank_account_name || '' || nvl(x.agreement_number, '') || '' || x.currency_code || '' || x.issue_bank_number || '' || x.issue_bank_address || '' || nvl(x.first_endor, '') || '' || nvl(x.second_endor, '') || '' || x.receipt_number || '
');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');

    EXCEPTION
    WHEN OTHERS THEN
      print_line(g_srs_flag, 'OUTFILE', '

异常错误发生
');
      print_line(g_srs_flag, 'OUTFILE', '
');
      print_line(g_srs_flag, 'OUTFILE', '' || SQLERRM || '');
      print_line(g_srs_flag, 'OUTFILE', '
');
      print_line(g_srs_flag, 'OUTFILE', '');
      print_line(g_srs_flag, 'OUTFILE', '');

  END CUXZGSAT;
  --
  PROCEDURE CUXBOECK(errbuf            out varchar2,
                     retcode           out varchar2,
                     p_default_org     in number,
                     p_org_id          in number,
                     p_period          in varchar2,
                     p_customer_id     in number,
                     p_customer_number in varchar2) IS
    l_temp_string VARCHAR2(4000);
    l_start_date  DATE;
    l_end_date    DATE;
    l_org_name    VARCHAR2(500);
    CURSOR c_boecheck(p_start_date DATE, p_end_date DATE) IS
      SELECT ou.NAME org_name,
             cr.receipt_number,
             boe.remitted_amount,
             hca.account_number customer_number,
             hp.party_name customer_name,
             boe.document_number1 || '-' || boe.document_number2 || '-' || boe.document_number3 boe_number
      FROM   cux.cux_bill_of_exchanges_all boe,
             ar_cash_receipts_all          cr,
             ar_cash_receipt_history_all   crh,
             ar_cash_receipt_history_all   crhc,
             hz_cust_accounts              hca,
             hz_parties                    hp,
             hr_operating_units            ou
      WHERE  1 = 1
      AND    boe.related_document_id = cr.cash_receipt_id
      AND    cr.cash_receipt_id = crh.cash_receipt_id
      AND    crh.first_posted_record_flag = 'Y'
      AND    cr.cash_receipt_id = crhc.cash_receipt_id
      AND    crhc.current_record_flag = 'Y'
      AND    crhc.status <> 'REVERSED'
      AND    cr.pay_from_customer = hca.cust_account_id
      AND    hca.party_id = hp.party_id
      AND    boe.org_id = ou.organization_id
      AND    cr.org_id <> 88
      AND    (cr.org_id = p_org_id or p_org_id is null)
      AND    (hca.cust_account_id = p_customer_id or p_customer_id is null)
      AND    (hca.account_number = p_customer_number or p_customer_number is null)
      AND    crh.gl_date between nvl(p_start_date, crh.gl_date) and nvl(p_end_date, crh.gl_date)
      AND    p_default_org = 88
      AND    NOT EXISTS (SELECT 'EXISTS'
                         FROM cux_bill_of_exchanges_all t
                         WHERE 1 = 1
                         AND   boe.document_number1 = t.document_number1
                         AND   boe.document_number2 = t.document_number2
                         AND   boe.document_number3 = t.document_number3
                         AND   t.org_id = 88)
      order by org_name,
               customer_number;

  BEGIN
    IF p_default_org IS NOT NULL THEN
      SELECT ou.name
      INTO l_org_name
      FROM hr_operating_units ou
      WHERE ou.organization_id = p_default_org;
    END IF;
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '总公司及分公司汇票差异报表' || l_org_name || '');
    print_line(g_srs_flag, 'OUTFILE', '<!-- ========================================================= -->');
    print_line(g_srs_flag, 'OUTFILE', '<!--             Copyright (c) 2006 Hand Corporation           -->');
    print_line(g_srs_flag, 'OUTFILE', '<!--                  All rights reserved                      -->');
    print_line(g_srs_flag, 'OUTFILE', '<!-- ========================================================= -->');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '  div.breakafter { page-break-after:always; }');
    print_line(g_srs_flag, 'OUTFILE', '  .tableheader { background: #cccc99; color: #336699;}');
    print_line(g_srs_flag, 'OUTFILE', '  div.breakbefore { page-break-before:always; }');
    print_line(g_srs_flag, 'OUTFILE', '  body {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
    print_line(g_srs_flag, 'OUTFILE', '  table {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');

    print_line(g_srs_flag, 'OUTFILE', '

总公司及分公司汇票差异报表
');

    print_line(g_srs_flag, 'OUTFILE', '

');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '
业务实体 :' || l_org_name || '
打印时间 :' || to_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || '
');

    print_line(g_srs_flag, 'OUTFILE', '

');

    l_temp_string := '

' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '';

    print_line(g_srs_flag, 'OUTFILE', l_temp_string);
    BEGIN
      SELECT START_DATE, END_DATE
        INTO l_start_date, l_end_date
        FROM GL_PERIOD_STATUSES
       WHERE CLOSING_STATUS IN ('O', 'C', 'N')
         AND APPLICATION_ID = 101
         AND SET_OF_BOOKS_ID = 1
         AND ADJUSTMENT_PERIOD_FLAG = 'N'
            --AND TO_CHAR(SYSDATE, 'YYYY') = PERIOD_YEAR
         AND PERIOD_NAME = P_PERIOD;
    EXCEPTION
      WHEN OTHERS THEN
        l_start_date := null;
        l_end_date := null;
    END;
    FOR x IN c_boecheck(l_start_date, l_end_date)
    LOOP
      l_temp_string := '

' ||
                       '' ||
                       '' ||
                       '' ||
                       '' ||
                       '' ||
                       '' ||
                       '';
      print_line(g_srs_flag, 'OUTFILE', l_temp_string);
    END LOOP;
    print_line(g_srs_flag, 'OUTFILE', '
销售中心收款编号收款金额客户编号客户名称汇票编号
' || x.org_name || '' || x.receipt_number || '' || x.remitted_amount || '' || x.customer_number || '' || x.customer_name || '' || x.boe_number || '
');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');

    EXCEPTION
    WHEN OTHERS THEN
      print_line(g_srs_flag, 'OUTFILE', '

异常错误发生
');
      print_line(g_srs_flag, 'OUTFILE', '
');
      print_line(g_srs_flag, 'OUTFILE', '' || SQLERRM || '');
      print_line(g_srs_flag, 'OUTFILE', '
');
      print_line(g_srs_flag, 'OUTFILE', '');
      print_line(g_srs_flag, 'OUTFILE', '');
  END CUXBOECK;

  PROCEDURE CUXBOEER(errbuf            out varchar2,
                     retcode           out varchar2,
                     p_org_id          in number,
                     p_period          in varchar2) IS
    l_temp_string VARCHAR2(4000);
    l_org_name    VARCHAR2(500);
    l_start_date  DATE;
    l_end_date    DATE;
    CURSOR ERRCHK(p_start_date DATE, p_end_date DATE) IS
      SELECT hou.NAME org_name,
             '票据信息不存在' error_msg,
             a1.receipt_number,
             a1.receipt_date,
             a1.amount,
             a1.status
      FROM   apps.ar_cash_receipts_all a1,
             ar_cash_receipt_history_all crh,
             ar_cash_receipt_history_all crhc,
             apps.hr_operating_units   hou
      WHERE  1 = 1 --a.org_id = p_org_id
      AND    crh.cash_receipt_id = a1.cash_receipt_id
      AND    crh.first_posted_record_flag = 'Y'
      AND    crhc.cash_receipt_id = a1.cash_receipt_id
      AND    crhc.current_record_flag = 'Y'
      AND    crhc.status <> 'REVERSED'
      AND    crh.gl_date between nvl(p_start_date, crh.gl_date) and nvl(p_end_date, crh.gl_date)
      AND    trunc(a1.receipt_date) >= to_date('2007-01-01', 'YYYY-MM-DD')
      AND    a1.org_id = hou.organization_id
            --AND hou.NAME LIKE '%' || '&公司名称' || '%'
      AND   (a1.org_id = p_org_id or p_org_id is null)
      AND    EXISTS (SELECT '必须输入票据信息'
              FROM   ar.ar_receipt_methods             a,
                     ar.ar_receipt_method_accounts_all b,
                     gl.gl_code_combinations           gcc
              WHERE  1 = 1
              AND    a.end_date IS NULL
              AND    a.receipt_method_id = b.receipt_method_id
              AND    gcc.code_combination_id = b.cash_ccid
              AND    a.receipt_method_id = a1.receipt_method_id
              AND    (b.bank_account_id = a1.remittance_bank_account_id OR a1.remittance_bank_account_id IS NULL)
              AND    b.end_date IS NULL
              AND    (gcc.segment1 LIKE '2%' or gcc.segment1 = '100') -- 分公司业务实体
              AND    gcc.segment2 LIKE '1111%' -- 现金科目)
              )
      AND    NOT EXISTS (SELECT 1
              FROM   apps.cux_bill_of_exchanges b
              WHERE  b.related_document_type = 'CR'
              AND    a1.cash_receipt_id = b.related_document_id)
      UNION ALL
      SELECT hou.NAME org_name,
             '票据信息存在金额不相等' error_msg,
             a1.receipt_number,
             a1.receipt_date,
             a1.amount,
             a1.status
      FROM   apps.ar_cash_receipts_all  a1,
             ar_cash_receipt_history_all crh,
             ar_cash_receipt_history_all crhc,
             apps.cux_bill_of_exchanges b,
             apps.hr_operating_units    hou
      WHERE  1 = 1
      AND    crh.cash_receipt_id = a1.cash_receipt_id
      AND    crh.first_posted_record_flag = 'Y'
      AND    crhc.cash_receipt_id = a1.cash_receipt_id
      AND    crhc.current_record_flag = 'Y'
      AND    crhc.status <> 'REVERSED'
      AND    crh.gl_date between nvl(p_start_date, crh.gl_date) and nvl(p_end_date, crh.gl_date)
      AND    b.related_document_type = 'CR'
      AND    trunc(a1.receipt_date) >= to_date('2007-01-01', 'YYYY-MM-DD')
      AND    a1.org_id = hou.organization_id
      AND    (a1.org_id = p_org_id or p_org_id is null)
            --AND hou.NAME LIKE '%' || '&公司名称' || '%'
      AND    EXISTS (SELECT '必须输入票据信息'
              FROM   ar.ar_receipt_methods             a,
                     ar.ar_receipt_method_accounts_all b,
                     gl.gl_code_combinations           gcc
              WHERE  1 = 1
              AND    a.end_date IS NULL
              AND    a.receipt_method_id = b.receipt_method_id
              AND    gcc.code_combination_id = b.cash_ccid
              AND    a.receipt_method_id = a1.receipt_method_id
              AND    (b.bank_account_id = a1.remittance_bank_account_id OR a1.remittance_bank_account_id IS NULL)
              AND    b.end_date IS NULL
              AND    (gcc.segment1 LIKE '2%' or gcc.segment1 = '100') -- 分公司业务实体
              AND    gcc.segment2 LIKE '1111%' -- 现金科目)
              )
      AND    a1.cash_receipt_id = b.related_document_id
      AND    a1.amount != b.remitted_amount
      AND    a1.currency_code = b.currency_code;

  BEGIN
    if p_org_id is not null then
      select ou.name
      into l_org_name
      from hr_operating_units ou
      where ou.organization_id = p_org_id;
    end if;
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '应收票据检查报表-' || l_org_name || '');
    print_line(g_srs_flag, 'OUTFILE', '<!-- ========================================================= -->');
    print_line(g_srs_flag, 'OUTFILE', '<!--             Copyright (c) 2006 Hand Corporation           -->');
    print_line(g_srs_flag, 'OUTFILE', '<!--                  All rights reserved                      -->');
    print_line(g_srs_flag, 'OUTFILE', '<!-- ========================================================= -->');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '  div.breakafter { page-break-after:always; }');
    print_line(g_srs_flag, 'OUTFILE', '  .tableheader { background: #cccc99; color: #336699;}');
    print_line(g_srs_flag, 'OUTFILE', '  div.breakbefore { page-break-before:always; }');
    print_line(g_srs_flag, 'OUTFILE', '  body {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
    print_line(g_srs_flag, 'OUTFILE', '  table {font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 9pt; color: black}');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');

    print_line(g_srs_flag, 'OUTFILE', '

应收票据检查报表
');

    print_line(g_srs_flag, 'OUTFILE', '

');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '
业务实体 :' || l_org_name || '
打印时间 :' || to_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || '
');

    print_line(g_srs_flag, 'OUTFILE', '

');

    l_temp_string := '

' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '' ||
                     '';

    print_line(g_srs_flag, 'OUTFILE', l_temp_string);

    BEGIN
      SELECT START_DATE, END_DATE
        INTO l_start_date, l_end_date
        FROM GL_PERIOD_STATUSES
       WHERE CLOSING_STATUS IN ('O', 'C', 'N')
         AND APPLICATION_ID = 101
         AND SET_OF_BOOKS_ID = 1
         AND ADJUSTMENT_PERIOD_FLAG = 'N'
            --AND TO_CHAR(SYSDATE, 'YYYY') = PERIOD_YEAR
         AND PERIOD_NAME = P_PERIOD;
    EXCEPTION
      WHEN OTHERS THEN
        l_start_date := null;
        l_end_date := null;
    END;

    FOR x IN ERRCHK(l_start_date, l_end_date)
    LOOP
      l_temp_string := '

' ||
                       '' ||
                       '' ||
                       '' ||
                       '' ||
                       '' ||
                       '';
      print_line(g_srs_flag, 'OUTFILE', l_temp_string);
    END LOOP;
    print_line(g_srs_flag, 'OUTFILE', '
公司错误信息收款编号收款日期收款金额
' || x.org_name || '' || x.error_msg || '' || x.receipt_number || '' || to_char(x.receipt_date, 'YYYY-MM-DD') || '' || x.amount || '
');
    print_line(g_srs_flag, 'OUTFILE', '');
    print_line(g_srs_flag, 'OUTFILE', '');

    EXCEPTION
    WHEN OTHERS THEN
      print_line(g_srs_flag, 'OUTFILE', '

异常错误发生
');
      print_line(g_srs_flag, 'OUTFILE', '
');
      print_line(g_srs_flag, 'OUTFILE', '' || SQLERRM || '');
      print_line(g_srs_flag, 'OUTFILE', '
');
      print_line(g_srs_flag, 'OUTFILE', '');
      print_line(g_srs_flag, 'OUTFILE', '');
  END CUXBOEER;

  PROCEDURE print_line(g_srs_flag     IN VARCHAR2,
                       p_line_type    IN VARCHAR2,
                       p_line_content IN VARCHAR2) IS
  BEGIN
    IF g_srs_flag = 'N' THEN
      htp.p(p_line_content);
    ELSE
      IF p_line_type = 'OUTFILE' THEN
        fnd_file.put_line(fnd_file.output, p_line_content);
      ELSIF p_line_type = 'LOGFILE' THEN
        fnd_file.put_line(fnd_file.log, p_line_content);
      END IF;
    END IF;
  END print_line;

  FUNCTION get_first_endor (p_document_id NUMBER) RETURN VARCHAR2 IS
    l_first_endor VARCHAR2(200);
  BEGIN
    select first_endor
    into l_first_endor
    from (
      select boh.endorser_name || '->' || boh.endorsee_name first_endor
      from cux.cux_boe_endorsement_histories boh
      where 1 = 1
      and   boh.document_id = p_document_id
      order by boh.notes_num asc)
    where rownum = 1;
    return l_first_endor;
  EXCEPTION
    WHEN OTHERS THEN
      l_first_endor := null;
      return l_first_endor;
  END get_first_endor;

  FUNCTION get_second_endor (p_document_id NUMBER) RETURN VARCHAR2 IS
    l_second_endor VARCHAR2(200);
  BEGIN
    select first_endor
    into l_second_endor
    from (
      select boh.endorser_name || '->' || boh.endorsee_name first_endor
      from cux.cux_boe_endorsement_histories boh
      where 1 = 1
      and   boh.document_id = p_document_id
      order by boh.notes_num desc)
    where rownum = 1;
    return l_second_endor;
  EXCEPTION
    WHEN OTHERS THEN
      l_second_endor := null;
      return l_second_endor;
  END get_second_endor;

    --获取客户基础比率
  FUNCTION get_cust_base_rule(p_org_id        IN NUMBER,
                              p_policy_id     IN NUMBER,
                              p_customer_id   IN NUMBER)
  RETURN NUMBER
  IS
    l_ret_base_rule                          cux_boe_customer_all.base_rule%TYPE;
  BEGIN
       BEGIN
          SELECT base_rule
            INTO l_ret_base_rule
            FROM cux_boe_customer_all
           WHERE customer_id = p_customer_id
             AND org_id = p_org_id
             AND policy_id = p_policy_id
             AND rownum = 1;
          EXCEPTION
            WHEN OTHERS THEN
              l_ret_base_rule := 0;
       END;

       RETURN NVL(l_ret_base_rule,0);
  END;

    --获取客户超额比率
  FUNCTION get_cust_overtake_rule(p_org_id        IN NUMBER,
                                  p_policy_id     IN NUMBER,
                                  p_customer_id   IN NUMBER)
  RETURN NUMBER
  IS
    l_ret_overtake_rule                          cux_boe_customer_all.overtake_rule%TYPE;
  BEGIN
       BEGIN
          SELECT overtake_rule
            INTO l_ret_overtake_rule
            FROM cux_boe_customer_all
           WHERE customer_id = p_customer_id
             AND p_org_id = p_org_id
             AND policy_id = p_policy_id
             AND rownum = 1;
          EXCEPTION
            WHEN OTHERS THEN
              l_ret_overtake_rule := 0;
       END;

       RETURN NVL(l_ret_overtake_rule,0);
  END;
END CUX_BOE_CUST_PERIOD_RPT;

注意:html 只可以对少量数据使用,数据量大的时候最好用txt 格式的


 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13996372/viewspace-607788/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 动态SQL的学习
请登录后发表评论 登录
全部评论

注册时间:2009-05-09

  • 博文量
    23
  • 访问量
    47975