DBA Data[Home] [Help]

APPS.IBY_PAYGROUP_PUB SQL Statements

The following lines contain the word 'select', 'insert', 'update' or 'delete':

Line: 76

     SELECT per.full_name
     INTO p_emp_full_name
     FROM per_all_people_f per
     WHERE per.person_id = p_person_id
      AND per.party_id = p_party_id
      AND sysdate BETWEEN per.effective_start_date
      AND per.effective_end_date;
Line: 232

      * Update: Credit memo handling is now performed at the calling
      * application itself.
      * - rameshsh, 3/29/2005
      */
     --printDocsInPmtTab(l_docsInPmtTab);
Line: 253

      * payments in the IBY_PAYMENTS_ALL table. Therefore, insert
      * the payments from the PLSQL table into the
      * IBY_PAYMENTS_ALL table.
      *
      * Central bank reporting could be implemented via a hook
      * that is expecting payments to be populated in
      * IBY_PAYMENTS_ALL table. Therefore, payments need to
      * inserted before performing central bank reporting as well.
      */
     IF (l_payreq_status <> REQ_STATUS_RETRY_PMT_CREAT AND
         l_payreq_status <> REQ_STATUS_USER_REVW_ERR)  THEN

         insertPayments(l_paymentTab);
Line: 270

          * Update the documents payable that are part of the created
          * payments with payment ids.
          *
          * This is normally done in performDBUpdates(..) call at
          * the end of this method. However, some customers might
          * want to do custom validations on documents that are
          * part of the created payments. Therefore, update the
          * documents with payment ids before the payment validation
          * call.
          *
          * We do this even before central bank reporting because
          * again the customer could potentially want to retrieve
          * documents that are part of the created payments in the
          * central bank reporting hook.
          */
         updateDocsWithPaymentID(l_docsInPmtTab);
Line: 292

      * Update the payments table with audit data before
      * calling central bank reporting or payment validations.
      *
      * This is because the customer could have implemented
      * custom central bank reporting or custom payment
      * validations that could depend upon the denormalized
      * payment attributes being present in the the payments
      * table.
      */

     /*
      * Along with the payment we insert the audit data for the
      * payment as well. These are denormalized data from payment
      * related tables like payee, payer, payee bank, payer bank
      * etc.
      *
      * This information is also used by the extract and format
      * logic.
      */
     auditPaymentData(l_paymentTab);
Line: 343

      * Therefore, update the payments before calling
      * payment validations.
      *
      * Fix for bug 5935493:
      *
      * After central bank reporting is completed,
      * the declare payments flag could be set on some/all
      * payments by the hook. Therefore, we need to
      * update the payments in IBY_PAYMENTS_ALL table
      * so that this flag is accessible for validation.
      */
     updatePayments(l_paymentTab);
Line: 414

      * The adjusted payments are read back and inserted into
      * IBY_PAYMENTS_LL table.
      *
      * This is a general hook that is called for all other
      * products except AP. For AP special hooks are called
      * below.
      */

     IF (l_ca_id <> 200) THEN

         /*
          * Only successful payments are passed to be passed to
          * to the calling application via the hook / callout.
          *
          * From the existing list of all payments, create new data
          * structures that only store successful payments. This
          * 'success only' list of payments will be passed to the
          * calling application.
          *
          * This method writes the payment data to global temp tables.
          */
         performPreHookProcess(l_ca_payreq_cd, l_ca_id, l_paymentTab,
             l_docsInPmtTab, l_hookPaymentTab, l_hookDocsInPmtTab);
Line: 595

      * Similarly, update the documents table by providing a
      * payment id to each document.
      */

     /*
      * Pass in the current ppr status. This is used
      * to determine the next status in some cases.
      */
     x_return_status := l_payreq_status;
Line: 605

     performDBUpdates(p_payment_request_id, l_rejection_level,
         l_review_pmts_flag, l_paymentTab,
         l_docsInPmtTab, l_all_pmts_success_flag,
         l_all_pmts_failed_flag, x_return_status,
         l_docErrorTab, l_docTokenTab
         );
Line: 617

      * have been inserted / updated. This is because you cannot
      * 'rollback' a business event once raised.
      */
     raiseBizEvents(p_payment_request_id, l_ca_payreq_cd, l_ca_id,
         l_rejection_level, l_review_pmts_flag,
         l_all_pmts_success_flag, l_all_pmts_failed_flag);
Line: 731

  * PLSQL table is used in inserting a row into the IBY_PAYMENTS_ALL
  * table.
  *
  * Since the IBY_PAYMENTS_ALL table does not contain a document id, a
  * separate data structure is needed to keep track of the documents
  * that are part of a payment. This information is tracked in the
  * docsInPaymentTabType table. The rows in docsInPaymentTabType are
  * used to update the rows in IBY_DOCS_PAYABLE_ALL table with
  * payment ids.
  *
  *            x_paymentTab                        x_docsInPmtTab
  *       (insert into IBY_PAYMENTS_ALL)          (update IBY_DOCS_PAYABLE)
  * /-------------------------------------\       /------------\
  * |Payment|Payment|..|Payment|Docs   |..|       |Payment|Doc |
  * |Id     |Profile|..|Amount |Payable|..|       |Id     |Id  |
  * |       |Id     |..|       |Count  |..|       |       |    |
  * |-------------------------------------|       |------------|
  * |   4000|     10|  |    550|      3|  |       |   4000| 501|
  * |       |       |  |       |       |  |       |   4000| 504|
  * |       |       |  |       |       |  |       |   4000| 505|
  * |-------|-------|--|-------|-------|--|       |-------|----|
  * |   4001|     10|  |1063.70|     19|  |       |   4001| 502|
  * |       |       |  |       |       |  |       |   4001| 509|
  * |       |       |  |       |       |  |       |   4001| 511|
  * |       |       |  |       |       |  |       |   4001| 523|
  * |       |       |  |       |       |  |       |     : |  : |
  * |-------|-------|--|-------|-------|--|       |-------|----|
  * |    :  |     : |  |    :  |     : |  |       |     : |  : |
  * \_______|_______|__|_______|_______|__/       \_______|____/
  *
  * Combining these two structures into one structure is messy
  * because you cannot directly use the combined data structure for
  * bulk updates.
  */

 /* these two are passed to calling app via hook */
 l_hookPaymentTab    IBY_PAYGROUP_PUB.hookPaymentTabType;
Line: 917

  * payment request. The select statement will order the documents
  * based on grouping criteria.
  *
  * As the grouping is operation is commutative, there is no
  * need to group the documents by any particular order (in
  * other words, grouping 1 followed by grouping 2, will lead
  * to the same results as grouping 2 followed by grouping 1).
  *
  * Important Note:
  * Always ensure that there is a corresponding order by
  * clause for each grouping criterion that you wish to use.
  * This is required in order to create minimum possible
  * payments from a given set of documents.
  *
  *
  * Populate legal entity ids for each of the created payments.
  * The legal entity id on the payment is a special attribute.
  * It is not a grouping rule, instead it has to be derived
  * from the internal bank account and populated.
  *
  */
 CURSOR c_documents(p_payment_request_id VARCHAR2)
 IS
 SELECT prq.call_app_pay_service_req_code,   -- Callers pay req id
        docs.document_payable_id,            -- Unique doc id asgn by IBY
        docs.calling_app_id,                 --| The caller
        docs.calling_app_doc_unique_ref1,    --| uses these
        docs.calling_app_doc_unique_ref2,    --| seven fields
        docs.calling_app_doc_unique_ref3,    --| to uniquely
        docs.calling_app_doc_unique_ref4,    --| identify
        docs.calling_app_doc_unique_ref5,    --| a document
        docs.pay_proc_trxn_type_code,        --| payable
        docs.payment_grouping_number,        -- Identifies related docs
        docs.payment_method_code,            -- Payment method
        docs.internal_bank_account_id,       -- Internal bank account id
        docs.external_bank_account_id,       -- External bank account id
        docs.payment_profile_id,             -- Payment profile id
        docs.org_id,
        docs.org_type,
        docs.payment_function,
        docs.ext_payee_id,                   -- Ext payee id (payee context)
        docs.payee_party_id,
        docs.party_site_id,
        docs.supplier_site_id,
        docs.remit_to_location_id,
        docs.amount_withheld,                -- Passed to hook for adjustmt
        ext_payee.bank_instruction1_code,    --|
        ext_payee.bank_instruction2_code,    --| These fields are
        ext_payee.payment_text_message1,     --| derived from the
        ext_payee.payment_text_message2,     --| payee.
        ext_payee.payment_text_message3,     --|
        docs.payment_currency_code,
        docs.payment_amount,
        docs.payment_date,
        docs.exclusive_payment_flag,
        docs.bank_charge_bearer,             -- Bank charge bearer
        docs.delivery_channel_code,          -- Delivery channel
        docs.settlement_priority,
        docs.remittance_message1,            -- Supplier message 1
        docs.remittance_message2,            -- Supplier message 2
        docs.remittance_message3,            -- Supplier message 3
        docs.unique_remittance_identifier,
        docs.uri_check_digit,
        docs.payment_reason_code,
        docs.payment_reason_comments,
        docs.payment_due_date,
        docs.discount_date,
        docs.payment_curr_discount_taken,
        docs.beneficiary_party,
        docs.address_source,                 --
        docs.employee_address_code,          -- Employee address
        docs.employee_person_id,             -- related fields
        docs.employee_address_id,            --
        docs.employee_payment_flag,
        pcr.group_by_remittance_message,
        pcr.group_by_bank_charge_bearer,
        pcr.group_by_delivery_channel,
        pcr.group_by_settle_priority_flag,
        pcr.group_by_payment_details_flag,
        DECODE(pcr.payment_details_length_limit, NULL,
            -1, pcr.payment_details_length_limit),
        pcr.payment_details_formula,
        pcr.group_by_max_documents_flag,     -- Max documents per payment flag
        pcr.max_documents_per_payment,       -- Max documents per payment value
        pcr.group_by_unique_remit_id_flag,
        pcr.group_by_payment_reason,
        pcr.group_by_due_date_flag,
        ppf.processing_type,
        ppf.declaration_option,
        ppf.dcl_only_foreign_curr_pmt_flag,
        ppf.declaration_curr_fx_rate_type,
        ppf.declaration_currency_code,
        ppf.declaration_threshold_amount,
        DECODE(prq.maximum_payment_amount, NULL, -1,
            prq.maximum_payment_amount),
        DECODE(prq.minimum_payment_amount, NULL, -1,
            prq.minimum_payment_amount),
        prq.allow_zero_payments_flag,
        pmt_mthd.support_bills_payable_flag,
        iba.account_owner_org_id,
	/*TPP-Start*/
        docs.inv_payee_party_id,
        docs.inv_party_site_id,
        docs.inv_supplier_site_id,
        docs.inv_beneficiary_party,
        docs.ext_inv_payee_id
	/*TPP-Start*/
 FROM IBY_DOCS_PAYABLE_ALL       docs,
      IBY_PMT_CREATION_RULES     pcr,
      IBY_PAYMENT_PROFILES       ppf,
      IBY_PAY_SERVICE_REQUESTS   prq,
      IBY_EXTERNAL_PAYEES_ALL    ext_payee,
      IBY_PAYMENT_METHODS_B      pmt_mthd,
      CE_BANK_ACCOUNTS           iba
 WHERE  prq.payment_service_request_id  = p_payment_request_id
 AND    docs.payment_service_request_id = prq.payment_service_request_id
 AND    docs.payment_profile_id         = ppf.payment_profile_id
 AND    ppf.system_profile_code         = pcr.system_profile_code(+)
 AND    docs.document_status            = DOC_STATUS_VALIDATED
 AND    docs.ext_payee_id               = ext_payee.ext_payee_id
 AND    docs.payment_method_code        = pmt_mthd.payment_method_code
 AND    docs.internal_bank_account_id   = iba.bank_account_id
 ORDER BY
        docs.exclusive_payment_flag,
        docs.org_id,
        docs.org_type,
        ext_payee.ext_payee_id,        -- \
        docs.payment_currency_code,    -- |
        docs.payment_method_code,      -- |
        docs.payment_profile_id,       -- |
        docs.payment_grouping_number,  -- |
        docs.internal_bank_account_id, -- | Ensure that the grouping
        docs.external_bank_account_id, -- | rules below follow the same
        docs.payment_function,         -- | ordering as this order by
        docs.payment_date,             -- | clause.
        docs.remit_to_location_id,     -- |
        docs.beneficiary_party,        -- |
        docs.address_source,           -- |
        docs.employee_address_code,    -- |
        docs.employee_person_id,       -- |
        docs.employee_address_id,      -- |
        docs.employee_payment_flag,    -- |
        docs.bank_charge_bearer,       -- |
        docs.delivery_channel_code,    -- | This order must be followed
        docs.settlement_priority,      -- | for creating minimum number
        docs.remittance_message1,      -- | of payments.
        docs.remittance_message2,      -- |
        docs.remittance_message3,      -- /
        docs.unique_remittance_identifier,
        docs.uri_check_digit,
        docs.payment_reason_code,
        docs.payment_reason_comments,
        docs.payment_due_date
        ;
Line: 1078

 SELECT
     iba.bank_account_id       int_bank_account,
     iba.account_owner_org_id  legal_entity_id
 FROM
     CE_BANK_ACCOUNTS iba
 ;
Line: 1099

        iby_disburse_submit_pub_pkg.delete_docspayTab;
Line: 1379

          * We will either insert this document into a new payment or
          * we will be inserting this document into the currently running
          * payment.
          *
          * In either case, we need to insert this doc into a payment.
          * So pre-populate the payment record with attributes of
          * this document. This is because the payment takes on the
          * attributes of it's constituent documents.
          *
          * Note: For user defined grouping rules, we will
          * have to populate the payment attribute only if
          * the user has turned on grouping by that attribute.
          */

         /* Only pre-fill hardcoded grouping rule attributes */
         l_paymentRec.payment_profile_id       := iby_disburse_submit_pub_pkg.docspayTab.payment_profile_id(l_trx_line_index);
Line: 1723

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1742

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1760

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1778

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1796

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1814

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1832

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1876

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1894

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1920

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 1963

                 insertDocIntoPayment(l_paymentRec, x_paymentTab,
                     l_calc_doc_detail, true, l_payment_id,
                     x_docsInPmtTab, l_docsInPmtRec,
                     l_docs_in_pmt_count);
Line: 1982

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 2000

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 2018

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 2036

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 2075

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 2098

             insertDocIntoPayment(l_paymentRec, x_paymentTab,
                 l_calc_doc_detail, true, l_payment_id,
                 x_docsInPmtTab, l_docsInPmtRec,
                 l_docs_in_pmt_count);
Line: 2156

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2181

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2208

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2235

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2266

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2299

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2329

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2356

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2382

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2410

                     insertDocIntoPayment(l_paymentRec, x_paymentTab,
                         l_calc_doc_detail, true, l_payment_id,
                         x_docsInPmtTab, l_docsInPmtRec,
                         l_docs_in_pmt_count);
Line: 2435

         insertDocIntoPayment(l_paymentRec, x_paymentTab,
             l_calc_doc_detail, false, l_payment_id,
             x_docsInPmtTab, l_docsInPmtRec,
             l_docs_in_pmt_count);
Line: 2546

     iby_disburse_submit_pub_pkg.delete_docspayTab;
Line: 2589

 |     insertDocIntoPayment
 |
 | PURPOSE:
 |     Inserts a given document into a currently running payment
 |     or into a new payment as per given flag.
 |
 |     This method is called by every grouping rule to add
 |     a given document into a current payment/new payment.
 |
 | PARAMETERS:
 |     IN
 |
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 | NOTES:
 |
 *---------------------------------------------------------------------*/
 PROCEDURE insertDocIntoPayment(
     x_paymentRec            IN OUT NOCOPY IBY_PAYMENTS_ALL%ROWTYPE,
     x_paymentTab            IN OUT NOCOPY paymentTabType,
     p_calcDocInfo           IN            VARCHAR2,
     p_newPaymentFlag        IN            BOOLEAN,
     x_currentPaymentId      IN OUT NOCOPY IBY_PAYMENTS_ALL.payment_id%TYPE,
     x_docsInPmtTab          IN OUT NOCOPY docsInPaymentTabType,
     x_docsInPmtRec          IN OUT NOCOPY docsInPaymentRecType,
     x_docsInPmtCount        IN OUT NOCOPY NUMBER
     )
 IS
 l_module_name    CONSTANT VARCHAR2(200) := G_PKG_NAME ||
                                                '.insertDocIntoPayment';
Line: 2634

      * table is updated with the details of this document
      * within this if-else block.
      *
      * We need to do this each time we enter this procedure
      * because this might well be the last document in
      * in the payment request, and this procedure may
      * not be called again for this payment request. So
      * the PLSQL payments table should always be up-to-date
      * when it exits this procedure.
      */
     IF (p_newPaymentFlag = true) THEN

         /*
          * This is a new payment; Get an id for this payment
Line: 2653

          * document as a constituent, and insert this record
          * into the PLSQL payments table.
          */
         x_paymentRec.payment_id              :=  x_currentPaymentId;
Line: 2669

         print_debuginfo(l_module_name,' Inserted document : '
             || x_docsInPmtRec.document_id || ' into new payment: '
             || x_currentPaymentId);
Line: 2675

          * doc, and insert the doc into the docs array.
          */
         x_docsInPmtRec.payment_id            := x_paymentRec.payment_id;
Line: 2691

          * initialize it by inserting a dummy record. This dummy
          * record will get overwritten below.
          */
         IF (x_paymentTab.COUNT = 0) THEN

             getNextPaymentID(x_currentPaymentID);
Line: 2707

              * Insert the first record into the table. This
              * is a dummy record.
              */
             x_paymentTab(x_paymentTab.COUNT + 1) := x_paymentRec;
Line: 2750

          * PLSQL payments table with the updated record.
          */
         x_paymentTab(x_paymentTab.COUNT) := x_paymentRec;
Line: 2754

         print_debuginfo(l_module_name, 'Inserted document : '
             || x_docsInPmtRec.document_id || ' into existing payment: '
             || x_currentPaymentId);
Line: 2760

          * doc, and insert the doc into the docs array.
          */
         x_docsInPmtRec.payment_id        := x_paymentRec.payment_id;
Line: 2769

 END insertDocIntoPayment;
Line: 2773

 |     insertPayments
 |
 | PURPOSE:
 |     Performs a bulk insert of all created payments from PLSQL
 |     table into IBY_PAYMENTS_ALL table.
 |
 | PARAMETERS:
 |     IN
 |
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 | NOTES:
 |
 *---------------------------------------------------------------------*/
  PROCEDURE insertPayments(
     p_paymentTab    IN paymentTabType
     )
 IS
 l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME || '.insertPayments';
Line: 2805

             || ' were found to insert into IBY_PAYMENTS_ALL table.'
             || ' Possible data corruption issue.');
Line: 2812

      * array. These column arrays will be used in the bulk insert.
      */
     FOR i in p_paymentTab.FIRST..p_paymentTab.LAST LOOP

         paymentTab.payment_id(i)
             := p_paymentTab(i).payment_id;
Line: 2870

         paymentTab.last_updated_by(i)
             := NVL(p_paymentTab(i).last_updated_by, fnd_global.user_id);
Line: 2872

         paymentTab.last_update_login(i)
             := NVL(p_paymentTab(i).last_update_login, fnd_global.user_id);
Line: 2874

         paymentTab.last_update_date(i)
             := NVL(p_paymentTab(i).last_update_date, sysdate);
Line: 3143

              SELECT vat_registration_num
              INTO l_tax_registration_num(i)
              FROM ap_supplier_sites_all
              WHERE vendor_site_id = p_paymentTab(i).supplier_site_id;
Line: 3152

                  SELECT asup.vat_registration_num
                  INTO l_tax_registration_num(i)
                  FROM ap_suppliers asup
	          ,    ap_supplier_sites_all asups
                  WHERE asups.vendor_site_id = p_paymentTab(i).supplier_site_id
	          AND   asup.vendor_id = asups.vendor_site_id;
Line: 3173

      * Bulk insert into IBY_PAYMENTS_ALL table using the
      * named columns syntax. This avoids any dependencies on
      * column order.
      */
     FORALL i in nvl(paymentTab.payment_id.FIRST,0) .. nvl(paymentTab.payment_id.LAST,-99)
     INSERT INTO IBY_PAYMENTS_ALL
             (
             payment_id,
             payment_method_code,
             payment_service_request_id,
             process_type,
             payment_status,
             payments_complete_flag,
             payment_function,
             payment_amount,
             payment_currency_code,
             bill_payable_flag,
             exclusive_payment_flag,
             separate_remit_advice_req_flag,
             internal_bank_account_id,
             org_id,
             org_type,
             legal_entity_id,
             declare_payment_flag,
             delivery_channel_code,
             ext_payee_id,
             payment_instruction_id,
             payment_profile_id,
             pregrouped_payment_flag,
             stop_confirmed_flag,
             stop_released_flag,
             stop_request_placed_flag,
             created_by,
             creation_date,
             last_updated_by,
             last_update_login,
             last_update_date,
             object_version_number,
             payee_party_id,
             party_site_id,
             supplier_site_id,
             payment_reason_code,
             payment_reason_comments,
             payment_date,
             anticipated_value_date,
             declaration_amount,
             declaration_currency_code,
             discount_amount_taken,
             payment_details,
             bank_charge_bearer,
             bank_charge_amount,
             settlement_priority,
             remittance_message1,
             remittance_message2,
             remittance_message3,
             payment_reference_number,
             paper_document_number,
             bank_assigned_ref_code,
             external_bank_account_id,
             unique_remittance_identifier,
             uri_check_digit,
             bank_instruction1_code,
             bank_instruction2_code,
             bank_instruction_details,
             payment_text_message1,
             payment_text_message2,
             payment_text_message3,
             maturity_date,
             payment_due_date,
             document_category_code,
             document_sequence_id,
             document_sequence_value,
             beneficiary_party,
             stop_confirmed_by,
             stop_confirm_date,
             stop_confirm_reason,
             stop_confirm_reference,
             stop_released_by,
             stop_release_date,
             stop_release_reason,
             stop_release_reference,
             stop_request_date,
             stop_request_placed_by,
             stop_request_reason,
             stop_request_reference,
             voided_by,
             void_date,
             void_reason,
             remit_to_location_id,
             completed_pmts_group_id,
             attribute_category,
             attribute1,
             attribute2,
             attribute3,
             attribute4,
             attribute5,
             attribute6,
             attribute7,
             attribute8,
             attribute9,
             attribute10,
             attribute11,
             attribute12,
             attribute13,
             attribute14,
             attribute15,
             ext_branch_number,
             ext_bank_number,
             ext_bank_account_name,
             ext_bank_account_number,
             ext_bank_account_type,
             ext_bank_account_iban_number,
             payee_name,
             payee_address1,
             payee_address2,
             payee_address3,
             payee_address4,
             payee_city,
             payee_postal_code,
             payee_state,
             payee_province,
             payee_county,
             payee_country,
             remit_advice_delivery_method,
             remit_advice_email,
             remit_advice_fax,
             address_source,
             employee_address_code,
             employee_person_id,
             employee_address_id,
             employee_payment_flag,
	     payee_tax_registration_num,
		ext_inv_payee_id ,
		inv_payee_party_id ,
		inv_party_site_id ,
		inv_supplier_site_id ,
		inv_beneficiary_party ,
		inv_payee_name ,
		inv_payee_address1 ,
		inv_payee_address2 ,
		inv_payee_address3 ,
		inv_payee_address4 ,
		inv_payee_city ,
		inv_payee_postal_code ,
		inv_payee_state ,
		inv_payee_province ,
		inv_payee_county ,
		inv_payee_country ,
		inv_payee_party_name ,
		inv_payee_le_reg_num,
		inv_payee_tax_reg_num,
		inv_payee_address_concat ,
		inv_beneficiary_name ,
		inv_payee_party_number ,
		inv_payee_alternate_name ,
		inv_payee_site_alt_name,
		inv_payee_supplier_number ,
		inv_payee_first_party_ref,
		ext_bnk_acct_ownr_inv_prty_id,
		ext_bnk_branch_inv_prty_id,
		ext_bnk_acct_ownr_inv_prty_nme,
		inv_payee_party_attr_cat,
		inv_payee_supplier_attr_cat,
		inv_payee_spplr_site_attr_cat,
		inv_payee_supplier_site_name ,
		inv_payee_spplr_site_alt_name,
		inv_payee_supplier_id
             )
         VALUES
             (
             paymentTab.payment_id(i),
             paymentTab.payment_method_code(i),
             paymentTab.payment_service_request_id(i),
             paymentTab.process_type(i),
             paymentTab.payment_status(i),
             paymentTab.payments_complete_flag(i),
             paymentTab.payment_function(i),
             paymentTab.payment_amount(i),
             paymentTab.payment_currency_code(i),
             paymentTab.bill_payable_flag(i),
             paymentTab.exclusive_payment_flag(i),
             paymentTab.sep_remit_advice_req_flag(i),
             paymentTab.internal_bank_account_id(i),
             paymentTab.org_id(i),
             paymentTab.org_type(i),
             paymentTab.legal_entity_id(i),
             paymentTab.declare_payment_flag(i),
             paymentTab.delivery_channel_code(i),
             paymentTab.ext_payee_id(i),
             paymentTab.payment_instruction_id(i),
             paymentTab.payment_profile_id(i),
             paymentTab.pregrouped_payment_flag(i),
             paymentTab.stop_confirmed_flag(i),
             paymentTab.stop_released_flag(i),
             paymentTab.stop_request_placed_flag(i),
             paymentTab.created_by(i),
             paymentTab.creation_date(i),
             paymentTab.last_updated_by(i),
             paymentTab.last_update_login(i),
             paymentTab.last_update_date(i),
             paymentTab.object_version_number(i),
             paymentTab.payee_party_id(i),
             paymentTab.party_site_id(i),
             paymentTab.supplier_site_id(i),
             paymentTab.payment_reason_code(i),
             paymentTab.payment_reason_comments(i),
             paymentTab.payment_date(i),
             paymentTab.anticipated_value_date(i),
             paymentTab.declaration_amount(i),
             paymentTab.declaration_currency_code(i),
             paymentTab.discount_amount_taken(i),
             paymentTab.payment_details(i),
             paymentTab.bank_charge_bearer(i),
             paymentTab.bank_charge_amount(i),
             paymentTab.settlement_priority(i),
             paymentTab.remittance_message1(i),
             paymentTab.remittance_message2(i),
             paymentTab.remittance_message3(i),
             paymentTab.payment_reference_number(i),
             paymentTab.paper_document_number(i),
             paymentTab.bank_assigned_ref_code(i),
             paymentTab.external_bank_account_id(i),
             paymentTab.unique_remittance_identifier(i),
             paymentTab.uri_check_digit(i),
             paymentTab.bank_instruction1_code(i),
             paymentTab.bank_instruction2_code(i),
             paymentTab.bank_instruction_details(i),
             paymentTab.payment_text_message1(i),
             paymentTab.payment_text_message2(i),
             paymentTab.payment_text_message3(i),
             paymentTab.maturity_date(i),
             paymentTab.payment_due_date(i),
             paymentTab.document_category_code(i),
             paymentTab.document_sequence_id(i),
             paymentTab.document_sequence_value(i),
             paymentTab.beneficiary_party(i),
             paymentTab.stop_confirmed_by(i),
             paymentTab.stop_confirm_date(i),
             paymentTab.stop_confirm_reason(i),
             paymentTab.stop_confirm_reference(i),
             paymentTab.stop_released_by(i),
             paymentTab.stop_release_date(i),
             paymentTab.stop_release_reason(i),
             paymentTab.stop_release_reference(i),
             paymentTab.stop_request_date(i),
             paymentTab.stop_request_placed_by(i),
             paymentTab.stop_request_reason(i),
             paymentTab.stop_request_reference(i),
             paymentTab.voided_by(i),
             paymentTab.void_date(i),
             paymentTab.void_reason(i),
             paymentTab.remit_to_location_id(i),
             paymentTab.completed_pmts_group_id(i),
             paymentTab.attribute_category(i),
             paymentTab.attribute1(i),
             paymentTab.attribute2(i),
             paymentTab.attribute3(i),
             paymentTab.attribute4(i),
             paymentTab.attribute5(i),
             paymentTab.attribute6(i),
             paymentTab.attribute7(i),
             paymentTab.attribute8(i),
             paymentTab.attribute9(i),
             paymentTab.attribute10(i),
             paymentTab.attribute11(i),
             paymentTab.attribute12(i),
             paymentTab.attribute13(i),
             paymentTab.attribute14(i),
             paymentTab.attribute15(i),
             paymentTab.ext_branch_number(i),
             paymentTab.ext_bank_number(i),
             paymentTab.ext_bank_account_name(i),
             paymentTab.ext_bank_account_number(i),
             paymentTab.ext_bank_account_type(i),
             paymentTab.ext_bank_account_iban_number(i),
             paymentTab.payee_name(i),
             paymentTab.payee_address1(i),
             paymentTab.payee_address2(i),
             paymentTab.payee_address3(i),
             paymentTab.payee_address4(i),
             paymentTab.payee_city(i),
             paymentTab.payee_postal_code(i),
             paymentTab.payee_state(i),
             paymentTab.payee_province(i),
             paymentTab.payee_county(i),
             paymentTab.payee_country(i),
             paymentTab.remit_advice_delivery_method(i),
             paymentTab.remit_advice_email(i),
             paymentTab.remit_advice_fax(i),
             paymentTab.address_source(i),
             paymentTab.employee_address_code(i),
             paymentTab.employee_person_id(i),
             paymentTab.employee_address_id(i),
             paymentTab.employee_payment_flag(i),
	     l_tax_registration_num(i),
paymentTab.ext_inv_payee_id(i),
paymentTab.inv_payee_party_id(i),
paymentTab.inv_party_site_id(i),
paymentTab.inv_supplier_site_id(i),
paymentTab.inv_beneficiary_party(i),
paymentTab.inv_payee_name(i),
paymentTab.inv_payee_address1(i),
paymentTab.inv_payee_address2(i),
paymentTab.inv_payee_address3(i),
paymentTab.inv_payee_address4(i),
paymentTab.inv_payee_city(i),
paymentTab.inv_payee_postal_code(i),
paymentTab.inv_payee_state(i),
paymentTab.inv_payee_province(i),
paymentTab.inv_payee_county(i),
paymentTab.inv_payee_country(i),
paymentTab.inv_payee_party_name(i),
paymentTab.inv_payee_le_reg_num(i),
paymentTab.inv_payee_tax_reg_num(i),
paymentTab.inv_payee_address_concat(i),
paymentTab.inv_beneficiary_name(i),
paymentTab.inv_payee_party_number(i),
paymentTab.inv_payee_alternate_name(i),
paymentTab.inv_payee_site_alt_name(i),
paymentTab.inv_payee_supplier_number(i),
paymentTab.inv_payee_first_party_ref(i),
paymentTab.ext_bnk_acct_ownr_inv_prty_id(i),
paymentTab.ext_bnk_branch_inv_prty_id(i),
paymentTab.ext_bnk_acct_ownr_inv_prty_nme(i),
paymentTab.inv_payee_party_attr_cat(i),
paymentTab.inv_payee_supplier_attr_cat(i),
paymentTab.inv_payee_spplr_site_attr_cat(i),
paymentTab.inv_payee_supplier_site_name(i),
paymenttab.inv_payee_spplr_site_alt_name(i),
paymenttab.inv_payee_supplier_id(i)

             );
Line: 3506

             delete_paymentTab;
Line: 3510

 END insertPayments;
Line: 3528

 PROCEDURE delete_paymentTab IS
 l_module_name     CONSTANT VARCHAR2(200) := G_PKG_NAME ||
                                       '.delete_paymentTab';
Line: 3534

             paymentTab.payment_id.delete;
Line: 3535

             paymentTab.payment_method_code.delete;
Line: 3536

             paymentTab.payment_service_request_id.delete;
Line: 3537

             paymentTab.process_type.delete;
Line: 3538

             paymentTab.payment_status.delete;
Line: 3539

             paymentTab.payments_complete_flag.delete;
Line: 3540

             paymentTab.payment_function.delete;
Line: 3541

             paymentTab.payment_amount.delete;
Line: 3542

             paymentTab.payment_currency_code.delete;
Line: 3543

             paymentTab.bill_payable_flag.delete;
Line: 3544

             paymentTab.exclusive_payment_flag.delete;
Line: 3545

             paymentTab.sep_remit_advice_req_flag.delete;
Line: 3546

             paymentTab.internal_bank_account_id.delete;
Line: 3547

             paymentTab.org_id.delete;
Line: 3548

             paymentTab.org_type.delete;
Line: 3549

             paymentTab.legal_entity_id.delete;
Line: 3550

             paymentTab.declare_payment_flag.delete;
Line: 3551

             paymentTab.delivery_channel_code.delete;
Line: 3552

             paymentTab.ext_payee_id.delete;
Line: 3553

             paymentTab.payment_instruction_id.delete;
Line: 3554

             paymentTab.payment_profile_id.delete;
Line: 3555

             paymentTab.pregrouped_payment_flag.delete;
Line: 3556

             paymentTab.stop_confirmed_flag.delete;
Line: 3557

             paymentTab.stop_released_flag.delete;
Line: 3558

             paymentTab.stop_request_placed_flag.delete;
Line: 3559

             paymentTab.created_by.delete;
Line: 3560

             paymentTab.creation_date.delete;
Line: 3561

             paymentTab.last_updated_by.delete;
Line: 3562

             paymentTab.last_update_login.delete;
Line: 3563

             paymentTab.last_update_date.delete;
Line: 3564

             paymentTab.object_version_number.delete;
Line: 3565

             paymentTab.payee_party_id.delete;
Line: 3566

             paymentTab.party_site_id.delete;
Line: 3567

             paymentTab.supplier_site_id.delete;
Line: 3568

             paymentTab.payment_reason_code.delete;
Line: 3569

             paymentTab.payment_reason_comments.delete;
Line: 3570

             paymentTab.payment_date.delete;
Line: 3571

             paymentTab.anticipated_value_date.delete;
Line: 3572

             paymentTab.declaration_amount.delete;
Line: 3573

             paymentTab.declaration_currency_code.delete;
Line: 3574

             paymentTab.discount_amount_taken.delete;
Line: 3575

             paymentTab.payment_details.delete;
Line: 3576

             paymentTab.bank_charge_bearer.delete;
Line: 3577

             paymentTab.bank_charge_amount.delete;
Line: 3578

             paymentTab.settlement_priority.delete;
Line: 3579

             paymentTab.remittance_message1.delete;
Line: 3580

             paymentTab.remittance_message2.delete;
Line: 3581

             paymentTab.remittance_message3.delete;
Line: 3582

             paymentTab.payment_reference_number.delete;
Line: 3583

             paymentTab.paper_document_number.delete;
Line: 3584

             paymentTab.bank_assigned_ref_code.delete;
Line: 3585

             paymentTab.external_bank_account_id.delete;
Line: 3586

             paymentTab.unique_remittance_identifier.delete;
Line: 3587

             paymentTab.uri_check_digit.delete;
Line: 3588

             paymentTab.bank_instruction1_code.delete;
Line: 3589

             paymentTab.bank_instruction2_code.delete;
Line: 3590

             paymentTab.bank_instruction_details.delete;
Line: 3591

             paymentTab.payment_text_message1.delete;
Line: 3592

             paymentTab.payment_text_message2.delete;
Line: 3593

             paymentTab.payment_text_message3.delete;
Line: 3594

             paymentTab.maturity_date.delete;
Line: 3595

             paymentTab.payment_due_date.delete;
Line: 3596

             paymentTab.document_category_code.delete;
Line: 3597

             paymentTab.document_sequence_id.delete;
Line: 3598

             paymentTab.document_sequence_value.delete;
Line: 3599

             paymentTab.beneficiary_party.delete;
Line: 3600

             paymentTab.stop_confirmed_by.delete;
Line: 3601

             paymentTab.stop_confirm_date.delete;
Line: 3602

             paymentTab.stop_confirm_reason.delete;
Line: 3603

             paymentTab.stop_confirm_reference.delete;
Line: 3604

             paymentTab.stop_released_by.delete;
Line: 3605

             paymentTab.stop_release_date.delete;
Line: 3606

             paymentTab.stop_release_reason.delete;
Line: 3607

             paymentTab.stop_release_reference.delete;
Line: 3608

             paymentTab.stop_request_date.delete;
Line: 3609

             paymentTab.stop_request_placed_by.delete;
Line: 3610

             paymentTab.stop_request_reason.delete;
Line: 3611

             paymentTab.stop_request_reference.delete;
Line: 3612

             paymentTab.voided_by.delete;
Line: 3613

             paymentTab.void_date.delete;
Line: 3614

             paymentTab.void_reason.delete;
Line: 3615

             paymentTab.remit_to_location_id.delete;
Line: 3616

             paymentTab.completed_pmts_group_id.delete;
Line: 3617

             paymentTab.attribute_category.delete;
Line: 3618

             paymentTab.attribute1.delete;
Line: 3619

             paymentTab.attribute2.delete;
Line: 3620

             paymentTab.attribute3.delete;
Line: 3621

             paymentTab.attribute4.delete;
Line: 3622

             paymentTab.attribute5.delete;
Line: 3623

             paymentTab.attribute6.delete;
Line: 3624

             paymentTab.attribute7.delete;
Line: 3625

             paymentTab.attribute8.delete;
Line: 3626

             paymentTab.attribute9.delete;
Line: 3627

             paymentTab.attribute10.delete;
Line: 3628

             paymentTab.attribute11.delete;
Line: 3629

             paymentTab.attribute12.delete;
Line: 3630

             paymentTab.attribute13.delete;
Line: 3631

             paymentTab.attribute14.delete;
Line: 3632

             paymentTab.attribute15.delete;
Line: 3633

             paymentTab.ext_branch_number.delete;
Line: 3634

             paymentTab.ext_bank_number.delete;
Line: 3635

             paymentTab.ext_bank_account_name.delete;
Line: 3636

             paymentTab.ext_bank_account_number.delete;
Line: 3637

             paymentTab.ext_bank_account_type.delete;
Line: 3638

             paymentTab.ext_bank_account_iban_number.delete;
Line: 3639

             paymentTab.payee_name.delete;
Line: 3640

             paymentTab.payee_address1.delete;
Line: 3641

             paymentTab.payee_address2.delete;
Line: 3642

             paymentTab.payee_address3.delete;
Line: 3643

             paymentTab.payee_address4.delete;
Line: 3644

             paymentTab.payee_city.delete;
Line: 3645

             paymentTab.payee_postal_code.delete;
Line: 3646

             paymentTab.payee_state.delete;
Line: 3647

             paymentTab.payee_province.delete;
Line: 3648

             paymentTab.payee_county.delete;
Line: 3649

             paymentTab.payee_country.delete;
Line: 3650

             paymentTab.remit_advice_delivery_method.delete;
Line: 3651

             paymentTab.remit_advice_email.delete;
Line: 3652

             paymentTab.remit_advice_fax.delete;
Line: 3653

             paymentTab.address_source.delete;
Line: 3654

             paymentTab.employee_address_code.delete;
Line: 3655

             paymentTab.employee_person_id.delete;
Line: 3656

             paymentTab.employee_address_id.delete;
Line: 3657

             paymentTab.employee_payment_flag.delete;
Line: 3658

	        paymentTab.inv_payee_party_id.delete;
Line: 3659

                paymentTab.inv_party_site_id.delete;
Line: 3660

                paymentTab.inv_supplier_site_id.delete;
Line: 3661

                paymentTab.inv_beneficiary_party.delete;
Line: 3662

                paymentTab.ext_inv_payee_id.delete;
Line: 3663

		paymentTab.inv_payee_name.delete;
Line: 3664

		paymentTab.inv_payee_address1.delete;
Line: 3665

		paymentTab.inv_payee_address2.delete;
Line: 3666

		paymentTab.inv_payee_address3.delete;
Line: 3667

		paymentTab.inv_payee_address4.delete;
Line: 3668

		paymentTab.inv_payee_city.delete;
Line: 3669

		paymentTab.inv_payee_postal_code.delete;
Line: 3670

		paymentTab.inv_payee_state.delete;
Line: 3671

		paymentTab.inv_payee_province.delete;
Line: 3672

		paymentTab.inv_payee_county.delete;
Line: 3673

		paymentTab.inv_payee_country.delete;
Line: 3674

		paymentTab.inv_payee_party_name.delete;
Line: 3675

		paymentTab.inv_payee_le_reg_num.delete;
Line: 3676

		paymentTab.inv_payee_tax_reg_num.delete;
Line: 3677

		paymentTab.inv_payee_address_concat.delete;
Line: 3678

		paymentTab.inv_beneficiary_name.delete;
Line: 3679

		paymentTab.inv_payee_party_number.delete;
Line: 3680

		paymentTab.inv_payee_alternate_name.delete;
Line: 3681

		paymentTab.inv_payee_site_alt_name.delete;
Line: 3682

		paymentTab.inv_payee_supplier_number.delete;
Line: 3683

		paymentTab.inv_payee_first_party_ref.delete;
Line: 3684

		paymentTab.ext_bnk_acct_ownr_inv_prty_id.delete;
Line: 3685

		paymentTab.ext_bnk_branch_inv_prty_id.delete;
Line: 3686

		paymentTab.ext_bnk_acct_ownr_inv_prty_nme.delete;
Line: 3687

		paymentTab.inv_payee_party_attr_cat.delete;
Line: 3688

		paymentTab.inv_payee_supplier_attr_cat.delete;
Line: 3689

		paymentTab.inv_payee_spplr_site_attr_cat.delete;
Line: 3690

		paymentTab.inv_payee_supplier_site_name.delete;
Line: 3691

		paymentTab.inv_payee_spplr_site_alt_name.delete;
Line: 3692

		paymentTab.inv_payee_supplier_id.delete;
Line: 3696

 END delete_paymentTab;
Line: 3700

 |     updatePayments
 |
 | PURPOSE:
 |     Performs an update of all created payments from PLSQL
 |     table into IBY_PAYMENTS_ALL table.
 |
 |     The created payments have already been inserted into
 |     IBY_PAYMENTS_ALL after grouping. So we only need to update
 |     certain fields of the payment that have been changed
 |     after the grouping was performed.
 |
 | PARAMETERS:
 |     IN
 |
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 | NOTES:
 |
 *---------------------------------------------------------------------*/
 PROCEDURE updatePayments(
     p_paymentTab    IN paymentTabType
     )
 IS
 l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME || '.updatePayments';
Line: 3736

             || ' were found to update IBY_PAYMENTS_ALL table.');
Line: 3742

         UPDATE
             IBY_PAYMENTS_ALL
         SET
             payment_status       = p_paymentTab(i).payment_status,
             payment_amount       = p_paymentTab(i).payment_amount,
	     discount_amount_taken = p_paymentTab(i).discount_amount_taken,
             declare_payment_flag = p_paymentTab(i).declare_payment_flag,
             declaration_amount   = p_paymentTab(i).declaration_amount,
             bank_charge_amount   = p_paymentTab(i).bank_charge_amount,
             separate_remit_advice_req_flag
                                  = p_paymentTab(i).
                                        separate_remit_advice_req_flag
         WHERE
             payment_id = p_paymentTab(i).payment_id
         ;
Line: 3762

 END updatePayments;
Line: 3791

     SELECT IBY_PAYMENTS_ALL_S.nextval INTO x_paymentID
         FROM DUAL;
Line: 3798

 |     updateDocsWithPaymentID
 |
 | PURPOSE:
 |     Updates individual documents in IBY_DOCS_PAYABLE_ALL table
 |     with payment ids from given PLSQL table.
 |
 | PARAMETERS:
 |     IN
 |     p_docsInPmtTab -
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 | NOTES:
 |
 *---------------------------------------------------------------------*/
 PROCEDURE updateDocsWithPaymentID(
     p_docsInPmtTab  IN docsInPaymentTabType
     )
 IS
 l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME ||
                                             '.updateDocsWithPaymentID';
Line: 3830

             || 'payments/documents provided to update '
             || 'IBY_DOCS_PAYABLE_ALL table. Possible data '
             || 'corruption issue.');
Line: 3837

      * Update the documents. We cannot use bulk update here
      * because the bulk update syntax does not allow us to
      * reference individual fields of the PL/SQL record.
      *
      * By default, set the formatting payment it for a
      * document same as it's payment id; the payment
Line: 3843

      * instruction creation program will update the
      * formatting payment id for overflow documents.
      *
      * TBD: Is there any way to optimize this update?
      */
     FOR i in p_docsInPmtTab.FIRST..p_docsInPmtTab.LAST LOOP

         print_debuginfo(l_module_name, 'Payment: '
             || p_docsInPmtTab(i).payment_id || ', document: '
             || p_docsInPmtTab(i).document_id);
Line: 3854

         UPDATE
             IBY_DOCS_PAYABLE_ALL
         SET
             payment_id            = p_docsInPmtTab(i).payment_id,
             formatting_payment_id = p_docsInPmtTab(i).payment_id,
             document_status       = p_docsInPmtTab(i).document_status,

             /*
              * Document payment amount might have gotten
              * changed during credit memo handling. So we
              * need to update document amount from PLSQL
              * table.
              */
             payment_amount       = p_docsInPmtTab(i).document_amount,
	     payment_curr_discount_taken = p_docsInPmtTab(i).pmt_curr_discount,

             /*
              * Bank charge amount and amount withheld might have
              * been supplied by external hook.
              */
             amount_withheld       = p_docsInPmtTab(i).amount_withheld,

             /*
              * Fix for bug 4405981:
              *
              * The straight through flag should be set to 'N',
              * if the document was rejected / required manual
              * intervention.
              */
             straight_through_flag =
                    DECODE(
                           p_docsInPmtTab(i).document_status,
                           DOC_STATUS_CA_FAILED,      'N',
                           DOC_STATUS_RELN_FAIL,      'N',
                           DOC_STATUS_FAIL_BY_REJLVL, 'N',
                           DOC_STATUS_PAY_VAL_FAIL,   'N',
                           'Y'
                           )
         WHERE
             document_payable_id   = p_docsInPmtTab(i).document_id
         ;
Line: 3900

 END updateDocsWithPaymentID;
Line: 4440

                  * an error record and insert this record
                  * into the errors table.
                  */
               IBY_BUILD_UTILS_PKG.createPmtErrorRecord(
                     x_paymentTab(i).payment_id,
                     x_paymentTab(i).payment_status,
                     l_error_code,
                     FND_MESSAGE.get,
                     l_doc_err_rec
                     );
Line: 4451

               IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                     l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 4496

                  * an error record and insert this record
                  * into the errors table.
                  */
                 IBY_BUILD_UTILS_PKG.createPmtErrorRecord(
                     x_paymentTab(i).payment_id,
                     x_paymentTab(i).payment_status,
                     l_error_code,
                     FND_MESSAGE.get,
                     l_doc_err_rec
                     );
Line: 4507

                 IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                     l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 4553

                  * an error record and insert this record
                  * into the errors table.
                  */
                 IBY_BUILD_UTILS_PKG.createPmtErrorRecord(
                     x_paymentTab(i).payment_id,
                     x_paymentTab(i).payment_status,
                     l_error_code,
                     FND_MESSAGE.get,
                     l_doc_err_rec
                     );
Line: 4564

                 IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                     l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 4593

                  * an error record and insert this record
                  * into the errors table.
                  */
                 IBY_BUILD_UTILS_PKG.createPmtErrorRecord(
                     x_paymentTab(i).payment_id,
                     x_paymentTab(i).payment_status,
                     l_error_code,
                     FND_MESSAGE.get,
                     l_doc_err_rec
                     );
Line: 4604

                 IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                     l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 4628

             SELECT
                 min_check_amount,
                 max_check_amount
             INTO
                 l_ce_min_pmt_ctrl,
                 l_ce_max_pmt_ctrl
             FROM
                 CE_BANK_ACCOUNTS
             WHERE
                 bank_account_id =  x_paymentTab(i).internal_bank_account_id
             ;
Line: 4690

                  * an error record and insert this record
                  * into the errors table.
                  */
                 IBY_BUILD_UTILS_PKG.createPmtErrorRecord(
                     x_paymentTab(i).payment_id,
                     x_paymentTab(i).payment_status,
                     l_error_code,
                     FND_MESSAGE.get,
                     l_doc_err_rec
                     );
Line: 4701

                 IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                     l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 4751

                  * an error record and insert this record
                  * into the errors table.
                  */
                 IBY_BUILD_UTILS_PKG.createPmtErrorRecord(
                     x_paymentTab(i).payment_id,
                     x_paymentTab(i).payment_status,
                     l_error_code,
                     FND_MESSAGE.get,
                     l_doc_err_rec
                     );
Line: 4762

                 IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                     l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 4947

                                          * insert this record into
                                          * the errors table.
                                          */
                                         IBY_BUILD_UTILS_PKG.createErrorRecord(
                                             TRXN_TYPE_PMT,
                                             x_paymentTab(k).payment_id,
                                             x_paymentTab(k).payment_status,
                                             NULL,
                                             x_paymentTab(k).payment_id,
                                             NULL,
                                             NULL,
                                             NULL,
                                             NULL,
                                             NULL,
                                             l_doc_err_rec,
                                             x_errTokenTab
                                             );
Line: 4966

                                             insertIntoErrorTable(
                                                 l_doc_err_rec, x_docErrorTab,
                                                 x_errTokenTab);
Line: 4985

                                          * insert this record into
                                          * the errors table.
                                          */
                                         IBY_BUILD_UTILS_PKG.createErrorRecord(
                                             TRXN_TYPE_PMT,
                                             x_paymentTab(i).payment_id,
                                             x_paymentTab(i).payment_status,
                                             NULL,
                                             x_paymentTab(i).payment_id,
                                             NULL,
                                             NULL,
                                             NULL,
                                             NULL,
                                             NULL,
                                             l_doc_err_rec,
                                             x_errTokenTab
                                             );
Line: 5004

                                             insertIntoErrorTable(
                                                 l_doc_err_rec, x_docErrorTab,
                                                 x_errTokenTab);
Line: 5044

 |     Inserts all successfuly validated payments into
 |     IBY_HOOK_PAYMENTS_TEMP. This is a temporary table that the
 |     calling app can access to see what payments have been
 |     created. The calling app can also update the payments / fail
 |     the payments in the temporary table, and the payment creation
 |     program will update it's payments accordingly.
 |
 | PARAMETERS:
 |     IN
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 | NOTES:
 |
 *---------------------------------------------------------------------*/
 PROCEDURE performPreHookProcess(
     p_cap_payreq_cd     IN            VARCHAR2,
     p_cap_id            IN            NUMBER,
     x_paymentTab        IN OUT NOCOPY paymentTabType,
     x_docsInPmtTab      IN OUT NOCOPY docsInPaymentTabType,
     x_hookPaymentTab    IN OUT NOCOPY hookPaymentTabType,
     x_hookDocsInPmtTab  IN OUT NOCOPY hookDocsInPaymentTabType
     )
 IS

 l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME || '.performPreHookProcess';
Line: 5099

 l_last_updated_bys                t_last_updated_by;
Line: 5100

 l_last_update_dates               t_last_update_date;
Line: 5101

 l_last_update_logins              t_last_update_login;
Line: 5184

     IBY_HOOK_DOCS_IN_PMT_T.last_updated_by%TYPE
     INDEX BY BINARY_INTEGER;
Line: 5187

     IBY_HOOK_DOCS_IN_PMT_T.last_update_date%TYPE
     INDEX BY BINARY_INTEGER;
Line: 5190

     IBY_HOOK_DOCS_IN_PMT_T.last_update_login%TYPE
     INDEX BY BINARY_INTEGER;
Line: 5222

 l_last_updated_by                  t_last_updt_by;
Line: 5223

 l_last_update_date                 t_last_updt_date;
Line: 5224

 l_last_update_login                t_last_updt_login;
Line: 5236

     delete_paymentTab;
Line: 5286

             paymentTab.last_updated_by(l_succPayIndx) :=
                 x_paymentTab(i).last_updated_by;
Line: 5288

             paymentTab.last_update_date(l_succPayIndx) :=
                 x_paymentTab(i).last_update_date;
Line: 5290

             paymentTab.last_update_login(l_succPayIndx) :=
                 x_paymentTab(i).last_update_login;
Line: 5407

      * First delete any existing records in these
      * temp tables so that they do not interfere with
      * our processing.
      */
     print_debuginfo(l_module_name, 'Deleting existing records in '
         || 'hook tables .. ');
Line: 5413

     DELETE IBY_HOOK_DOCS_IN_PMT_T;
Line: 5414

     DELETE IBY_HOOK_PAYMENTS_T;
Line: 5420

      * These arrays will be used in the bulk insert.
      */
     IF (x_hookDocsInPmtTab.COUNT > 0) THEN
     FOR i in x_hookDocsInPmtTab.FIRST..x_hookDocsInPmtTab.LAST LOOP

         l_payment_id(i)
             := x_hookDocsInPmtTab(i).payment_id;
Line: 5477

         l_last_updated_by(i)
             := NVL(x_hookDocsInPmtTab(i).last_updated_by, fnd_global.user_id);
Line: 5479

         l_last_update_date(i)
             := NVL(x_hookDocsInPmtTab(i).last_update_date, sysdate);
Line: 5481

         l_last_update_login(i)
             := NVL(x_hookDocsInPmtTab(i).last_update_login,
                    fnd_global.user_id);
Line: 5491

     /* insert documents */
     /*
      * Bulk insert records into IBY_HOOK_DOCS_IN_PMT_T using named
      * columns. This will avoid any dependency in column order.
      */
     IF (x_hookDocsInPmtTab.COUNT > 0) THEN
     FORALL i in x_hookDocsInPmtTab.FIRST..x_hookDocsInPmtTab.LAST
         INSERT INTO IBY_HOOK_DOCS_IN_PMT_T
             (
             payment_id,
             document_payable_id,
             calling_app_id,
             calling_app_doc_unique_ref1,
             calling_app_doc_unique_ref2,
             calling_app_doc_unique_ref3,
             calling_app_doc_unique_ref4,
             calling_app_doc_unique_ref5,
             document_amount,
             document_currency_code,
             amount_withheld,
             dont_pay_flag,
             dont_pay_reason_code,
             dont_pay_description,
             pay_proc_trxn_type_code,
             internal_bank_account_id,
             ext_payee_id,
             payee_party_id,
             party_site_id,
             supplier_site_id,
             org_id,
             org_type,
             external_bank_account_id,
             payment_curr_discount_taken,
             created_by,
             creation_date,
             last_updated_by,
             last_update_date,
             last_update_login,
             object_version_number
             )
         VALUES
             (
             l_payment_id(i),
             l_document_payable_id(i),
             l_calling_app_id(i),
             l_calling_app_doc_unique_ref1(i),
             l_calling_app_doc_unique_ref2(i),
             l_calling_app_doc_unique_ref3(i),
             l_calling_app_doc_unique_ref4(i),
             l_calling_app_doc_unique_ref5(i),
             l_document_amount(i),
             l_document_currency_code(i),
             l_amount_withheld(i),
             l_dont_pay_flag(i),
             l_dont_pay_reason_code(i),
             l_dont_pay_description(i),
             l_pay_proc_trxn_type_code(i),
             l_internal_bank_account_id(i),
             l_ext_payee_id(i),
             l_payee_party_id(i),
             l_party_site_id(i),
             l_supplier_site_id(i),
             l_org_id(i),
             l_org_type(i),
             l_external_bank_account_id(i),
             l_payment_curr_discount_taken(i),
             l_created_by(i),
             l_creation_date(i),
             l_last_updated_by(i),
             l_last_update_date(i),
             l_last_update_login(i),
             l_object_version_number(i)
             )
             ;
Line: 5568

      * Bulk insert records into IBY_HOOK_PAYMENTS_T using named
      * columns. This will avoid any dependency in column order.
      */

--     FOR i in paymentTab.calling_app_id.FIRST .. paymentTab.calling_app_id.LAST

     FORALL i in paymentTab.calling_app_id.FIRST .. paymentTab.calling_app_id.LAST
         INSERT INTO IBY_HOOK_PAYMENTS_T
             (
             calling_app_id,
             call_app_pay_service_req_code,
             payment_service_request_id,
             payment_id,
             payment_amount,
             payment_currency_code,
             dont_pay_flag,
             dont_pay_reason_code,
             dont_pay_description,
             internal_bank_account_id,
             ext_payee_id,
             payee_party_id,
             party_site_id,
             supplier_site_id,
             org_id,
             org_type,
             external_bank_account_id,
             discount_amount_taken,
             payment_date,
             bank_charge_amount,
             created_by,
             creation_date,
             last_updated_by,
             last_update_date,
             last_update_login,
             object_version_number
             )
             VALUES
             (
             paymentTab.calling_app_id(i),
             paymentTab.call_app_pay_service_req_cd(i),
             paymentTab.payment_service_request_id(i),
             paymentTab.payment_id(i),
             paymentTab.payment_amount(i),
             paymentTab.payment_currency_code(i),
             paymentTab.dont_pay_flg(i),
             paymentTab.dont_pay_reason_cd(i),
             paymentTab.dont_pay_desc(i),
             paymentTab.internal_bank_account_id(i),
             paymentTab.ext_payee_id(i),
             paymentTab.payee_party_id(i),
             paymentTab.party_site_id(i),
             paymentTab.supplier_site_id(i),
             paymentTab.org_id(i),
             paymentTab.org_type(i),
             paymentTab.external_bank_account_id(i),
             paymentTab.discount_amount_taken(i),
             paymentTab.payment_date(i),
             paymentTab.bank_charge_amount(i),
             paymentTab.created_by(i),
             paymentTab.creation_date(i),
             paymentTab.last_updated_by(i),
             paymentTab.last_update_date(i),
             paymentTab.last_update_login(i),
             paymentTab.object_version_number(i)
             );
Line: 5663

         || ' were inserted into global temp tables.'
         );
Line: 5783

         l_preHookPaymentTab(l_preHook_cntr).last_updated_by
         := PaymentTab.last_updated_by(i);
Line: 5785

         l_preHookPaymentTab(l_preHook_cntr).last_update_date
         := PaymentTab.last_update_date(i);
Line: 5787

         l_preHookPaymentTab(l_preHook_cntr).last_update_login
         := PaymentTab.last_update_login(i);
Line: 5805

      * tables. The calling app might have updated them.
      */
     getAdjustedPaymentData(x_hookPaymentTab, x_hookDocsInPmtTab);
Line: 5980

      * Update our existing payments and documents data structures
      * with the values from the hook - the external app may have adjusted
      * some payment amounts for bank charges, tax withholding etc.
      *
      * These must be reflected into our existing data structures before
      * we update the documents and payments tables with them.
      */

     /* update payments */
     FOR i in x_hookPaymentTab.FIRST ..  x_hookPaymentTab.LAST LOOP

         FOR j in x_paymentTab.FIRST ..  x_paymentTab.LAST LOOP

             IF (x_hookPaymentTab(i).payment_id = x_paymentTab(j).payment_id)
                 THEN

                 /*
                  * Copy from 'hook payments' array to original
                  * payments array.
                  */
                 IF (x_paymentTab(j).payment_amount <>
                     x_hookPaymentTab(i).payment_amount) THEN

                     print_debuginfo(l_module_name, 'Amount for payment '
                         || x_hookPaymentTab(i).payment_id
                         || ' was changed by calling app'
                         || ' from '  || x_paymentTab(j).payment_amount
                         || ' to ' || x_hookPaymentTab(i).payment_amount
                         );
Line: 6017

                  * amount via the hook, update the bank charge
                  * amount attribute on the payment to reflect this.
                  */
                 IF (x_paymentTab(j).bank_charge_amount <>
                     x_hookPaymentTab(i).bank_charge_amount) THEN

                     print_debuginfo(l_module_name, 'Bank charge amount '
                         || 'for payment '
                         || x_hookPaymentTab(i).payment_id
                         || ' was changed by calling app'
                         || ' from '  || x_paymentTab(j).bank_charge_amount
                         || ' to ' || x_hookPaymentTab(i).bank_charge_amount
                         );
Line: 6038

		  * amount via the hook, update the discount
		  * amount attribute on the payment to reflect this.
		  */
		 IF (x_paymentTab(j).discount_amount_taken <>
		     x_hookPaymentTab(i).discount_amount_taken) THEN

		     print_debuginfo(l_module_name, 'Discount Amount Taken '
		 	  || 'for payment '
		 	  || x_hookPaymentTab(i).payment_id
		 	  || ' was changed by calling app'
		 	  || ' from '  || x_paymentTab(j).discount_amount_taken
		 	  || ' to ' || x_hookPaymentTab(i).discount_amount_taken
		 	  );
Line: 6070

                      * an error record and insert this record
                      * into the errors table.
                      */
                     IBY_BUILD_UTILS_PKG.createErrorRecord(
                         TRXN_TYPE_PMT,
                         x_paymentTab(j).payment_id,
                         x_paymentTab(j).payment_status,
                         NULL,
                         x_paymentTab(j).payment_id,
                         NULL,
                         NULL,
                         NULL,
                         NULL,
                         NULL,
                         l_doc_err_rec,
                         x_errTokenTab
                         );
Line: 6088

                 IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                     l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 6105

     /* update documents */
     IF (x_hookDocsInPmtTab.COUNT > 0) THEN
     FOR i in x_hookDocsInPmtTab.FIRST ..  x_hookDocsInPmtTab.LAST LOOP

         FOR j in x_docsInPmtTab.FIRST ..  x_docsInPmtTab.LAST LOOP

             IF (x_hookDocsInPmtTab(i).document_payable_id =
                 x_docsInPmtTab(j).document_id)
                 THEN

                 /*
                  * Copy from 'hook documents' array to original
                  * documents array.
                  */
                 IF (x_docsInPmtTab(j).document_amount <>
                     x_hookDocsInPmtTab(i).document_amount) THEN

                     print_debuginfo(l_module_name, 'Amount for document '
                         || x_hookDocsInPmtTab(i).document_payable_id
                         || ' was changed by calling app'
                         || ' from ' || x_docsInPmtTab(j).document_amount
                         ||  ' to '  || x_hookDocsInPmtTab(i).document_amount
                         );
Line: 6186

                     IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                         l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 6343

                             IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                                 l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 6434

     l_sql_string := 'SELECT ' || p_pmtDetailsFormula || ' FROM '
                         || 'IBY_DOCS_PAYABLE_ALL WHERE '
                         || 'document_payable_id = :bind_var';
Line: 6517

         SELECT
             fnd.application_short_name
         INTO
             l_app_short_name
         FROM
             FND_APPLICATION fnd,
             IBY_PAY_SERVICE_REQUESTS req
         WHERE
             fnd.application_id             = req.calling_app_id AND
             req.payment_service_request_id = p_payreq_id
         ;
Line: 6624

 |     Reads the data updated in the global temp tables by the calling app.
 |     The calling app would have updated the data when the external
 |     application hook was called. This method reads in the updated
 |     data.
 |
 | PARAMETERS:
 |     IN
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 | NOTES:
 |
 *---------------------------------------------------------------------*/
 PROCEDURE getAdjustedPaymentData(
     x_hookPaymentTab      IN OUT NOCOPY hookPaymentTabType,
     x_hookDocsInPmtTab    IN OUT NOCOPY hookDocsInPaymentTabType
     )
 IS

 l_module_name  CONSTANT VARCHAR2(200) := G_PKG_NAME ||
                                              '.getAdjustedPaymentData';
Line: 6715

     TYPE t_last_updated_by IS TABLE OF
     IBY_HOOK_PAYMENTS_T.last_updated_by%TYPE
     INDEX BY BINARY_INTEGER;
Line: 6718

     TYPE t_last_update_date IS TABLE OF
     IBY_HOOK_PAYMENTS_T.last_update_date%TYPE
     INDEX BY BINARY_INTEGER;
Line: 6721

     TYPE t_last_update_login IS TABLE OF
     IBY_HOOK_PAYMENTS_T.last_update_login%TYPE
     INDEX BY BINARY_INTEGER;
Line: 6750

    l_last_updated_by                         t_last_updated_by;
Line: 6751

    l_last_update_date                        t_last_update_date;
Line: 6752

    l_last_update_login                       t_last_update_login;
Line: 6759

 SELECT
     calling_app_id,
     call_app_pay_service_req_code,
     payment_service_request_id,
     payment_id,
     payment_amount,
     payment_currency_code,
     dont_pay_flag,
     dont_pay_reason_code,
     dont_pay_description,
     internal_bank_account_id,
     ext_payee_id,
     payee_party_id,
     party_site_id,
     supplier_site_id,
     org_id,
     org_type,
     external_bank_account_id,
     discount_amount_taken,
     payment_date,
     bank_charge_amount,
     created_by,
     creation_date,
     last_updated_by,
     last_update_date,
     last_update_login,
     object_version_number
 FROM IBY_HOOK_PAYMENTS_T;
Line: 6866

     TYPE ty_last_updated_by IS TABLE OF
     IBY_HOOK_DOCS_IN_PMT_T.last_updated_by%TYPE
     INDEX BY BINARY_INTEGER;
Line: 6869

     TYPE ty_last_update_date IS TABLE OF
     IBY_HOOK_DOCS_IN_PMT_T.last_update_date%TYPE
     INDEX BY BINARY_INTEGER;
Line: 6872

     TYPE ty_last_update_login IS TABLE OF
     IBY_HOOK_DOCS_IN_PMT_T.last_update_login%TYPE
     INDEX BY BINARY_INTEGER;
Line: 6906

    ll_last_updated_by                      ty_last_updated_by;
Line: 6907

    ll_last_update_date                     ty_last_update_date;
Line: 6908

    ll_last_update_login                    ty_last_update_login;
Line: 6915

 SELECT
     payment_id,
     document_payable_id,
     calling_app_id,
     calling_app_doc_unique_ref1,
     calling_app_doc_unique_ref2,
     calling_app_doc_unique_ref3,
     calling_app_doc_unique_ref4,
     calling_app_doc_unique_ref5,
     document_amount,
     document_currency_code,
     amount_withheld,
     dont_pay_flag,
     dont_pay_reason_code,
     dont_pay_description,
     pay_proc_trxn_type_code,
     internal_bank_account_id,
     ext_payee_id,
     payee_party_id,
     party_site_id,
     supplier_site_id,
     org_id,
     org_type,
     external_bank_account_id,
     payment_curr_discount_taken,
     created_by,
     creation_date,
     last_updated_by,
     last_update_date,
     last_update_login,
     object_version_number
 FROM IBY_HOOK_DOCS_IN_PMT_T
 ORDER BY document_payable_id;
Line: 6982

         l_last_updated_by,
         l_last_update_date,
         l_last_update_login,
         l_object_version_number
         ;
Line: 7035

             x_hookPaymentTab(i).last_updated_by :=
                 l_last_updated_by(i);
Line: 7037

             x_hookPaymentTab(i).last_update_date :=
                 l_last_update_date(i);
Line: 7039

             x_hookPaymentTab(i).last_update_login :=
                 l_last_update_login(i);
Line: 7074

         ll_last_updated_by,
         ll_last_update_date,
         ll_last_update_login,
         ll_object_version_number
         ;
Line: 7135

         x_hookDocsInPmtTab(i).last_updated_by :=
             ll_last_updated_by(i);
Line: 7137

         x_hookDocsInPmtTab(i).last_update_date :=
             ll_last_update_date(i);
Line: 7139

         x_hookDocsInPmtTab(i).last_update_login :=
             ll_last_update_login(i);
Line: 7233

             IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                 l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 7289

 SELECT
     advice.system_profile_code,
     DECODE(advice.document_count_limit, NULL, -1,
         advice.document_count_limit),
     DECODE(advice.payment_details_length_limit, NULL, -1,
         advice.payment_details_length_limit)
 FROM
     IBY_REMIT_ADVICE_SETUP advice
 WHERE
     remittance_advice_format_code IS NOT NULL;
Line: 7561

 |     performDBUpdates
 |
 | PURPOSE:
 |     This is the top level method that is called by the
 |     payment creation program to:
 |         1. insert payments to DB
 |         2. update documents with payment id
 |         3. update status of payment request
 |
 |     This method will read the 'rejection level' system option
 |     and do updates accordingly.
 |
 | PARAMETERS:
 |     IN
 |
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 |
 | NOTES:
 |
 *---------------------------------------------------------------------*/
 PROCEDURE performDBUpdates(
     p_payreq_id          IN            IBY_PAY_SERVICE_REQUESTS.
                                          payment_service_request_id%type,
     p_rej_level          IN            VARCHAR2,
     p_review_pmts_flag   IN            VARCHAR2,
     x_paymentTab         IN OUT NOCOPY paymentTabType,
     x_docsInPmtTab       IN OUT NOCOPY docsInPaymentTabType,
     x_allPmtsSuccessFlag IN OUT NOCOPY BOOLEAN,
     x_allPmtsFailedFlag  IN OUT NOCOPY BOOLEAN,
     x_return_status      IN OUT NOCOPY VARCHAR2,
     x_docErrorTab        IN OUT NOCOPY IBY_VALIDATIONSETS_PUB.docErrorTabType,
     x_errTokenTab        IN OUT NOCOPY IBY_VALIDATIONSETS_PUB.
                                            trxnErrTokenTabType
     )
 IS
 l_module_name       CONSTANT VARCHAR2(200) := G_PKG_NAME ||
                                                   '.performDBUpdates';
Line: 7659

      * Update the status of the payments/documents
      * as per the rejection level (if necessary).
      */
     IF (p_rej_level = REJ_LVL_REQUEST) THEN

         IF (l_allsuccess_flag = FALSE) THEN
             /*
              * This means that at least one payment in this
              * payment request has failed.
              *
              * For 'request' rejection level:
              * If any payment in the request fails validation,
              * the entire payment request should be rejected;
Line: 7686

                      * an error record and insert this record
                      * into the errors table.
                      */
                     IBY_BUILD_UTILS_PKG.createErrorRecord(
                         TRXN_TYPE_PMT,
                         x_paymentTab(i).payment_id,
                         x_paymentTab(i).payment_status,
                         NULL,
                         x_paymentTab(i).payment_id,
                         NULL,
                         NULL,
                         NULL,
                         NULL,
                         NULL,
                         l_doc_err_rec,
                         x_errTokenTab,
                         l_triggering_pmt_id
                         );
Line: 7705

                     IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
                         l_doc_err_rec, x_docErrorTab, x_errTokenTab);
Line: 7943

              * Update all the payments that are in PAY_STATUS_REJECTED
              * status to PAY_STATUS_FAIL_VALID.
              */
             FOR j in  x_paymentTab.FIRST ..  x_paymentTab.LAST LOOP

                 IF (x_paymentTab(j).payment_status = PAY_STATUS_REJECTED) THEN

                     x_paymentTab(j).payment_status :=
                         PAY_STATUS_FAIL_VALID;
Line: 7981

     updatePayments(x_paymentTab);
Line: 7984

      * Update the documents table by providing a payment id to
      * each document.
      */
     updateDocsWithPaymentID(x_docsInPmtTab);
Line: 7994

     IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N', x_docErrorTab,
         x_errTokenTab);
Line: 7998

      * Update the status of the payment request.
      */
     print_debuginfo(l_module_name, 'Updating status of payment request '
         || p_payreq_id || ' to ' || l_request_status || '.');
Line: 8003

     UPDATE
         iby_pay_service_requests
     SET
         payment_service_request_status = l_request_status
     WHERE
         payment_service_request_id = p_payreq_id
     ;
Line: 8042

 END performDBUpdates;
Line: 8089

 SELECT DISTINCT
     val_asgn.validation_assignment_id,
     val_asgn.val_assignment_entity_type,
     val.validation_set_display_name,
     val.validation_set_code,
     val.validation_code_package,
     val.validation_code_entry_point
 FROM
     IBY_VALIDATION_SETS_VL    val,
     IBY_VAL_ASSIGNMENTS       val_asgn,
     IBY_PAYMENTS_ALL          pmts,
     IBY_SYS_PMT_PROFILES_B    sys_prof,
     IBY_ACCT_PMT_PROFILES_B   acct_prof,
     IBY_TRANSMIT_CONFIGS_B    txconf,
     IBY_TRANSMIT_PROTOCOLS_B  txproto,
     CE_BANK_ACCOUNTS          iba,
     CE_BANK_BRANCHES_V        iba_branch
 WHERE
     pmts.payment_id               = p_payment_id
     AND pmts.internal_bank_account_id = iba.bank_account_id
     AND iba_branch.branch_party_id    = iba.bank_branch_id
     AND val.validation_set_code   = val_asgn.validation_set_code
     AND val.validation_level_code = 'PAYMENT'
     AND (val_asgn.val_assignment_entity_type    = 'METHOD'
              AND val_asgn.assignment_entity_id  =
                      pmts.payment_method_code
          OR val_asgn.val_assignment_entity_type = 'INTBANKACCOUNT'
              AND val_asgn.assignment_entity_id  =
                  pmts.internal_bank_account_id
          OR val_asgn.val_assignment_entity_type = 'FORMAT'
              AND val_asgn.assignment_entity_id  =
                  sys_prof.payment_format_code
          OR val_asgn.val_assignment_entity_type = 'BANK'
              AND val_asgn.assignment_entity_id  =
                  sys_prof.bepid
          OR val_asgn.val_assignment_entity_type = 'TRANSPROTOCOL'
              AND val_asgn.assignment_entity_id  =
                  txconf.transmit_protocol_code
          )
     AND pmts.payment_profile_id        = acct_prof.payment_profile_id(+)
     AND acct_prof.transmit_configuration_id
                                        = txconf.transmit_configuration_id(+)
     AND txconf.transmit_protocol_code  = txproto.transmit_protocol_code(+)
     AND sys_prof.system_profile_code(+) = acct_prof.system_profile_code
     AND NVL(val_asgn.inactive_date, sysdate+1) > sysdate

     /*
      * Fix for bug 4997133:
      *
      * Pick up all applicable validation sets that match
      * the payment method and country code on this payment.
      * (if payment method /country code on validation
      * set is null, it means that the validation set is
      * applicable to all payment methods / countries).
      */
     AND (NVL(pmts.payment_method_code, '0') =
             NVL(val_asgn.payment_method_code, '0') OR
             val_asgn.payment_method_code IS NULL
         )
     AND (iba_branch.country = val_asgn.territory_code OR
         val_asgn.territory_code IS NULL
         )
     ;
Line: 8389

     SELECT IBY_EVENT_KEY_S.nextval INTO l_event_key
     FROM DUAL;
Line: 8604

                  * Select all docs that:
                  * 1. Have the given pay req id
                  * 2. Are not in 'payments_created' status
                  * 3. Were updated in the process of payment creation
                  *    (some docs might have failed earlier in document
                  *    validation flow. We don't want to pick them up)
                  */
                 getRejectedDocs(p_payreq_id, l_rej_doc_id_list,
                     l_rej_doc_status_list);
Line: 8897

 |     the executed select condition.
 |
 | PARAMETERS:
 |     IN
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 | NOTES:
 |
 |     XML generation from PLSQL is evolving rapidly.
 |
 |     The code below uses DBMS_XMLQuery() to generate XML
 |     from a SELECT statement.
 |
 |     DBMS_XMLQuery() uses Java code internally, and is slow.
 |
 |     Better ways to generate XML are:
 |     1. DBMS_XMLGEN
 |        DBMS_XMLGEN is a built-in package in C. It is fast. However,
 |        it is supported only in Oracle 9i and above.
 |
 |     2. SQLX
 |        This is the new emerging standard for SQL -> XML.
 |        It is both fast and easy. However, only Oracle 9i and
 |        above.
 |
 *---------------------------------------------------------------------*/
 FUNCTION getXMLClob(
     p_payreq_id     IN VARCHAR2
     )
     RETURN CLOB
 IS
 l_module_name  CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.getXMLClob';
Line: 8953

      * Select all docs that:
      * 1. Have the given pay req id
      * 2. Are not in 'payments_created' status
      * 3. Were updated in the process of payment creation
      *    (some docs might have failed earlier in document
      *    validation flow. We don't want to pick them up).
      */
     l_sql := 'SELECT calling_app_id, '
                  || 'calling_app_doc_unique_ref1'
                  || 'calling_app_doc_unique_ref2'
                  || 'calling_app_doc_unique_ref3'
                  || 'calling_app_doc_unique_ref4'
                  || 'calling_app_doc_unique_ref5'
                  || 'pay_proc_trxn_type_id '
                  || 'FROM IBY_DOCS_PAYABLE_ALL '
                  || 'WHERE payment_service_request_id = :payreq_id '
                  || 'AND  document_status <> :doc_status '
                  || 'AND  payment_id IS NOT NULL';
Line: 9068

 SELECT
     doc.document_payable_id,
     doc.document_status
 FROM
     IBY_DOCS_PAYABLE_ALL doc
 WHERE
     doc.payment_service_request_id = p_payreq_id AND
     doc.document_status <> DOC_STATUS_PAY_CREATED AND
     doc.payment_id IS NOT NULL
 ;
Line: 9297

 SELECT
     NULL,
     sysoptions.require_prop_pmts_review_flag
 FROM
     IBY_INTERNAL_PAYERS_ALL sysoptions
 WHERE
     sysoptions.org_id IS NULL
 ;
Line: 9438

 SELECT
     sysoptions.payment_rejection_level_code,
     NULL
 FROM
     IBY_INTERNAL_PAYERS_ALL sysoptions
 WHERE
     sysoptions.org_id IS NULL
 ;
Line: 10010

                                  * 'l_temp_discount_date'; Update the value of
Line: 10086

                                  * Update the value of 'l_temp_due_date'
                                  * only if the new due date occurs
                                  * earlier.
                                  */

                                 IF (p_docsInPmtTab(j).pmt_due_date <
                                     l_temp_due_date) THEN

                                     l_temp_due_date := p_docsInPmtTab(j).
                                                            pmt_due_date;
Line: 10301

 SELECT
     payment_method_code,
     maturity_date_offset_days
 FROM
     IBY_PAYMENT_METHODS_VL
 WHERE
     support_bills_payable_flag = 'Y'
 ;
Line: 11097

         x_paymentTab(i).last_updated_by                := fnd_global.user_id;
Line: 11098

         x_paymentTab(i).last_update_login              := fnd_global.user_id;
Line: 11099

         x_paymentTab(i).last_update_date               := sysdate;
Line: 11137

     SELECT
         payment_service_request_status
     INTO
         l_payreq_status
     FROM
         IBY_PAY_SERVICE_REQUESTS
     WHERE
         payment_service_request_id = l_payreq_id;
Line: 11231

 SELECT
     *
 FROM
     IBY_PAYMENTS_ALL
 WHERE
     payment_service_request_id = p_payment_request_id AND

     /*
      * For the rebuild:
      * Only select payments that are in non-failed
      * status, or payments that are soft failed
      * ('FAILED_VALIDATION') status here. Do not
      * select payments that are is 'REJECTED' status
      * here as the underlying documents of rejected
      * payments would have already been kicked back to AP.
      */
     payment_status IN
         (
         PAY_STATUS_CREATED,
         PAY_STATUS_MODIFIED,
         PAY_STATUS_FAIL_VALID
         )
     ;
Line: 11260

 SELECT
     payment_id,
     document_payable_id,
     calling_app_id,
     calling_app_doc_unique_ref1,
     calling_app_doc_unique_ref2,
     calling_app_doc_unique_ref3,
     calling_app_doc_unique_ref4,
     calling_app_doc_unique_ref5,
     pay_proc_trxn_type_code,
     payment_amount,
     payment_currency_code,
     payment_grouping_number,
     document_status,
     amount_withheld,
     payment_due_date,
     discount_date,
     internal_bank_account_id,
     ext_payee_id,
     payee_party_id,
     party_site_id,
     supplier_site_id,
     org_id,
     org_type,
     external_bank_account_id,
     payment_curr_discount_taken,
     delivery_channel_code,
     unique_remittance_identifier,
     uri_check_digit,
     inv_payee_party_id,
     inv_party_site_id,
     inv_supplier_site_id,
     inv_beneficiary_party,
     ext_inv_payee_id,
     relationship_id
 FROM
     IBY_DOCS_PAYABLE_ALL
 WHERE
     payment_service_request_id = p_payment_request_id    AND
     payment_id                 = p_payment_id            AND
     document_status IN
     (
     DOC_STATUS_PAY_CREATED,
     DOC_STATUS_PAY_VAL_FAIL
     )
     ;
Line: 11312

 SELECT
     pmt.payment_id,
     prof.declaration_option,
     prof.dcl_only_foreign_curr_pmt_flag,
     prof.declaration_curr_fx_rate_type,
     prof.declaration_currency_code,
     prof.declaration_threshold_amount
 FROM
     IBY_PAYMENTS_ALL pmt,
     IBY_PAYMENT_PROFILES prof
 WHERE
     pmt.payment_id = p_payment_id AND
     pmt.payment_profile_id = prof.payment_profile_id
     ;
Line: 11467

     SELECT
         calling_app_id,
         call_app_pay_service_req_code
     INTO
         l_ca_id,
         l_ca_payreq_cd
     FROM
         IBY_PAY_SERVICE_REQUESTS
     WHERE
         PAYMENT_SERVICE_REQUEST_ID = p_payment_request_id
     ;
Line: 11550

 SELECT

  /* PAYMENT RELATED */
  pmt.payment_id,                                                    -- 01

  /* PAYER */
  payer_party.party_number,            -- payer party number
  '',                                  -- payer party site name
  payer.name,                          -- payer name
  IBY_FD_EXTRACT_GEN_PVT.              -- payer tax reg number
      Get_FP_TaxRegistration
          (
          payer.legal_entity_id
          ),
  payer.registration_number,           -- payer le reg number
  payer.party_id,                      -- payer_party_id
  payer.location_id,                   -- payer_location_id
  payer_party.attribute_category,      -- payer party attr category
  payer.attribute_category,            -- payer LE attr category     -- 10

  /* PAYER SPECIAL FIELDS */
  '',                                  -- payer abbrev agency code
  '',                                  -- payer federal us employer id

  /* PAYER BANK */
  iba_bnk_branch.bank_name,            -- payer bank name
  iba_bnk_branch.bank_number,          -- payer bank number
  iba_bnk_branch.branch_number,        -- payer bank branch number
  iba_bnk_branch.bank_branch_name,     -- payer bank branch name
  iba_bnk_branch.eft_swift_code,       -- payer bank swift code
  iba.bank_account_num,                -- payer bank account num
  iba.bank_account_name,               -- payer bank account name
  iba.iban_number,                     -- payer bank acct iban number -- 20
  iba.agency_location_code,            -- payer bank agency location code
  iba_bnk_branch.branch_party_id,      -- payer bank branch party id
  iba_bnk_branch.bank_name_alt,        -- payer bank alt name
  iba_bnk_branch.bank_branch_name_alt, -- payer bank branch alt name
  iba.bank_account_name_alt,           -- payer bank alt account name
  iba.bank_account_num_electronic,     -- payer bank account num electronic
  iba_branch_party_site.location_id,   -- payer bank branch location id
  iba_bnk_branch.eft_user_number,      -- payer bank branch eft user num

  /* PAYEE */
  payee.party_number,                  -- payee party number

  /* Fix for bug 7391524
   * Full Name when Payee is an Employee is fetch from HR tables
   * This is just as a temporary fix, until TCA overcomes it architecture limitations
   */
  DECODE(pmt.employee_person_id,
   NULL,payee.party_name,
   Get_Employee_Full_Name(pmt.employee_person_id,pmt.payee_party_id,payee.party_name)) payee_party_name,                    -- payee party name

  /*
   * Fix for bug 5466979:
   *
   * Payee name is always the same as the payee party name.
   */
  DECODE(pmt.employee_person_id,
   NULL,payee.party_name,
   Get_Employee_Full_Name(pmt.employee_person_id,pmt.payee_party_id,payee.party_name)) payee_name,                    -- payee name

  DECODE(                              -- payee alternate name
        payee.party_type,
        'ORGANIZATION',
            payee.organization_name_phonetic,
        'PERSON',
            TRIM(payee.person_first_name_phonetic
                || ' '
                || payee.person_last_name_phonetic)
        ),

  /* PAYEE ADDRESS */
  payee_addr.add_line1,                -- payee add line1
  payee_addr.add_line2,                -- payee add line2
  payee_addr.add_line3,                -- payee add line3
  payee_addr.add_line4,                -- payee add line4
  payee_addr.city,                     -- payee city
  payee_addr.county,                   -- payee county
  payee_addr.province,                 -- payee province
  payee_addr.state,                    -- payee state                -- 40
  payee_addr.country,                  -- payee country
  payee_addr.postal_code,              -- payee postal code
  payee_addr.add_concat,               -- payee address concat

  /*
   * Fix for bug 5466979:
   *
   * Beneficiary name should be the same as the payee party name
   * except when beneficiary party is not null.
   *
   * If beneficiary party is not null, the beneficiary name
   * should be the hz_parties.party_name corresponding to the
   * beneficiary_party.
   */
  DECODE (pmt.beneficiary_party,
              NULL,
              payee.party_name,
              (SELECT
                   benef_party.party_name
               FROM
                   HZ_PARTIES benef_party
               WHERE
                   benef_party.party_id=pmt.beneficiary_party
              )
           ),                          -- beneficiary name

  payee.attribute_category,            -- payee party attr category
  payee_site.attribute_category,       -- payee supplier site attr category
  payee_site.party_site_name,          -- payee supplier site name

  /* VENDOR RELATED */
  vendor_site.vendor_site_code_alt,    -- payee site alternate name
  vendor.segment1,                     -- payee supplier number
  vendor.customer_num,                 -- payee first party reference  -- 50
  vendor.attribute_category,           -- payee supplier attr category
  vendor.vendor_id,                    -- payee supplier id

  /* PAYEE SPECIAL FIELDS */
  IBY_FD_EXTRACT_GEN_PVT.              -- payee tax registration number
      Get_Payee_TaxRegistration
      (vendor.vendor_id,pmt.supplier_site_id),

  /*
   * Fix for bug 5468251:
   *
   * Use AP_SUPPLIERS.NUM_1099 for the payee
   * LE registration number.
   */

  /*
   * Fix for bug 5475920:
   *
   * Payments can be made for employees or suppliers.
   *
   * For employees, the payee le reg num (i.e., taxpayer id)
   * is stored in PER_PEOPLE_X.
   *
   * For suppliers, the payee le reg num (i.e., taxpayer id)
   * is stored in AP_SUPPLIERS.
   *
   * Switch between these two tables depending upon payee type
   * to get the payee le reg num
   */
   /*
   * Fix for bug 5501968:
   *
   * In R12, Federal supports thid party payments i.e., payments
   * to third parties who may not be employees / suppliers.
   *
   * For this reason, we cannot assume that tax payer id for
   * all non-employees will be stored in AP_SUPPLIERS.
   *
   * However, we know that all third parties / suppliers will
   * have a row in HZ_PARTIES. Therefore, pick up the taxpayer
   * id from HZ_PARTIES as this always works.
   */
   /*
   * Fix for bug 5501968:
   *
   * In R12, Federal supports thid party payments i.e., payments
   */
   decode(upper(vendor.vendor_type_lookup_code),
          'EMPLOYEE', per.national_identifier,
          'CONTRACTOR',decode(vendor.organization_type_lookup_code,
                              'INDIVIDUAL',vendor.individual_1099,
                              'FOREIGN INDIVIDUAL',vendor.individual_1099,
   		              'PARTNERSHIP',vendor.individual_1099,
                              'FOREIGN PARTNERSHIP',vendor.individual_1099,
                              vendor.num_1099),
 	  vendor.num_1099),            -- payee Tax Identification Number

  /* PAYEE BANK */
  eba.bank_name,                       -- payee bank name
  eba.bank_number,                     -- payee bank number
  eba.branch_number,                   -- payee bank branch number
  eba.bank_branch_name,                -- payee bank branch name

  /*
   * Fix for bug 5586882:
   *
   * Populate the external bank account using
   * IBY_EXT_BANK_ACCOUNTS.bank_account_num
   * so that we show the unmasked bank account number
   */
  ext_ba_table.bank_account_num,       -- payee bank account number

  eba.bank_account_name,               -- payee bank account name    -- 60
  eba.iban_number,                     -- payee bank account IBAN
  eba.eft_swift_code,                  -- payee bank swift code
  eba.bank_account_type,               -- payee bank account type
  eba.payment_factor_flag,             -- payee bank payment factor flag
  eba.primary_acct_owner_party_id,     -- payee bank owner party id
  eba.branch_party_id,                 -- payee bank branch party id
  eba_bank_branch.bank_name_alt,       -- payee bank name alt
  eba_bank_branch.bank_branch_name_alt, -- payee bank branch name alt
  eba.alternate_account_name,          -- payee bank alt account name
  eba.bank_account_num_electronic,     -- payee bank electronic acct num -- 70
  eba.bank_branch_address_id,          -- payee bank branch location id
  eba.primary_acct_owner_name,         -- payee bank primary acct owner name

  /* REMITTANCE ADVICE RELATED */
  remit_advice.remit_advice_delivery_method,  -- remittance advice delv method
  '',                                  -- remittance advice email
  '',                                  -- remittance advice fax

  /* DELIVERY CHANNEL RELATED */
  deliv.format_value,

  /* DECLARATION REPORT RELATED */
  prof.declaration_curr_fx_rate_type,
  '',                                  -- declaration format

  /* PROFILE RELATED */
  prof.payment_profile_name,           -- account profile name       -- 80
  prof.system_profile_name,            -- system profile name

  /* PAYMENT REASON */
  pmt_reason.format_value,

  /* BANK INSTRUCTION */
  bank_instr1.format_value,
  bank_instr2.format_value,

  /* ORG */
  org.name,

  /* RFC */
  rfc_ca.class_code,

  /* REQUEST */
  payreq.call_app_pay_service_req_code,-- ppr name
  fnd_app.application_name,             -- source product            -- 88



      /*TPP-Start*/
invpayee.party_name 		inv_payee_name,
null		inv_payee_address1,
null		inv_payee_address2,
null		inv_payee_address3,
null		inv_payee_address4,
null		inv_payee_city,
null		inv_payee_postal_code,
null		inv_payee_state,
null		inv_payee_province,
null		inv_payee_county,
null		inv_payee_country,
invpayee.party_name 		inv_payee_party_name,

decode(upper(invvendor.vendor_type_lookup_code),
          'CONTRACTOR',decode(invvendor.organization_type_lookup_code,
                              'INDIVIDUAL',invvendor.individual_1099,
                              'FOREIGN INDIVIDUAL',invvendor.individual_1099,
   		              'PARTNERSHIP',invvendor.individual_1099,
                              'FOREIGN PARTNERSHIP',invvendor.individual_1099,
                              invvendor.num_1099),
 	  invvendor.num_1099)	inv_payee_le_reg_num,

IBY_FD_EXTRACT_GEN_PVT.
 Get_Payee_TaxRegistration (invvendor.vendor_id,pmt.inv_supplier_site_id)
				inv_payee_tax_reg_num,

null 	inv_payee_address_concat,
DECODE (pmt.inv_beneficiary_party,
              NULL,
              invpayee.party_name,
              (SELECT
                   benef_party.party_name
               FROM
                   HZ_PARTIES benef_party
               WHERE
                   benef_party.party_id=pmt.inv_beneficiary_party
              )
           ) 			inv_beneficiary_name,

invpayee.party_number 		inv_payee_party_number,
invpayee.organization_name_phonetic	inv_payee_alternate_name,
invvendor_site.vendor_site_code_alt	inv_payee_site_alt_name,
invvendor.segment1			inv_payee_supplier_number,
invvendor.customer_num			inv_payee_first_party_ref,

null ext_bnk_acct_ownr_inv_prty_id,
null ext_bnk_branch_inv_prty_id,
null ext_bnk_acct_ownr_inv_prty_nme,

invpayee.attribute_category		inv_payee_party_attr_cat,
invvendor.attribute_category		inv_payee_supplier_attr_cat,
invpayee_site.attribute_category	inv_payee_spplr_site_attr_cat,
invpayee_site.party_site_name		inv_payee_supplier_site_name,
invvendor_site.vendor_site_code_alt	inv_payee_spplr_site_alt_name,
invvendor.vendor_id			inv_payee_supplier_id
      /*TPP-End*/


 FROM

  /* Payment related */
  IBY_PAYMENTS_ALL         pmt,

  /* Profile related */
  IBY_PAYMENT_PROFILES     prof,

  /* Payer */
  XLE_FIRSTPARTY_INFORMATION_V  payer,
  HZ_PARTIES               payer_party,

  /* Payer bank */
  CE_BANK_ACCOUNTS         iba,
  CE_BANK_BRANCHES_V       iba_bnk_branch,
  HZ_PARTY_SITES           iba_branch_party_site,

  /* Payee */
  HZ_PARTIES               payee,
  HZ_PARTIES               invpayee,

  /* Vendor related */
  AP_SUPPLIERS               vendor,
  AP_SUPPLIER_SITES_ALL      vendor_site,
  AP_SUPPLIERS               invvendor,
  AP_SUPPLIER_SITES_ALL      invvendor_site,

  /* Employee related */
  PER_PEOPLE_X             per,

  /* Payee site */
  HZ_PARTY_SITES           payee_site,
  HZ_PARTY_SITES           invpayee_site,

  /* Payee bank */
  IBY_EXT_BANK_ACCOUNTS_V  eba,
  IBY_EXT_BANK_ACCOUNTS    ext_ba_table,
  CE_BANK_BRANCHES_V       eba_bank_branch,

  /* Remit advice related */
  IBY_REMIT_ADVICE_SETUP   remit_advice,

  /* Payment service request related */
  IBY_PAY_SERVICE_REQUESTS payreq,
  FND_APPLICATION_ALL_VIEW fnd_app,

  /* Delivery channel related */
  IBY_DELIVERY_CHANNELS_VL deliv,

  /* Payment reason related */
  IBY_PAYMENT_REASONS_VL   pmt_reason,

  /* Bank instruction related */
  IBY_BANK_INSTRUCTIONS_VL bank_instr1,
  IBY_BANK_INSTRUCTIONS_VL bank_instr2,

  /* Org related */
  HR_ALL_ORGANIZATION_UNITS org,

  /* RFC */
  HZ_CODE_ASSIGNMENTS          rfc_ca,

  /*
   * Fix for bug 5928084:
   *
   * Derive address of employee type payees using
   * PER_ADDRESSES or HR_LOCATIONS.
   *
   * The select statement below dynamically creates the payee
   * address table. The dynamically created table is named
   * as payee_add. Columns from this table are referenced in the
   * outer select.
   *
   * The payee address can be either a
   *  - supplier address, or
   *  - employee address
   *
   * We decide whether we should pick up supplier addresses or
   * employee addresses using the 'address source' field on the
   * payment.
   *
   * 'address source' can contain two values
   *  - TCA: supplier address
   *  - HR : employee address
   *
   * Supplier addresses are present in TCA and are located using
   * remit to location id column on the payment.
   *
   * Employee addresses can be in either
   *   - PER_ADDRESSES (home addresses)
   *   - HR_LOCATIONS  (office addresses)
   * We use the 'employee address code' field on the payment to
   * decide which table to use.
   *
   * The select below uses decode clause to perform the
   * if else logic to retrieve the address from the right
   * column.
   *
   * Roughly, the decode clauses are used to effect the following
   * logic -
   *
   * for each add field:
   * if (pmt.address_source = 'TCA')
   * {
   *   -- get the address field from HZ_LOCATIONS --
   * }
   * else
   * {
   *     -- this is an employee address --
   *     if (pmt.employee_address_code = 'HOME')
   *     {
   *         -- get the address field from PER_ADDRESSES --
   *
   *         The select logic for this has been lifted from
   *         AP's expense report import program.
   *     }
   *     else
   *     {
   *         -- get the address field from HR_LOCATIONS --
   *
   *         The select logic for this has been lifted from
   *         /patch/115/sql/apwexptb.pls.
   *     }
   * }
   */
  (
     SELECT

      /* payee add line1 */
      DECODE(
        pmt.address_source,

        -- supplier address line 1
        'TCA', payee_loc.address1,

        -- employee add line 1
        DECODE
        (
          pmt.employee_address_code,

          -- employee home addr line 1
          'HOME', per_addr.address_line1,

          -- employee office addr line 1
          'OFFICE',per_loc.address_line_1,

          -- employee provisional addr line 1
          'PROVISIONAL', per_addr_prov.address_line1,

          --address code not specified
          DECODE (per_addr.address_id,
                 NULL, per_loc.address_line_1,
                 per_addr.address_line1)
         )

        ) add_line1,

      /* payee add line2 */
      DECODE(
        pmt.address_source,

        -- supplier address line 2
        'TCA', payee_loc.address2,

        -- employee add line 2
        DECODE
        (
          pmt.employee_address_code,

          -- employee home addr line 2
          'HOME', per_addr.address_line2,

          -- employee office addr line 2
          'OFFICE',per_loc.address_line_2,

          -- employee provisional addr line 2
          'PROVISIONAL', per_addr_prov.address_line2,

          --address code not specified
          DECODE (per_addr.address_id,
                 NULL, per_loc.address_line_2,
                 per_addr.address_line2)
         )
        ) add_line2,


      /* payee add line3 */
      DECODE(
        pmt.address_source,

        -- supplier address line 3
        'TCA', payee_loc.address3,

        -- employee add line 3
        DECODE
        (
          pmt.employee_address_code,

          -- employee home addr line 3
          'HOME', per_addr.address_line3,

          -- employee office addr line 3
          'OFFICE',per_loc.address_line_3,

          -- employee provisional addr line 3
          'PROVISIONAL', per_addr_prov.address_line3,

          --address code not specified
          DECODE (per_addr.address_id,
                 NULL, per_loc.address_line_3,
                 per_addr.address_line3)
         )

        ) add_line3,


      /* payee add line4 */
      DECODE(
        pmt.address_source,

        -- supplier address line 4
        'TCA', payee_loc.address4,

        -- employee home/office addr line 4 (not available)
        null

        ) add_line4,

      /* payee city */
      DECODE(
        pmt.address_source,

        -- supplier city
        'TCA', payee_loc.city,

        -- employee city
        DECODE
        (
          pmt.employee_address_code,

          -- employee home city
          'HOME', per_addr.town_or_city,

          -- employee office city
          'OFFICE', per_loc.town_or_city,

          -- employee provisional city
          'PROVISIONAL', per_addr_prov.town_or_city,

          -- address code not specified
          DECODE (per_addr.address_id,
                 NULL, per_loc.town_or_city,
                 per_addr.town_or_city)
          )

        ) city,


      /* payee county */
      DECODE(
        pmt.address_source,

        -- supplier county
        'TCA', payee_loc.county,

        -- employee county
        (
        DECODE(
          pmt.employee_address_code,

          -- employee home county
          'HOME',
          DECODE(
            per_addr.style,
            'US',     NVL(per_addr.region_1,   ''),
            'US_GLB', NVL(per_addr.region_1,   ''),
            'IE',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            'IE_GLB', NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            'GB',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            ''),

          -- employee office county
          'OFFICE',
          DECODE(
            per_loc.style,
            'US',      NVL(per_loc.region_1,   ''),
            'US_GLB',  NVL(per_loc.region_1,   ''),
            'IE',      NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            'IE_GLB',  NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            'GB',      NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            ''),


          -- employee provisional county
          'PROVISIONAL',
          DECODE(
            per_addr_prov.style,
            'US',     NVL(per_addr_prov.region_1,   ''),
            'US_GLB', NVL(per_addr_prov.region_1,   ''),
            'IE',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr_prov.style,
                                  per_addr_prov.region_1),
                        ''),
            'IE_GLB', NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr_prov.style,
                                  per_addr_prov.region_1),
                        ''),
            'GB',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr_prov.style,
                                  per_addr_prov.region_1),
                        ''),
            ''),


            --address code not specified
            decode(per_addr.address_id,
            NULL,DECODE(
            per_loc.style,
            'US',      NVL(per_loc.region_1,   ''),
            'US_GLB',  NVL(per_loc.region_1,   ''),
            'IE',      NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            'IE_GLB',  NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            'GB',      NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            ''),
             DECODE(
            per_addr.style,
            'US',     NVL(per_addr.region_1,   ''),
            'US_GLB', NVL(per_addr.region_1,   ''),
            'IE',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            'IE_GLB', NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            'GB',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            ''))
            )
          )
        ) county,

      /* payee province */
      DECODE(
        pmt.address_source,

        -- supplier province
        'TCA', payee_loc.province,

        -- employee province
        (
        DECODE(

          pmt.employee_address_code,

          -- employee home province
          'HOME',
          DECODE(per_addr.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_addr.region_1,   ''),
            'CA_GLB',  NVL(per_addr.region_1,   ''),
            'JP',      NVL(per_addr.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_addr.style,
                        per_addr.region_1),
              '')
            ),

          -- employee office province
          'OFFICE',
          DECODE(per_loc.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_loc.region_1,   ''),
            'CA_GLB',  NVL(per_loc.region_1,   ''),
            'JP',      NVL(per_loc.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_loc.style,
                        per_loc.region_1),
              '')
              ),

          -- employee provisional province
          'PROVISIONAL',
          DECODE(per_addr_prov.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_addr_prov.region_1,   ''),
            'CA_GLB',  NVL(per_addr_prov.region_1,   ''),
            'JP',      NVL(per_addr_prov.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_addr_prov.style,
                        per_addr_prov.region_1),
              '')
            ),

            --address code not specified
            decode(per_addr.address_id,
            NULL,DECODE(per_loc.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_loc.region_1,   ''),
            'CA_GLB',  NVL(per_loc.region_1,   ''),
            'JP',      NVL(per_loc.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_loc.style,
                        per_loc.region_1),
              '')
              ),
             DECODE(per_addr.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_addr.region_1,   ''),
            'CA_GLB',  NVL(per_addr.region_1,   ''),
            'JP',      NVL(per_addr.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_addr.style,
                        per_addr.region_1),
              '')
            ))
            )
          )
        ) province,

      /* payee state */
      DECODE(
        pmt.address_source,

        -- supplier state
        'TCA', payee_loc.state,

         -- employee state
         (
         DECODE(
           pmt.employee_address_code,

           -- employee home state
           'HOME',
           DECODE(per_addr.style,
             'CA',     '',
             'CA_GLB', '',
             NVL(per_addr.region_2,   '')),

           -- employee office state
           'OFFICE',
           DECODE(per_loc.style,
             'CA',     '',
             'CA_GLB', '',
             NVL(per_loc.region_2, '')),

           -- employee provisional state
           'PROVISIONAL',
           DECODE(per_addr_prov.style,
             'CA',     '',
             'CA_GLB', '',
             NVL(per_addr_prov.region_2,   '')),
           --address code not specified
           decode(per_addr.address_id,
           NULL,DECODE(per_loc.style,
             'CA',     '',
             'CA_GLB', '',
              NVL(per_loc.region_2, '')),
            DECODE(per_addr.style,
             'CA',     '',
             'CA_GLB', '',
              NVL(per_addr.region_2,   '')))
           )
         )
       ) state,

     /* payee country */
      DECODE(
        pmt.address_source,

        -- supplier country
        'TCA', payee_loc.country,

        -- employee country
        (
        DECODE(
          pmt.employee_address_code,

          -- employee home country
          'HOME', per_addr.country,

          -- employee office country
          'OFFICE',per_loc.country,

          -- employee provisional country
          'PROVISIONAL', per_addr_prov.country,

          --address code not specified
          DECODE (per_addr.address_id,
               NULL, per_loc.country,
               per_addr.country
               )
          )
        )
        ) country,

      /* payee postal code */
      DECODE(
        pmt.address_source,

        -- supplier postal code
        'TCA', payee_loc.postal_code,

        -- employee postal code
        (
        DECODE(
          pmt.employee_address_code,

          -- employee home postal code
          'HOME', per_addr.postal_code,

          -- employee office postal code
          'OFFICE',per_loc.postal_code,

          -- employee provisional postal code
          'PROVISIONAL', per_addr_prov.postal_code,

          --address code not specified
          DECODE (per_addr.address_id,
               NULL, per_loc.postal_code,
               per_addr.postal_code
               )
          )
        )
        ) postal_code,


      /* payee address concat */
      DECODE(
        pmt.address_source,

        -- supplier address concat
        'TCA',
        payee_loc.address1
          || ', '
          || payee_loc.address2
          || ', '
          || payee_loc.address3
          || ', '
          || payee_loc.city
          || ', '
          || payee_loc.state
          || ', '
          || payee_loc.country
          || ', '
          || payee_loc.postal_code,

        -- employee address concat
        (
        DECODE(
          pmt.employee_address_code,

          -- employee home address concat
          'HOME',
          per_addr.address_line1
            || ', '
            || per_addr.address_line2
            || ', '
            || per_addr.address_line3
            || ', '
            || per_addr.town_or_city
            || ', '
            || DECODE(
                 per_addr.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_addr.region_2, '')
                 )
            || ', '
            || per_addr.country
            || ', '
            || per_addr.postal_code,

          -- employee office address concat
          'OFFICE',
          per_loc.address_line_1
            || ', '
            || per_loc.address_line_2
            || ', '
            || per_loc.address_line_3
            || ', '
            || per_loc.town_or_city
            || ', '
            || DECODE(
                 per_loc.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_loc.region_2, '')
                 )
            || ', '
            || per_loc.country
            || ', '
            || per_loc.postal_code,

          -- employee provisional address concat
          'PROVISIONAL',
          per_addr_prov.address_line1
            || ', '
            || per_addr_prov.address_line2
            || ', '
            || per_addr_prov.address_line3
            || ', '
            || per_addr_prov.town_or_city
            || ', '
            || DECODE(
                 per_addr_prov.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_addr_prov.region_2, '')
                 )
            || ', '
            || per_addr_prov.country
            || ', '
            || per_addr_prov.postal_code,

          -- address code not specified
          DECODE (per_addr.address_id,
               NULL, per_loc.address_line_1
            || ', '
            || per_loc.address_line_2
            || ', '
            || per_loc.address_line_3
            || ', '
            || per_loc.town_or_city
            || ', '
            || DECODE(
                 per_loc.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_loc.region_2, '')
                 )
            || ', '
            || per_loc.country
            || ', '
            || per_loc.postal_code,

              per_addr.address_line1
            || ', '
            || per_addr.address_line2
            || ', '
            || per_addr.address_line3
            || ', '
            || per_addr.town_or_city
            || ', '
            || DECODE(
                 per_addr.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_addr.region_2, '')
                 )
            || ', '
            || per_addr.country
            || ', '
            || per_addr.postal_code)
          )
        )
      ) add_concat

  FROM
      IBY_PAYMENTS_ALL         pmt,

      /* Employee address related */
      HR_LOCATIONS             per_loc,
      PER_ADDRESSES            per_addr,
      PER_ALL_ASSIGNMENTS_F    per_assgn,
      PER_ADDRESSES            per_addr_prov,

      /* Supplier address related */
      HZ_LOCATIONS             payee_loc
  WHERE
    pmt.payment_id                     = p_payment_id
    AND pmt.employee_person_id         = per_addr.person_id(+)
    AND per_addr.primary_flag(+) = 'Y'
    AND SYSDATE BETWEEN
            per_addr.date_from(+)
            AND NVL(per_addr.date_to(+), SYSDATE+1)
    AND pmt.employee_person_id         = per_addr_prov.person_id(+)
    AND per_addr_prov.address_type(+) = 'M'
    AND SYSDATE BETWEEN
            per_addr_prov.date_from(+)
            AND NVL(per_addr_prov.date_to(+), SYSDATE+1)
    AND pmt.employee_person_id         = per_assgn.person_id(+)
    AND per_assgn.location_id          = per_loc.location_id(+)
    AND per_assgn.primary_flag(+)      = 'Y'
    AND (TRUNC(SYSDATE) BETWEEN
            per_assgn.effective_start_date(+)
            AND per_assgn.effective_end_date(+)
        )
    AND pmt.remit_to_location_id       = payee_loc.location_id(+)
  ) payee_addr

 WHERE

  /* payment related */
  pmt.payment_id                     = p_payment_id

  /* payer */
  AND pmt.legal_entity_id            = payer.legal_entity_id
  AND payer.party_id                 = payer_party.party_id

  /* payer bank */
  AND pmt.internal_bank_account_id   = iba.bank_account_id
  AND iba_bnk_branch.branch_party_id = iba.bank_branch_id

  /* payer bank location */
  AND iba_bnk_branch.branch_party_id = iba_branch_party_site.party_id(+)

  /* payee */
  AND pmt.payee_party_id             = payee.party_id

  /* payee site */
  AND pmt.party_site_id              = payee_site.party_site_id(+)

  /* inv payee */
  AND pmt.inv_payee_party_id             = invpayee.party_id(+)

  /* inv payee site */
  AND pmt.inv_party_site_id              = invpayee_site.party_site_id(+)

  /* vendor related */
  AND pmt.payee_party_id             = vendor.party_id(+)
  AND pmt.supplier_site_id           = vendor_site.vendor_site_id(+)
  AND vendor.vendor_id               = vendor_site.vendor_id       /*Bug 7323072*/


  /* inv vendor related */
  AND pmt.inv_payee_party_id             = invvendor.party_id(+)
  AND pmt.inv_supplier_site_id           = invvendor_site.vendor_site_id(+)
  AND nvl(vendor.vendor_id,-99)      = nvl(vendor_site.vendor_id,-99)      /*Bug 7323072*/

  /* employee related */
  AND pmt.employee_person_id         = per.person_id(+)

  /* payee bank */
  AND pmt.external_bank_account_id   = eba.ext_bank_account_id(+)
  AND eba.bank_party_id              = eba_bank_branch.bank_party_id(+)
  AND eba.branch_party_id            = eba_bank_branch.branch_party_id(+)

  /*
   * Fix for bug 5658982:
   *
   * We want to use outer join with the eba table because the
   * ext bank account id is optional on the payment.
   *
   * For the same reason, we must use outer join with
   * ext_ba_table table also.
   */
  AND ext_ba_table.ext_bank_account_id(+) = eba.ext_bank_account_id

  /* profile and remit advice */
  AND pmt.payment_profile_id         = prof.payment_profile_id
  AND prof.system_profile_code       = remit_advice.system_profile_code

  /* payment service request related */
  AND payreq.payment_service_request_id  = pmt.payment_service_request_id
  AND fnd_app.application_id         = payreq.calling_app_id

  /* delivery channel related */
  AND pmt.delivery_channel_code      = deliv.delivery_channel_code(+)

  /* payment reason */
  AND pmt.payment_reason_code        = pmt_reason.payment_reason_code(+)

  /* bank instruction */
  AND prof.bank_instruction1_code    = bank_instr1.bank_instruction_code(+)
  AND prof.bank_instruction2_code    = bank_instr2.bank_instruction_code(+)

  /* Org related */
  AND pmt.org_id                     = org.organization_id

  /* RFC related */
  AND rfc_ca.owner_table_name(+)     = 'HZ_PARTIES'
  AND rfc_ca.class_category(+)       = 'RFC_IDENTIFIER'
  AND rfc_ca.owner_table_id(+)       = iba.bank_branch_id
  ;
Line: 12694

 SELECT

  /* PAYMENT RELATED */
  pmt.payment_id,                                                    -- 01

  /* PAYER */
  payer_party.party_number,            -- payer party number
  '',                                  -- payer party site name
  payer.name,                          -- payer name
  IBY_FD_EXTRACT_GEN_PVT.              -- payer tax reg number
      Get_FP_TaxRegistration
          (
          payer.legal_entity_id
          ),
  payer.registration_number,           -- payer le reg number
  payer.party_id,                      -- payer_party_id
  payer.location_id,                   -- payer_location_id
  payer_party.attribute_category,      -- payer party attr category
  payer.attribute_category,            -- payer LE attr category     -- 10

  /* PAYER SPECIAL FIELDS */
  '',                                  -- payer abbrev agency code
  '',                                  -- payer federal us employer id

  /* PAYER BANK */
  iba_bnk_branch.bank_name,            -- payer bank name
  iba_bnk_branch.bank_number,          -- payer bank number
  iba_bnk_branch.branch_number,        -- payer bank branch number
  iba_bnk_branch.bank_branch_name,     -- payer bank branch name
  iba_bnk_branch.eft_swift_code,       -- payer bank swift code
  iba.bank_account_num,                -- payer bank account num
  iba.bank_account_name,               -- payer bank account name
  iba.iban_number,                     -- payer bank acct iban number -- 20
  iba.agency_location_code,            -- payer bank agency location code
  iba_bnk_branch.branch_party_id,      -- payer bank branch party id
  iba_bnk_branch.bank_name_alt,        -- payer bank alt name
  iba_bnk_branch.bank_branch_name_alt, -- payer bank branch alt name
  iba.bank_account_name_alt,           -- payer bank alt account name
  iba.bank_account_num_electronic,     -- payer bank account num electronic
  iba_branch_party_site.location_id,   -- payer bank branch location id
  iba_bnk_branch.eft_user_number,      -- payer bank branch eft user num

  /* PAYEE */
  payee.party_number,                  -- payee party number

  /* Fix for bug 7391524
   * Full Name when Payee is an Employee is fetch from HR tables
   * This is just as a temporary fix, until TCA overcomes it architecture limitations
   */
  DECODE(pmt.employee_person_id,
   NULL,payee.party_name,
   Get_Employee_Full_Name(pmt.employee_person_id,pmt.payee_party_id,payee.party_name)) payee_party_name,  -- payee party name

  /*
   * Fix for bug 5466979:
   *
   * Payee name is always the same as the payee party name.
   */
  DECODE(pmt.employee_person_id,
   NULL,payee.party_name,
   Get_Employee_Full_Name(pmt.employee_person_id,pmt.payee_party_id,payee.party_name)) payee_name,  --payee name

  DECODE(                              -- payee alternate name
        payee.party_type,
        'ORGANIZATION',
            payee.organization_name_phonetic,
        'PERSON',
            TRIM(payee.person_first_name_phonetic
                || ' '
                || payee.person_last_name_phonetic)
        ),

  /* PAYEE ADDRESS */
  payee_addr.add_line1,                -- payee add line1
  payee_addr.add_line2,                -- payee add line2
  payee_addr.add_line3,                -- payee add line3
  payee_addr.add_line4,                -- payee add line4
  payee_addr.city,                     -- payee city
  payee_addr.county,                   -- payee county
  payee_addr.province,                 -- payee province
  payee_addr.state,                    -- payee state                -- 40
  payee_addr.country,                  -- payee country
  payee_addr.postal_code,              -- payee postal code
  payee_addr.add_concat,               -- payee address concat

  /*
   * Fix for bug 5466979:
   *
   * Beneficiary name should be the same as the payee party name
   * except when beneficiary party is not null.
   *
   * If beneficiary party is not null, the beneficiary name
   * should be the hz_parties.party_name corresponding to the
   * beneficiary_party.
   */
  DECODE (pmt.beneficiary_party,
              NULL,
              payee.party_name,
              (SELECT
                   benef_party.party_name
               FROM
                   HZ_PARTIES benef_party
               WHERE
                   benef_party.party_id=pmt.beneficiary_party
              )
           ),                          -- beneficiary name

  payee.attribute_category,            -- payee party attr category
  payee_site.attribute_category,       -- payee supplier site attr category
  payee_site.party_site_name,          -- payee supplier site name

  /* VENDOR RELATED */
  vendor_site.vendor_site_code_alt,    -- payee site alternate name
  vendor.segment1,                     -- payee supplier number
  vendor.customer_num,                 -- payee first party reference  -- 50
  vendor.attribute_category,           -- payee supplier attr category
  vendor.vendor_id,                    -- payee supplier id

  /* PAYEE SPECIAL FIELDS */
  IBY_FD_EXTRACT_GEN_PVT.              -- payee tax registration number
       Get_Payee_TaxRegistration
      (vendor.vendor_id,pmt.supplier_site_id),

  /*
   * Fix for bug 5468251:
   *
   * Use AP_SUPPLIERS.NUM_1099 for the payee
   * LE registration number.
   */

  /*
   * Fix for bug 5475920:
   *
   * Payments can be made for employees or suppliers.
   *
   * For employees, the payee le reg num (i.e., taxpayer id)
   * is stored in PER_PEOPLE_X.
   *
   * For suppliers, the payee le reg num (i.e., taxpayer id)
   * is stored in AP_SUPPLIERS.
   *
   * Switch between these two tables depending upon payee type
   * to get the payee le reg num
   */
   /*
   * Fix for bug 5501968:
   *
   * In R12, Federal supports thid party payments i.e., payments
   * to third parties who may not be employees / suppliers.
   *
   * For this reason, we cannot assume that tax payer id for
   * all non-employees will be stored in AP_SUPPLIERS.
   *
   * However, we know that all third parties / suppliers will
   * have a row in HZ_PARTIES. Therefore, pick up the taxpayer
   * id from HZ_PARTIES as this always works.
   */
   /*
   * Fix for bug 5501968:
   *
   * In R12, Federal supports thid party payments i.e., payments
   */
   decode(upper(vendor.vendor_type_lookup_code),
          'EMPLOYEE', per.national_identifier,
          'CONTRACTOR',decode(vendor.organization_type_lookup_code,
                              'INDIVIDUAL',vendor.individual_1099,
                              'FOREIGN INDIVIDUAL',vendor.individual_1099,
   		              'PARTNERSHIP',vendor.individual_1099,
                              'FOREIGN PARTNERSHIP',vendor.individual_1099,
                              vendor.num_1099),
 	  vendor.num_1099),            -- payee Tax Identification Number

  /* PAYEE BANK */
  eba.bank_name,                       -- payee bank name
  eba.bank_number,                     -- payee bank number
  eba.branch_number,                   -- payee bank branch number
  eba.bank_branch_name,                -- payee bank branch name

  /*
   * Fix for bug 5586882:
   *
   * Populate the external bank account using
   * IBY_EXT_BANK_ACCOUNTS.bank_account_num
   * so that we show the unmasked bank account number
   */
  ext_ba_table.bank_account_num,       -- payee bank account number

  eba.bank_account_name,               -- payee bank account name    -- 60
  eba.iban_number,                     -- payee bank account IBAN
  eba.eft_swift_code,                  -- payee bank swift code
  eba.bank_account_type,               -- payee bank account type
  eba.payment_factor_flag,             -- payee bank payment factor flag
  eba.primary_acct_owner_party_id,     -- payee bank owner party id
  eba.branch_party_id,                 -- payee bank branch party id
  eba_bank_branch.bank_name_alt,       -- payee bank name alt
  eba_bank_branch.bank_branch_name_alt, -- payee bank branch name alt
  eba.alternate_account_name,          -- payee bank alt account name
  eba.bank_account_num_electronic,     -- payee bank electronic acct num -- 70
  eba.bank_branch_address_id,          -- payee bank branch location id
  eba.primary_acct_owner_name,         -- payee bank primary acct owner name

  /* REMITTANCE ADVICE RELATED */
  remit_advice.remit_advice_delivery_method,  -- remittance advice delv method
  '',                                  -- remittance advice email
  '',                                  -- remittance advice fax

  /* DELIVERY CHANNEL RELATED */
  deliv.format_value,

  /* DECLARATION REPORT RELATED */
  prof.declaration_curr_fx_rate_type,
  '',                                  -- declaration format

  /* PROFILE RELATED */
  prof.payment_profile_name,           -- account profile name       -- 80
  prof.system_profile_name,            -- system profile name

  /* PAYMENT REASON */
  pmt_reason.format_value,

  /* BANK INSTRUCTION */
  bank_instr1.format_value,
  bank_instr2.format_value,

  /* LE */
  le.name,

  /* RFC */
  rfc_ca.class_code,

  /* REQUEST */
  payreq.call_app_pay_service_req_code,-- ppr name
  fnd_app.application_name,             -- source product            -- 88



      /*TPP-Start*/
invpayee.party_name 		inv_payee_name,
null		inv_payee_address1,
null		inv_payee_address2,
null		inv_payee_address3,
null		inv_payee_address4,
null		inv_payee_city,
null		inv_payee_postal_code,
null		inv_payee_state,
null		inv_payee_province,
null		inv_payee_county,
null		inv_payee_country,
invpayee.party_name 		inv_payee_party_name,

decode(upper(invvendor.vendor_type_lookup_code),
          'CONTRACTOR',decode(invvendor.organization_type_lookup_code,
                              'INDIVIDUAL',invvendor.individual_1099,
                              'FOREIGN INDIVIDUAL',invvendor.individual_1099,
   		              'PARTNERSHIP',invvendor.individual_1099,
                              'FOREIGN PARTNERSHIP',invvendor.individual_1099,
                              invvendor.num_1099),
 	  invvendor.num_1099)	inv_payee_le_reg_num,

IBY_FD_EXTRACT_GEN_PVT.
 Get_Payee_TaxRegistration (invvendor.vendor_id,pmt.inv_supplier_site_id)
				inv_payee_tax_reg_num,

null 	inv_payee_address_concat,
DECODE (pmt.inv_beneficiary_party,
              NULL,
              invpayee.party_name,
              (SELECT
                   benef_party.party_name
               FROM
                   HZ_PARTIES benef_party
               WHERE
                   benef_party.party_id=pmt.inv_beneficiary_party
              )
           ) 			inv_beneficiary_name,

invpayee.party_number 		inv_payee_party_number,
invpayee.organization_name_phonetic	inv_payee_alternate_name,
invvendor_site.vendor_site_code_alt	inv_payee_site_alt_name,
invvendor.segment1			inv_payee_supplier_number,
invvendor.customer_num			inv_payee_first_party_ref,

null ext_bnk_acct_ownr_inv_prty_id,
null ext_bnk_branch_inv_prty_id,
null ext_bnk_acct_ownr_inv_prty_nme,

invpayee.attribute_category		inv_payee_party_attr_cat,
invvendor.attribute_category		inv_payee_supplier_attr_cat,
invpayee_site.attribute_category	inv_payee_spplr_site_attr_cat,
invpayee_site.party_site_name		inv_payee_supplier_site_name,
invvendor_site.vendor_site_code_alt	inv_payee_spplr_site_alt_name,
invvendor.vendor_id			inv_payee_supplier_id
      /*TPP-End*/

 FROM

  /* Payment related */
  IBY_PAYMENTS_ALL         pmt,

  /* Profile related */
  IBY_PAYMENT_PROFILES     prof,

  /* Payer */
  XLE_FIRSTPARTY_INFORMATION_V  payer,
  HZ_PARTIES               payer_party,

  /* Payer bank */
  CE_BANK_ACCOUNTS         iba,
  CE_BANK_BRANCHES_V       iba_bnk_branch,
  HZ_PARTY_SITES           iba_branch_party_site,

  /* Payee */
  HZ_PARTIES               payee,
  HZ_PARTIES               invpayee,

  /* Vendor related */
  AP_SUPPLIERS               vendor,
  AP_SUPPLIER_SITES_ALL      vendor_site,

  /* Inv Vendor related */
  AP_SUPPLIERS               invvendor,
  AP_SUPPLIER_SITES_ALL      invvendor_site,

  /* Employee related */
  PER_PEOPLE_X             per,

  /* Payee site */
  HZ_PARTY_SITES           payee_site,
  HZ_PARTY_SITES           invpayee_site,

  /* Payee bank */
  IBY_EXT_BANK_ACCOUNTS_V  eba,
  IBY_EXT_BANK_ACCOUNTS    ext_ba_table,
  CE_BANK_BRANCHES_V       eba_bank_branch,

  /* Remit advice related */
  IBY_REMIT_ADVICE_SETUP   remit_advice,

  /* Payment service request related */
  IBY_PAY_SERVICE_REQUESTS payreq,
  FND_APPLICATION_ALL_VIEW fnd_app,

  /* Delivery channel related */
  IBY_DELIVERY_CHANNELS_VL deliv,

  /* Payment reason related */
  IBY_PAYMENT_REASONS_VL   pmt_reason,

  /* Bank instruction related */
  IBY_BANK_INSTRUCTIONS_VL bank_instr1,
  IBY_BANK_INSTRUCTIONS_VL bank_instr2,

  /* Legal Entity related */
  xle_entity_profiles le,

  /* RFC */
  HZ_CODE_ASSIGNMENTS          rfc_ca,

  /*
   * Fix for bug 5928084:
   *
   * Derive address of employee type payees using
   * PER_ADDRESSES or HR_LOCATIONS.
   *
   * The select statement below dynamically creates the payee
   * address table. The dynamically created table is named
   * as payee_add. Columns from this table are referenced in the
   * outer select.
   *
   * The payee address can be either a
   *  - supplier address, or
   *  - employee address
   *
   * We decide whether we should pick up supplier addresses or
   * employee addresses using the 'address source' field on the
   * payment.
   *
   * 'address source' can contain two values
   *  - TCA: supplier address
   *  - HR : employee address
   *
   * Supplier addresses are present in TCA and are located using
   * remit to location id column on the payment.
   *
   * Employee addresses can be in either
   *   - PER_ADDRESSES (home addresses)
   *   - HR_LOCATIONS  (office addresses)
   * We use the 'employee address code' field on the payment to
   * decide which table to use.
   *
   * The select below uses decode clause to perform the
   * if else logic to retrieve the address from the right
   * column.
   *
   * Roughly, the decode clauses are used to effect the following
   * logic -
   *
   * for each add field:
   * if (pmt.address_source = 'TCA')
   * {
   *   -- get the address field from HZ_LOCATIONS --
   * }
   * else
   * {
   *     -- this is an employee address --
   *     if (pmt.employee_address_code = 'HOME')
   *     {
   *         -- get the address field from PER_ADDRESSES --
   *
   *         The select logic for this has been lifted from
   *         AP's expense report import program.
   *     }
   *     else
   *     {
   *         -- get the address field from HR_LOCATIONS --
   *
   *         The select logic for this has been lifted from
   *         /patch/115/sql/apwexptb.pls.
   *     }
   * }
   */
  (
     SELECT

      /* payee add line1 */
      DECODE(
        pmt.address_source,

        -- supplier address line 1
        'TCA', payee_loc.address1,

        -- employee add line 1
        DECODE
        (
          pmt.employee_address_code,

          -- employee home addr line 1
          'HOME', per_addr.address_line1,

          -- employee office addr line 1
          'OFFICE',per_loc.address_line_1,

          -- employee provisional addr line 1
          'PROVISIONAL', per_addr_prov.address_line1,

          --address code not specified
          DECODE (per_addr.address_id,
                 NULL, per_loc.address_line_1,
                 per_addr.address_line1)
         )

        ) add_line1,

      /* payee add line2 */
      DECODE(
        pmt.address_source,

        -- supplier address line 2
        'TCA', payee_loc.address2,

        -- employee add line 2
        DECODE
        (
          pmt.employee_address_code,

          -- employee home addr line 2
          'HOME', per_addr.address_line2,

          -- employee office addr line 2
          'OFFICE',per_loc.address_line_2,

          -- employee provisional addr line 2
          'PROVISIONAL', per_addr_prov.address_line2,

          --address code not specified
          DECODE (per_addr.address_id,
                 NULL, per_loc.address_line_2,
                 per_addr.address_line2)
         )
        ) add_line2,


      /* payee add line3 */
      DECODE(
        pmt.address_source,

        -- supplier address line 3
        'TCA', payee_loc.address3,

        -- employee add line 3
        DECODE
        (
          pmt.employee_address_code,

          -- employee home addr line 3
          'HOME', per_addr.address_line3,

          -- employee office addr line 3
          'OFFICE',per_loc.address_line_3,

          -- employee provisional addr line 3
          'PROVISIONAL', per_addr_prov.address_line3,

          --address code not specified
          DECODE (per_addr.address_id,
                 NULL, per_loc.address_line_3,
                 per_addr.address_line3)
         )

        ) add_line3,


      /* payee add line4 */
      DECODE(
        pmt.address_source,

        -- supplier address line 4
        'TCA', payee_loc.address4,

        -- employee home/office addr line 4 (not available)
        null

        ) add_line4,

      /* payee city */
      DECODE(
        pmt.address_source,

        -- supplier city
        'TCA', payee_loc.city,

        -- employee city
        DECODE
        (
          pmt.employee_address_code,

          -- employee home city
          'HOME', per_addr.town_or_city,

          -- employee office city
          'OFFICE', per_loc.town_or_city,

          -- employee provisional city
          'PROVISIONAL', per_addr_prov.town_or_city,

          -- address code not specified
          DECODE (per_addr.address_id,
                 NULL, per_loc.town_or_city,
                 per_addr.town_or_city)
          )

        ) city,


      /* payee county */
      DECODE(
        pmt.address_source,

        -- supplier county
        'TCA', payee_loc.county,

        -- employee county
        (
        DECODE(
          pmt.employee_address_code,

          -- employee home county
          'HOME',
          DECODE(
            per_addr.style,
            'US',     NVL(per_addr.region_1,   ''),
            'US_GLB', NVL(per_addr.region_1,   ''),
            'IE',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            'IE_GLB', NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            'GB',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            ''),

          -- employee office county
          'OFFICE',
          DECODE(
            per_loc.style,
            'US',      NVL(per_loc.region_1,   ''),
            'US_GLB',  NVL(per_loc.region_1,   ''),
            'IE',      NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            'IE_GLB',  NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            'GB',      NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            ''),


          -- employee provisional county
          'PROVISIONAL',
          DECODE(
            per_addr_prov.style,
            'US',     NVL(per_addr_prov.region_1,   ''),
            'US_GLB', NVL(per_addr_prov.region_1,   ''),
            'IE',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr_prov.style,
                                  per_addr_prov.region_1),
                        ''),
            'IE_GLB', NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr_prov.style,
                                  per_addr_prov.region_1),
                        ''),
            'GB',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr_prov.style,
                                  per_addr_prov.region_1),
                        ''),
            ''),


            --address code not specified
            decode(per_addr.address_id,
            NULL,DECODE(
            per_loc.style,
            'US',      NVL(per_loc.region_1,   ''),
            'US_GLB',  NVL(per_loc.region_1,   ''),
            'IE',      NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            'IE_GLB',  NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            'GB',      NVL(ap_web_db_expline_pkg.
                               getcountyprovince(
                                   per_loc.style,
                                   per_loc.region_1),
                         ''),
            ''),
             DECODE(
            per_addr.style,
            'US',     NVL(per_addr.region_1,   ''),
            'US_GLB', NVL(per_addr.region_1,   ''),
            'IE',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            'IE_GLB', NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            'GB',     NVL(ap_web_db_expline_pkg.
                              getcountyprovince(
                                  per_addr.style,
                                  per_addr.region_1),
                        ''),
            ''))
            )
          )
        ) county,

      /* payee province */
      DECODE(
        pmt.address_source,

        -- supplier province
        'TCA', payee_loc.province,

        -- employee province
        (
        DECODE(

          pmt.employee_address_code,

          -- employee home province
          'HOME',
          DECODE(per_addr.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_addr.region_1,   ''),
            'CA_GLB',  NVL(per_addr.region_1,   ''),
            'JP',      NVL(per_addr.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_addr.style,
                        per_addr.region_1),
              '')
            ),

          -- employee office province
          'OFFICE',
          DECODE(per_loc.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_loc.region_1,   ''),
            'CA_GLB',  NVL(per_loc.region_1,   ''),
            'JP',      NVL(per_loc.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_loc.style,
                        per_loc.region_1),
              '')
              ),

          -- employee provisional province
          'PROVISIONAL',
          DECODE(per_addr_prov.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_addr_prov.region_1,   ''),
            'CA_GLB',  NVL(per_addr_prov.region_1,   ''),
            'JP',      NVL(per_addr_prov.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_addr_prov.style,
                        per_addr_prov.region_1),
              '')
            ),

            --address code not specified
            decode(per_addr.address_id,
            NULL,DECODE(per_loc.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_loc.region_1,   ''),
            'CA_GLB',  NVL(per_loc.region_1,   ''),
            'JP',      NVL(per_loc.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_loc.style,
                        per_loc.region_1),
              '')
              ),
             DECODE(per_addr.style,
            'US',      '',
            'US_GLB',  '',
            'IE',      '',
            'IE_GLB',  '',
            'GB',      '',
            'CA',      NVL(per_addr.region_1,   ''),
            'CA_GLB',  NVL(per_addr.region_1,   ''),
            'JP',      NVL(per_addr.region_1,   ''),
            NVL(ap_web_db_expline_pkg.
                    getcountyprovince(
                        per_addr.style,
                        per_addr.region_1),
              '')
            ))
            )
          )
        ) province,

      /* payee state */
      DECODE(
        pmt.address_source,

        -- supplier state
        'TCA', payee_loc.state,

         -- employee state
         (
         DECODE(
           pmt.employee_address_code,

           -- employee home state
           'HOME',
           DECODE(per_addr.style,
             'CA',     '',
             'CA_GLB', '',
             NVL(per_addr.region_2,   '')),

           -- employee office state
           'OFFICE',
           DECODE(per_loc.style,
             'CA',     '',
             'CA_GLB', '',
             NVL(per_loc.region_2, '')),

           -- employee provisional state
           'PROVISIONAL',
           DECODE(per_addr_prov.style,
             'CA',     '',
             'CA_GLB', '',
             NVL(per_addr_prov.region_2,   '')),

           --address code not specified
           decode(per_addr.address_id,
           NULL,DECODE(per_loc.style,
             'CA',     '',
             'CA_GLB', '',
              NVL(per_loc.region_2, '')),
            DECODE(per_addr.style,
             'CA',     '',
             'CA_GLB', '',
              NVL(per_addr.region_2,   '')))
           )
         )
       ) state,

     /* payee country */
      DECODE(
        pmt.address_source,

        -- supplier country
        'TCA', payee_loc.country,

        -- employee country
        (
        DECODE(
          pmt.employee_address_code,

          -- employee home country
          'HOME', per_addr.country,

          -- employee office country
          'OFFICE',per_loc.country,

          -- employee provisional country
          'PROVISIONAL', per_addr_prov.country,

          --address code not specified
          DECODE (per_addr.address_id,
               NULL, per_loc.country,
               per_addr.country
               )
          )
        )
        ) country,

      /* payee postal code */
      DECODE(
        pmt.address_source,

        -- supplier postal code
        'TCA', payee_loc.postal_code,

        -- employee postal code
        (
        DECODE(
          pmt.employee_address_code,

          -- employee home postal code
          'HOME', per_addr.postal_code,

          -- employee office postal code
          'OFFICE',per_loc.postal_code,

          -- employee provisional postal code
          'PROVISIONAL', per_addr_prov.postal_code,

          --address code not specified
          DECODE (per_addr.address_id,
               NULL, per_loc.postal_code,
               per_addr.postal_code
               )
          )
        )
        ) postal_code,


      /* payee address concat */
      DECODE(
        pmt.address_source,

        -- supplier address concat
        'TCA',
        payee_loc.address1
          || ', '
          || payee_loc.address2
          || ', '
          || payee_loc.address3
          || ', '
          || payee_loc.city
          || ', '
          || payee_loc.state
          || ', '
          || payee_loc.country
          || ', '
          || payee_loc.postal_code,

        -- employee address concat
        (
        DECODE(
          pmt.employee_address_code,

          -- employee home address concat
          'HOME',
          per_addr.address_line1
            || ', '
            || per_addr.address_line2
            || ', '
            || per_addr.address_line3
            || ', '
            || per_addr.town_or_city
            || ', '
            || DECODE(
                 per_addr.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_addr.region_2, '')
                 )
            || ', '
            || per_addr.country
            || ', '
            || per_addr.postal_code,

          -- employee office address concat
          'OFFICE',
          per_loc.address_line_1
            || ', '
            || per_loc.address_line_2
            || ', '
            || per_loc.address_line_3
            || ', '
            || per_loc.town_or_city
            || ', '
            || DECODE(
                 per_loc.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_loc.region_2, '')
                 )
            || ', '
            || per_loc.country
            || ', '
            || per_loc.postal_code,

          -- employee provisional address concat
          'PROVISIONAL',
          per_addr_prov.address_line1
            || ', '
            || per_addr_prov.address_line2
            || ', '
            || per_addr_prov.address_line3
            || ', '
            || per_addr_prov.town_or_city
            || ', '
            || DECODE(
                 per_addr_prov.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_addr_prov.region_2, '')
                 )
            || ', '
            || per_addr_prov.country
            || ', '
            || per_addr_prov.postal_code,
          -- address code not specified
          DECODE (per_addr.address_id,
               NULL, per_loc.address_line_1
            || ', '
            || per_loc.address_line_2
            || ', '
            || per_loc.address_line_3
            || ', '
            || per_loc.town_or_city
            || ', '
            || DECODE(
                 per_loc.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_loc.region_2, '')
                 )
            || ', '
            || per_loc.country
            || ', '
            || per_loc.postal_code,

              per_addr.address_line1
            || ', '
            || per_addr.address_line2
            || ', '
            || per_addr.address_line3
            || ', '
            || per_addr.town_or_city
            || ', '
            || DECODE(
                 per_addr.style,
                 'CA',     '',
                 'CA_GLB', '',
                 NVL(per_addr.region_2, '')
                 )
            || ', '
            || per_addr.country
            || ', '
            || per_addr.postal_code)
          )
        )
      ) add_concat

  FROM
      IBY_PAYMENTS_ALL         pmt,

      /* Employee address related */
      HR_LOCATIONS             per_loc,
      PER_ADDRESSES            per_addr,
      PER_ALL_ASSIGNMENTS_F    per_assgn,
      PER_ADDRESSES            per_addr_prov,

      /* Supplier address related */
      HZ_LOCATIONS             payee_loc
  WHERE
    pmt.payment_id                     = p_payment_id
    AND pmt.employee_person_id         = per_addr.person_id(+)
    AND per_addr.primary_flag(+) = 'Y'
    AND SYSDATE BETWEEN
            per_addr.date_from(+)
            AND NVL(per_addr.date_to(+), SYSDATE+1)
    AND pmt.employee_person_id         = per_addr_prov.person_id(+)
    AND per_addr_prov.address_type(+) = 'M'
    AND SYSDATE BETWEEN
            per_addr_prov.date_from(+)
            AND NVL(per_addr_prov.date_to(+), SYSDATE+1)
    AND pmt.employee_person_id         = per_assgn.person_id(+)
    AND per_assgn.location_id          = per_loc.location_id(+)
    AND per_assgn.primary_flag(+)      = 'Y'
    AND (TRUNC(SYSDATE) BETWEEN
            per_assgn.effective_start_date(+)
            AND per_assgn.effective_end_date(+)
        )
    AND pmt.remit_to_location_id       = payee_loc.location_id(+)
  ) payee_addr

 WHERE

  /* payment related */
  pmt.payment_id                     = p_payment_id

  /* payer */
  AND pmt.legal_entity_id            = payer.legal_entity_id
  AND payer.party_id                 = payer_party.party_id

  /* payer bank */
  AND pmt.internal_bank_account_id   = iba.bank_account_id
  AND iba_bnk_branch.branch_party_id = iba.bank_branch_id

  /* payer bank location */
  AND iba_bnk_branch.branch_party_id = iba_branch_party_site.party_id(+)

  /* payee */
  AND pmt.payee_party_id             = payee.party_id

  /* payee site */
  AND pmt.party_site_id              = payee_site.party_site_id(+)


  /* inv payee */
  AND pmt.inv_payee_party_id             = invpayee.party_id(+)

  /* inv payee site */
  AND pmt.inv_party_site_id              = invpayee_site.party_site_id(+)

  /* vendor related */
  AND pmt.payee_party_id             = vendor.party_id(+)
  AND pmt.supplier_site_id           = vendor_site.vendor_site_id(+)
  AND vendor.vendor_id               = vendor_site.vendor_id       /*Bug 7323072*/


  /* inv vendor related */
  AND pmt.inv_payee_party_id             = invvendor.party_id(+)
  AND pmt.inv_supplier_site_id           = invvendor_site.vendor_site_id(+)
  AND nvl(vendor.vendor_id,-99)      = nvl(vendor_site.vendor_id,-99)        /*Bug 7323072*/

  /* employee related */
  AND pmt.employee_person_id         = per.person_id(+)

  /* payee bank */
  AND pmt.external_bank_account_id   = eba.ext_bank_account_id(+)
  AND eba.bank_party_id              = eba_bank_branch.bank_party_id(+)
  AND eba.branch_party_id            = eba_bank_branch.branch_party_id(+)

  /*
   * Fix for bug 5658982:
   *
   * We want to use outer join with the eba table because the
   * ext bank account id is optional on the payment.
   *
   * For the same reason, we must use outer join with
   * ext_ba_table table also.
   */
  AND ext_ba_table.ext_bank_account_id(+) = eba.ext_bank_account_id

  /* profile and remit advice */
  AND pmt.payment_profile_id         = prof.payment_profile_id
  AND prof.system_profile_code       = remit_advice.system_profile_code

  /* payment service request related */
  AND payreq.payment_service_request_id  = pmt.payment_service_request_id
  AND fnd_app.application_id         = payreq.calling_app_id

  /* delivery channel related */
  AND pmt.delivery_channel_code      = deliv.delivery_channel_code(+)

  /* payment reason */
  AND pmt.payment_reason_code        = pmt_reason.payment_reason_code(+)

  /* bank instruction */
  AND prof.bank_instruction1_code    = bank_instr1.bank_instruction_code(+)
  AND prof.bank_instruction2_code    = bank_instr2.bank_instruction_code(+)

  /* Org related */
  AND pmt.org_id                     = le.legal_entity_id

  /* RFC related */
  AND rfc_ca.owner_table_name(+)     = 'HZ_PARTIES'
  AND rfc_ca.class_category(+)       = 'RFC_IDENTIFIER'
  AND rfc_ca.owner_table_id(+)       = iba.bank_branch_id
  ;
Line: 13904

      * Update the IBY_PAYMENTS_ALL table using the retrieved
      * audit information.
      */
     insertAuditData(l_pmtAuditTab);
Line: 13915

 |     insertAuditData
 |
 | PURPOSE:
 |
 |
 | PARAMETERS:
 |     IN
 |
 |
 |     OUT
 |
 |
 | RETURNS:
 |
 | NOTES:
 |
 *---------------------------------------------------------------------*/
 PROCEDURE insertAuditData(
     p_auditPmtTab    IN paymentAuditTabType
     )
 IS

 l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME || '.insertAuditData';
Line: 13947

             || 'was provided to update IBY_PAYMENTS_ALL table. '
             || 'Exiting ..'
             );
Line: 13960

         UPDATE
             IBY_PAYMENTS_ALL
         SET
             payer_party_number             = p_auditPmtTab(i).
                                                  payer_party_number,
             payer_party_site_name          = p_auditPmtTab(i).
                                                  payer_party_site_name,
             payer_legal_entity_name        = p_auditPmtTab(i).payer_legal_name,
             payer_tax_registration_num     = p_auditPmtTab(i).
                                                  payer_tax_reg_number,
             payer_le_registration_num      = p_auditPmtTab(i).
                                                  payer_le_reg_number,
             payer_party_id                 = p_auditPmtTab(i).
                                                  payer_party_id,
             payer_location_id              = p_auditPmtTab(i).
                                                  payer_location_id,
             payer_party_attr_category      = p_auditPmtTab(i).
                                                  payer_party_attr_cat,
             payer_le_attr_category         = p_auditPmtTab(i).
                                                  payer_le_attr_cat,
             payer_abbreviated_agency_code  = p_auditPmtTab(i).
                                                  payer_abbrev_agency_code,
             payer_federal_us_employer_id   = p_auditPmtTab(i).
                                                  payer_us_employer_id,
             int_bank_name                  = p_auditPmtTab(i).payer_bank_name,
             int_bank_number                = p_auditPmtTab(i).
                                                  payer_bank_number,
             int_bank_branch_number         = p_auditPmtTab(i).
                                                  payer_bank_branch_number,
             int_bank_branch_name           = p_auditPmtTab(i).
                                                  payer_bank_branch_name,
             int_eft_swift_code             = p_auditPmtTab(i).
                                                  payer_bank_swift_code,
             int_bank_account_number        = p_auditPmtTab(i).
                                                  payer_bank_acct_num,
             int_bank_account_name          = p_auditPmtTab(i).
                                                  payer_bank_acct_name,
             int_bank_account_iban          = p_auditPmtTab(i).
                                                  payer_bank_acct_iban,
             int_bank_acct_agency_loc_code  = p_auditPmtTab(i).
                                                  payer_bank_agency_loc_code,
             int_bank_branch_party_id       = p_auditPmtTab(i).
                                                  payer_bank_branch_party_id,
             int_bank_alt_name              = p_auditPmtTab(i).
                                                  payer_bank_alt_name,
             int_bank_branch_alt_name       = p_auditPmtTab(i).
                                                  payer_bank_branch_alt_name,
             int_bank_account_alt_name      = p_auditPmtTab(i).
                                                  payer_bank_alt_account_name,
             int_bank_account_num_elec      = p_auditPmtTab(i).
                                                  payer_bank_account_num_elec,
             int_bank_branch_location_id    = p_auditPmtTab(i).
                                                  payer_bank_branch_location_id,
             int_bank_branch_eft_user_num   = p_auditPmtTab(i).
                                              payer_bank_branch_eft_user_num,
             payee_party_number             = p_auditPmtTab(i).
                                                  payee_party_number,
             payee_party_name               = p_auditPmtTab(i).payee_party_name,
             payee_name                     = p_auditPmtTab(i).payee_name,
             payee_alternate_name           = p_auditPmtTab(i).payee_name_alternate,     -- Bug 6175102
             payee_address1                 = p_auditPmtTab(i).payee_add_line_1,
             payee_address2                 = p_auditPmtTab(i).payee_add_line_2,
             payee_address3                 = p_auditPmtTab(i).payee_add_line_3,
             payee_address4                 = p_auditPmtTab(i).payee_add_line_4,
             payee_city                     = p_auditPmtTab(i).payee_city,
             payee_county                   = p_auditPmtTab(i).payee_county,
             payee_province                 = p_auditPmtTab(i).payee_province,
             payee_state                    = p_auditPmtTab(i).payee_state,
             payee_country                  = p_auditPmtTab(i).payee_country,
             payee_postal_code              = p_auditPmtTab(i).
                                                  payee_postal_code,
             payee_address_concat           = p_auditPmtTab(i).
                                                  payee_address_concat,
             beneficiary_name               = p_auditPmtTab(i).
                                                  beneficiary_name,
             payee_party_attr_category      = p_auditPmtTab(i).
                                                  payee_party_attr_cat,
             payee_spplr_site_attr_category = p_auditPmtTab(i).
                                                  payee_supplier_site_attr_cat,
             payee_supplier_site_name       = p_auditPmtTab(i).
                                                  payee_supplier_site_name,
             payee_site_alternate_name      = p_auditPmtTab(i).
                                                  payee_site_name_alternate,
             payee_supplier_number          = p_auditPmtTab(i).
                                                  payee_supplier_number,
             payee_first_party_reference    = p_auditPmtTab(i).
                                                  payee_first_party_ref,
             payee_supplier_attr_category   = p_auditPmtTab(i).
                                                  payee_supplier_attr_cat,
             payee_supplier_id              = p_auditPmtTab(i).
                                                  payee_supplier_id,
             payee_tax_registration_num     = p_auditPmtTab(i).
                                                  payee_tax_reg_number,
             payee_le_registration_num      = p_auditPmtTab(i).
                                                  payee_le_reg_number,
             ext_bank_name                  = p_auditPmtTab(i).payee_bank_name,
             ext_bank_number                = p_auditPmtTab(i).
                                                  payee_bank_number,
             ext_branch_number              = p_auditPmtTab(i).
                                                  payee_bank_branch_number,
             ext_bank_branch_name           = p_auditPmtTab(i).
                                                  payee_bank_branch_name,
             ext_bank_account_number        = p_auditPmtTab(i).
                                                  payee_bank_acct_number,
             ext_bank_account_name          = p_auditPmtTab(i).
                                                  payee_bank_acct_name,
             ext_bank_account_iban_number   = p_auditPmtTab(i).
                                                  payee_bank_acct_iban,
             ext_eft_swift_code             = p_auditPmtTab(i).
                                                  payee_bank_swift_code,
             ext_bank_account_type          = p_auditPmtTab(i).
                                                  payee_bank_acct_type,
             ext_bank_acct_pmt_factor_flag  = p_auditPmtTab(i).
                                                 payee_bank_payment_factor_flag,
             ext_bank_acct_owner_party_id   = p_auditPmtTab(i).
                                                  payee_bank_owner_party_id,
             ext_bank_branch_party_id       = p_auditPmtTab(i).
                                                  payee_bank_branch_party_id,
             ext_bank_alt_name              = p_auditPmtTab(i).
                                                  payee_bank_name_alt,
             ext_bank_branch_alt_name       = p_auditPmtTab(i).
                                                  payee_bank_branch_name_alt,
             ext_bank_account_alt_name      = p_auditPmtTab(i).
                                                  payee_bank_alt_account_name,
             ext_bank_account_num_elec      = p_auditPmtTab(i).
                                              payee_bank_electronic_acct_num,
             ext_bank_branch_location_id    = p_auditPmtTab(i).
                                                  payee_bank_branch_location_id,
             ext_bank_acct_owner_party_name = p_auditPmtTab(i).
                                                  payee_bank_acct_owner_name,
             remit_advice_delivery_method   = p_auditPmtTab(i).
                                                  remit_advice_delivery_method,
             remit_advice_email             = p_auditPmtTab(i).
                                                  remit_advice_email,
             remit_advice_fax               = p_auditPmtTab(i).
                                                  remit_advice_fax,

             /*
              * Fix for bug 5522421:
              *
              * sra_delivery_method is the same as
              * remit_advice_delivery_method and is
              * being obsoleted.
              */
             --sra_delivery_method            = p_auditPmtTab(i).
             --                                     remit_advice_delv_method,

             delivery_channel_format_value  = p_auditPmtTab(i).
                                                  delivery_channel_format,
             declaration_exch_rate_type     = p_auditPmtTab(i).
                                                  decl_curr_fx_rate_type,
             declaration_format             = p_auditPmtTab(i).
                                                  declaration_format,
             payment_profile_acct_name      = p_auditPmtTab(i).
                                                  payment_acct_profile_name,
             payment_profile_sys_name       = p_auditPmtTab(i).
                                                  payment_sys_profile_name,
             payment_reason_format_value    = p_auditPmtTab(i).
                                                  payment_reason_format,
             bank_instruction1_format_value = p_auditPmtTab(i).
                                                  bank_instr1_format,
             bank_instruction2_format_value = p_auditPmtTab(i).
                                                  bank_instr2_format,
             org_name                       = p_auditPmtTab(i).org_name,
             int_bank_branch_rfc_identifier = p_auditPmtTab(i).
                                                  payer_bank_branch_rfc_id,
             payment_process_request_name   = p_auditPmtTab(i).ppr_name,
             source_product                 = p_auditPmtTab(i).source_product,

/*TPP-Start*/
inv_payee_name = p_auditPmtTab(i).inv_payee_name,
inv_payee_address1 = p_auditPmtTab(i).inv_payee_address1,
inv_payee_address2 = p_auditPmtTab(i).inv_payee_address2,
inv_payee_address3 = p_auditPmtTab(i).inv_payee_address3,
inv_payee_address4 = p_auditPmtTab(i).inv_payee_address4,
inv_payee_city = p_auditPmtTab(i).inv_payee_city,
inv_payee_postal_code = p_auditPmtTab(i).inv_payee_postal_code,
inv_payee_state = p_auditPmtTab(i).inv_payee_state,
inv_payee_province = p_auditPmtTab(i).inv_payee_province,
inv_payee_county = p_auditPmtTab(i).inv_payee_county,
inv_payee_country = p_auditPmtTab(i).inv_payee_country,
inv_payee_party_name = p_auditPmtTab(i).inv_payee_party_name,
inv_payee_le_reg_num = p_auditPmtTab(i).inv_payee_le_reg_num,
inv_payee_tax_reg_num = p_auditPmtTab(i).inv_payee_tax_reg_num,
inv_payee_address_concat = p_auditPmtTab(i).inv_payee_address_concat,
inv_beneficiary_name = p_auditPmtTab(i).inv_beneficiary_name,
inv_payee_party_number = p_auditPmtTab(i).inv_payee_party_number,
inv_payee_alternate_name = p_auditPmtTab(i).inv_payee_alternate_name,
inv_payee_site_alt_name = p_auditPmtTab(i).inv_payee_site_alt_name,
inv_payee_supplier_number = p_auditPmtTab(i).inv_payee_supplier_number,
inv_payee_first_party_ref = p_auditPmtTab(i).inv_payee_first_party_ref,
ext_bnk_acct_ownr_inv_prty_id = p_auditPmtTab(i).ext_bnk_acct_ownr_inv_prty_id,
ext_bnk_branch_inv_prty_id = p_auditPmtTab(i).ext_bnk_branch_inv_prty_id,
ext_bnk_acct_ownr_inv_prty_nme = p_auditPmtTab(i).ext_bnk_acct_ownr_inv_prty_nme,
inv_payee_party_attr_cat = p_auditPmtTab(i).inv_payee_party_attr_cat,
inv_payee_supplier_attr_cat = p_auditPmtTab(i).inv_payee_supplier_attr_cat,
inv_payee_spplr_site_attr_cat = p_auditPmtTab(i).inv_payee_spplr_site_attr_cat,
inv_payee_supplier_site_name = p_auditPmtTab(i).inv_payee_supplier_site_name,
inv_payee_spplr_site_alt_name = p_auditPmtTab(i).inv_payee_spplr_site_alt_name,
inv_payee_supplier_id = p_auditPmtTab(i).inv_payee_supplier_id
/*TPP-End*/

         WHERE
             payment_id                     = p_auditPmtTab(i).payment_id
         ;
Line: 14170

 END insertAuditData;