running-fish
 BEGIN
        SELECT SUM(decode(ail.line_type_lookup_code,
                          \'ITEM\',
                          (ail.amount - nvl(ail.included_tax_amount, 0)),
                          \'RETAINAGE RELEASE\',
                          (ail.amount - nvl(ail.included_tax_amount, 0)),
                          \'RETROITEM\',
                          (ail.amount - nvl(ail.included_tax_amount, 0)),
                          NULL)) item_total,
               SUM(decode(ail.line_type_lookup_code,
                          \'FREIGHT\',
                          (ail.amount - nvl(ail.included_tax_amount, 0)),
                          NULL)) freight_total,
               SUM(decode(ail.line_type_lookup_code,
                          \'MISCELLANEOUS\',
                          (ail.amount - nvl(ail.included_tax_amount, 0)),
                          NULL)) misc_total
          INTO l_item_total, l_freight_total, l_misc_total
          FROM ap_invoice_lines_all ail
         WHERE ail.invoice_id = cur_datas.invoice_id;
      EXCEPTION
        WHEN OTHERS THEN
          l_item_total    := NULL;
          l_freight_total := NULL;
          l_misc_total    := NULL;
      END;
    
      BEGIN
        SELECT (0 - SUM(decode(aid.line_type_lookup_code, \'PREPAY\', aid.amount, NULL))) prepay_app_total
          INTO l_prepaid_amount
          FROM ap_invoice_distributions_all aid, ap_invoice_lines_all ail
         WHERE ail.invoice_id = cur_datas.invoice_id
           AND ail.invoice_id = aid.invoice_id
           AND ail.line_number = aid.invoice_line_number
           AND aid.line_type_lookup_code = \'PREPAY\'
           AND aid.prepay_distribution_id IS NOT NULL
           AND nvl(ail.invoice_includes_prepay_flag, \'N\') = \'N\';
      EXCEPTION
        WHEN OTHERS THEN
          l_prepaid_amount := NULL;
      END;
    
      BEGIN
        SELECT SUM(nvl(amount, 0))
          INTO l_retained_total
          FROM ap_invoice_distributions_all aid
         WHERE aid.invoice_id = cur_datas.invoice_id
           AND aid.line_type_lookup_code = \'RETAINAGE\'
           AND EXISTS
         (SELECT \'X\'
                  FROM ap_invoice_lines_all ail
                 WHERE ail.invoice_id = cur_datas.invoice_id
                   AND ail.line_number = aid.invoice_line_number
                   AND ail.line_type_lookup_code <> \'RETAINAGE RELEASE\');
      EXCEPTION
        WHEN OTHERS THEN
          l_retained_total := NULL;
      END;
    
      SELECT nvl(SUM(decode(nvl(zls.self_assessed_flag, \'N\'),
                            \'N\',
                            CASE
                              WHEN EXISTS
                               (SELECT \'Prepay App Exists\'
                                      FROM ap_invoice_lines prepay
                                     WHERE prepay.invoice_id = zls.trx_id
                                       AND prepay.line_type_lookup_code = \'PREPAY\'
                                       AND prepay.prepay_invoice_id = zls.applied_from_trx_id
                                       AND prepay.prepay_line_number = zls.applied_from_line_id
                                       AND prepay.invoice_includes_prepay_flag = \'Y\'
                                       AND (prepay.discarded_flag IS NULL OR prepay.discarded_flag = \'N\')) THEN
                               0
                              ELSE
                               nvl(zls.tax_amt, 0)
                            END,
                            0)),
                 0)
        INTO l_total_tax_amount
        FROM zx_lines_summary zls
       WHERE zls.application_id = 200
         AND zls.entity_code = \'AP_INVOICES\'
         AND zls.event_class_code IN
             (\'STANDARD INVOICES\', \'PREPAYMENT INVOICES\', \'EXPENSE REPORTS\')
         AND zls.trx_id = cur_datas.invoice_id
         AND nvl(zls.reporting_only_flag, \'N\') = \'N\';
    
      SELECT nvl(SUM(nvl(ail.amount, 0)), 0)
        INTO l_ret_tax_amt
        FROM ap_invoice_lines_all ail
       WHERE ail.invoice_id = cur_datas.invoice_id
         AND line_type_lookup_code = \'RETROTAX\';
    
      l_total_tax_amount := l_total_tax_amount + l_ret_tax_amt;
    
     l_subtotal    := nvl(l_item_total, 0) + nvl(l_retained_total, 0) -
                               nvl(abs(l_prepaid_amount), 0) -
                               nvl(ap_invoices_pkg.get_amount_withheld(cur_datas.invoice_id),
                                   0);
     l_total := nvl(l_subtotal, 0) + nvl(l_total_tax_amount, 0) +
                               nvl(l_freight_total, 0) + nvl(l_misc_total, 0);

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-02
  • 2021-07-19
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-10
  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
  • 2021-06-25
相关资源
相似解决方案