DBA Data[Home] [Help]

TRIGGER: APPS.JL_BR_AR_OCC_DOCS_DUE_DATE_CHG

Source

Description
jl_br_ar_occ_docs_due_date_chg
AFTER UPDATE OF due_date
ON AR_PAYMENT_SCHEDULES_ALL
FOR EACH ROW
Type
AFTER EACH ROW
Event
UPDATE
Column
When
(sys_context('JG','JGZZ_COUNTRY_CODE') in ('BR'))
OR (to_char(new.org_id) <> nvl(sys_context('JG','JGZZ_ORG_ID'),'XX'))
Referencing
REFERENCING NEW AS NEW OLD AS OLD
Body
DECLARE

    X_occurrence_id          jl_br_ar_occurrence_docs_all.occurrence_id%TYPE;
    X_document_id            jl_br_ar_collection_docs_all.document_id%TYPE;
    X_bordero_id             jl_br_ar_collection_docs_all.bordero_id%TYPE;
    --X_bank_number          jl_br_ar_occurrence_docs_all.bank_number%TYPE;
    X_bank_party_id          jl_br_ar_occurrence_docs_all.bank_party_id%TYPE;
    X_bank_occurrence_type   jl_br_ar_occurrence_docs_all.bank_occurrence_type%TYPE;
    X_bank_occurrence_code   jl_br_ar_occurrence_docs_all.bank_occurrence_code%TYPE;
    X_bank_occurrence_exists BOOLEAN := TRUE;
    X_remittance_media       jl_br_ar_occurrence_docs_all.remittance_media%TYPE;
    X_bordero_type           jl_br_ar_borderos_all.bordero_type%TYPE;
    l_country_code           VARCHAR2(100);

BEGIN

    IF (to_char(:new.org_id) <> nvl(sys_context('JG','JGZZ_ORG_ID'),'XX')) THEN

       l_country_code := JG_ZZ_SHARED_PKG.GET_COUNTRY(:new.org_id,NULL,NULL);

       JG_CONTEXT.name_value('JGZZ_COUNTRY_CODE',l_country_code);

       JG_CONTEXT.name_value('JGZZ_ORG_ID',to_char(:new.org_id));

    END IF;

   IF (sys_context('JG','JGZZ_COUNTRY_CODE') = 'BR') THEN

    IF (:new.global_attribute11 = 'Y') and (:old.due_date <> :new.due_date)
    THEN
      BEGIN
        SELECT doc.document_id,
               doc.bordero_id,
               bor.bordero_type
        INTO   X_document_id,
               X_bordero_id,
               X_bordero_type
        FROM   jl_br_ar_collection_docs doc,
               jl_br_ar_borderos_all bor
        WHERE  doc.payment_schedule_id = :new.payment_schedule_id
               AND bor.bordero_id = doc.bordero_id
               AND doc.document_status not in
                  ('CANCELED','TOTALLY_RECEIVED', 'REFUSED', 'PARTIALLY_RECEIVED','WRITTEN_OFF');

        EXCEPTION
          WHEN NO_DATA_FOUND THEN
            X_bank_occurrence_exists := FALSE;
        END;

      IF X_bordero_type in ('COLLECTION','FACTORING') THEN

          BEGIN
            /* CE uptake - Bug#2932986
            SELECT boc.bank_number,
                   boc.bank_occurrence_code,
                   boc.bank_occurrence_type,
                   boc.remittance_media
            INTO   X_bank_number,
                   X_bank_occurrence_code,
                   X_bank_occurrence_type,
                   X_remittance_media
            FROM   jl_br_ar_borderos b,
                   jl_br_ar_bank_occurrences boc,
                   ap_bank_accounts_all acc,
                   ap_bank_branches bra
            WHERE  b.bank_account_id = acc.bank_account_id
                   AND acc.bank_branch_id = bra.bank_branch_id
                   AND b.bordero_id = X_bordero_id
                   AND boc.bank_number = bra.bank_number
                   AND boc.bank_occurrence_type = 'REMITTANCE_OCCURRENCE'
                   AND boc.std_occurrence_code  = 'DUE_DATE_CHANGING';
            */

            SELECT boc.bank_party_id,
                   boc.bank_occurrence_code,
                   boc.bank_occurrence_type,
                   boc.remittance_media
            INTO   X_bank_party_id,
                   X_bank_occurrence_code,
                   X_bank_occurrence_type,
                   X_remittance_media
            FROM   jl_br_ar_borderos b,
                   jl_br_ar_bank_occurrences boc,
                   ce_bank_accounts acct,
                   ce_bank_acct_uses_all acctUse,
                   hz_parties HzPartyBank
             Where b.bank_acct_use_id = acctUse.bank_acct_use_id
                   And acctUse.bank_account_id = acct.bank_account_id
                   And acct.bank_id =  HzPartyBank.party_id
                   --And HzPartyBank.Country = 'BR'
                   AND boc.bank_party_id = HzPartyBank.party_id
                   AND b.bordero_id = X_bordero_id
                   AND boc.bank_occurrence_type = 'REMITTANCE_OCCURRENCE'
                   AND boc.std_occurrence_code  = 'DUE_DATE_CHANGING';

            EXCEPTION
              WHEN NO_DATA_FOUND THEN
                X_bank_occurrence_exists := FALSE;
            END;

          IF X_bank_occurrence_exists
          THEN

            SELECT jl_br_ar_occurrence_docs_s.nextval
            INTO   X_occurrence_id
            FROM   dual;

            -- CE uptake - Bug#2932986 ; insert party_id instead of bank_number
            INSERT INTO jl_br_ar_occurrence_docs
              (
              occurrence_id,
              last_update_date,
              last_updated_by,
              last_update_login,
              creation_date,
              created_by,
              document_id,
              bank_occurrence_code,
              --bank_number,
              bank_party_id,
              bank_occurrence_type,
              occurrence_date,
              occurrence_status,
              original_remittance_media,
              remittance_media,
              selection_date,
              bordero_id,
              portfolio_code,
              trade_note_number,
              due_date,
              document_amount,
              org_id
              )
              VALUES
              (
              X_occurrence_id,
              SYSDATE,
              :new.last_updated_by,
              :new.last_update_login,
              SYSDATE,
              :new.created_by,
              X_document_id,
              X_bank_occurrence_code,
              --X_bank_number,
              X_bank_party_id,
              X_bank_occurrence_type,
              SYSDATE,
              'CREATED',
              X_remittance_media,
              X_remittance_media,
              NULL,
              NULL,
              NULL,
              NULL,
              :new.due_date,
              :new.amount_due_original,
              :new.org_id
              );

          END IF;

      END IF;

    END IF;
   END IF;

END;