Sunday, 17 June 2018

How to create MISCELLANEOUS Receipt in AR in Oracle Apps R12


--CREATING A PROCEDURE TO CREATE MISCELLANEOUS RECEIPT FOR 3400 org

CREATE OR REPLACE PROCEDURE xxfin_create_misc_rec_prc(
    errbuff OUT VARCHAR2,
    retcode OUT VARCHAR2,
    ip_receipt_num IN VARCHAR2)
 
AS
  p_api_version                  NUMBER;
  p_init_msg_list                VARCHAR2(200);
  p_commit                       VARCHAR2(200);
  p_validation_level             NUMBER;
  x_return_status                VARCHAR2(200);
  x_msg_count                    NUMBER;
  x_msg_data                     VARCHAR2(200);
  p_usr_currency_code            VARCHAR2(200);
  p_currency_code                VARCHAR2(200);
  p_usr_exchange_rate_type       VARCHAR2(200);
  p_exchange_rate_type           VARCHAR2(200);
  p_exchange_rate                NUMBER;
  p_exchange_rate_date           DATE;
  p_amount                       NUMBER;
  p_org_id                       NUMBER;
  p_receipt_number               VARCHAR2(200);
  p_receipt_date                 DATE;
  p_gl_date                      DATE;
  p_receivables_trx_id           NUMBER;
  p_activity                     VARCHAR2(200) DEFAULT NULL;
  p_misc_payment_source          VARCHAR2(200):='Created by New Custom Receipt Screen';
  p_tax_code                     VARCHAR2(200);
  p_vat_tax_id                   VARCHAR2(200);
  p_tax_rate                     NUMBER;
  p_tax_amount                   NUMBER DEFAULT NULL;
  p_deposit_date                 DATE;
  p_reference_type               VARCHAR2(200);
  p_reference_num                VARCHAR2(200);
  p_reference_id                 NUMBER;
  p_remittance_bank_account_id   NUMBER;
  p_remittance_bank_account_num  VARCHAR2(200);
  p_remittance_bank_account_name VARCHAR2(200);
  p_receipt_method_id            NUMBER;
  p_receipt_method_name          VARCHAR2(200);
  p_doc_sequence_value           NUMBER;
  p_ussgl_transaction_code       VARCHAR2(200);
  p_anticipated_clearing_date    DATE;
  p_attribute_record AR_RECEIPT_API_PUB.attribute_rec_type;
  p_global_attribute_record AR_RECEIPT_API_PUB.global_attribute_rec_type;
  p_comments                VARCHAR2(200);
  p_misc_receipt_id         NUMBER;
  p_called_from             VARCHAR2(200);
  gc_user_name              VARCHAR2 (100);
  gc_responsibility_name    VARCHAR2 (100);
  gc_application_short_name VARCHAR2 (100);
  gc_org_id                 NUMBER;
  l_error_msg               VARCHAR2 (2000);
  l_receipt_id              NUMBER;
  l_bank_ref_number         VARCHAR2(100);
  lv_receipt_method         VARCHAR2(150);
  ln_receipt_method_id      NUMBER(15);
  lv_receipt_num            VARCHAR2(30);
  ln_user_id                NUMBER:=fnd_global.user_id;
  l_attribute_rec ar_receipt_api_pub.attribute_rec_type;
  CURSOR cu_login_variables
  IS
    SELECT fu.user_id user_id,
      frv.responsibility_id resp_id,
      fav.application_id resp_appl_id
    FROM fnd_application_vl fav,
      fnd_responsibility_vl frv,
      fnd_user fu
    WHERE fu.user_id               = ln_user_id
    AND frv.responsibility_name    = gc_responsibility_name
    AND fav.application_short_name = gc_application_short_name;
  lr_login_variables cu_login_variables%ROWTYPE;
  CURSOR misc_receipts
  IS
    SELECT SUM(xct.amount_applied) amount ,
      xcr.comments ,
      xcr.ATTRIBUTE_CATEGORY ,
      xcr.ATTRIBUTE1 ,
      xcr.ATTRIBUTE2 ,
      xcr.ATTRIBUTE3 ,
      xcr.ATTRIBUTE4 ,
      xcr.attribute5 ,
      xcr.receipt_date ,
      xcr.gl_date ,
      xct.invoice_currency_code ,
      XCR.RECEIPT_METHOD_ID ,
      XCR.RECEIPT_METHOD ,
      xcr.receipt_number
    FROM xxfin_custom_receipt xcr ,
      xxfin_cust_trx xct
    WHERE xcr.receipt_number=xct.receipt_number
      --and xct.status='Receipt Applied'
    AND xcr.receipt_number=ip_receipt_num
    GROUP BY xcr.comments,
      xcr.ATTRIBUTE_CATEGORY,
      xcr.ATTRIBUTE1,
      xcr.ATTRIBUTE2,
      xcr.ATTRIBUTE3,
      xcr.ATTRIBUTE4,
      xcr.attribute5,
      xcr.receipt_date,
      xcr.gl_date,
      XCT.INVOICE_CURRENCY_CODE,
      XCR.RECEIPT_METHOD_ID,
      XCR.RECEIPT_METHOD,
      xcr.receipt_number;
BEGIN
  BEGIN
    SELECT lookup_code,
      meaning,
      description,
      tag
    INTO gc_org_id,
      gc_user_name,
      gc_responsibility_name,
      gc_application_short_name
    FROM fnd_lookup_values_vl
    WHERE enabled_flag = 'Y'
    AND lookup_code    = 3400
    AND lookup_type    = 'XX_APPLICATION_INITIATION';
  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    l_error_msg := 'select for XX_APPLICATION_INITIATION failed. ';
    fnd_file.put_line (fnd_file.LOG, l_error_msg);
    RAISE;
  WHEN TOO_MANY_ROWS THEN
    l_error_msg := 'select for XX_APPLICATION_INITIATION failed due to too many rows. ';
    fnd_file.put_line (fnd_file.LOG, l_error_msg);
    RAISE;
  WHEN OTHERS THEN
    l_error_msg := 'select for XX_APPLICATION_INITIATION failed due to other reasons ';
    fnd_file.put_line (fnd_file.LOG, l_error_msg);
    RAISE;
  END;
  OPEN cu_login_variables;
  FETCH cu_login_variables INTO lr_login_variables;
  CLOSE cu_login_variables;
  BEGIN
    FOR rec_misc IN misc_receipts
    LOOP
      ----------------------------changin receipt method internally------------------------------------------
      BEGIN
        lv_receipt_num   :=rec_misc.receipt_number;
        lv_receipt_method:=rec_misc.receipt_method;
        IF lv_receipt_method LIKE '%Cash%' THEN
          ln_receipt_method_id:=102;
        elsif lv_receipt_method LIKE '%Cheque%' THEN
          ln_receipt_method_id:=103;
        elsif lv_receipt_method LIKE '%PDC%' THEN
          ln_receipt_method_id:=103;
        elsif lv_receipt_method LIKE '%Bank Transfer%' THEN
          ln_receipt_method_id:=105;
        ELSE
          ln_receipt_method_id:=rec_misc.receipt_method_id;
        END IF;
      END;
      ---------------------------------------end receipt method changing internally---------------------------
 
      fnd_global.apps_initialize ( lr_login_variables.user_id
                                 , lr_login_variables.resp_id
, lr_login_variables.resp_appl_id );

      mo_global.init (gc_application_short_name);
      mo_global.set_policy_context ('S', 3400);
 
      fnd_file.put_line(fnd_file.log,'Application Code :' ||gc_application_short_name);
     
      p_receipt_date                    := SYSDATE;
      p_gl_date                         := rec_misc.gl_date ;
      p_misc_receipt_id                 := NULL;
      l_attribute_rec.attribute_category:=rec_misc.attribute_category;
      l_attribute_rec.attribute2        :=rec_misc.attribute1;
      l_attribute_rec.attribute3        :=rec_misc.attribute2;
      l_attribute_rec.attribute4        :=rec_misc.attribute4;
      l_attribute_rec.attribute5        :=rec_misc.attribute3;
      l_attribute_rec.attribute8        :=NVL(rec_misc.attribute5,'000000');
      SELECT receivables_trx_id
      INTO p_receivables_trx_id
      FROM AR_RECEIVABLES_TRX_ALL
      WHERE name IN
        (SELECT meaning
        FROM ar_lookups
        WHERE lookup_type = 'XXIMD_MISC_RECEIPT_ACTIVITY'
        ) ;
     
   
      AR_RECEIPT_API_PUB.create_misc ( p_api_version => 1.0
                                 , p_init_msg_list => FND_API.G_TRUE,
, p_commit => FND_API.G_TRUE
, p_validation_level => FND_API.G_VALID_LEVEL_FULL
, x_return_status => x_return_status
, x_msg_count => x_msg_count
, x_msg_data => x_msg_data
, p_usr_currency_code => p_usr_currency_code
, p_currency_code => rec_misc.invoice_currency_code
, p_usr_exchange_rate_type => p_usr_exchange_rate_type
, p_exchange_rate_type => p_exchange_rate_type
, p_exchange_rate => p_exchange_rate
, p_exchange_rate_date => p_exchange_rate_date
, p_amount => rec_misc.amount
, p_receipt_number => lv_receipt_num
, p_receipt_date => TRUNC(SYSDATE)
, p_gl_date => rec_misc.gl_date
, p_receivables_trx_id => p_receivables_trx_id
, p_activity => p_activity
, p_misc_payment_source => p_misc_payment_source
, p_tax_code => p_tax_code
, p_vat_tax_id => p_vat_tax_id
, p_tax_rate => p_tax_rate
, p_tax_amount => p_tax_amount
, p_deposit_date => TRUNC(SYSDATE)
, p_reference_type => p_reference_type
, p_reference_num => p_reference_num
, p_reference_id => p_reference_id
, p_remittance_bank_account_id => p_remittance_bank_account_id
, p_remittance_bank_account_num => p_remittance_bank_account_num
, p_remittance_bank_account_name => p_remittance_bank_account_name
, p_receipt_method_id => ln_receipt_method_id
, p_receipt_method_name => lv_receipt_method
, p_doc_sequence_value => p_doc_sequence_value
, p_ussgl_transaction_code => p_ussgl_transaction_code
, p_anticipated_clearing_date => p_anticipated_clearing_date
, p_comments => rec_misc.comments
, p_attribute_record => l_attribute_rec
, p_misc_receipt_id => p_misc_receipt_id
, p_called_from => p_called_from
, P_Org_Id => 3400 );

      IF (x_return_status = 'S') THEN
        COMMIT;
        fnd_file.put_line(fnd_file.log,'SUCCESS');
       
      ELSE
        ROLLBACK;
       
        fnd_file.put_line(fnd_file.log,'ERROR');
        fnd_file.put_line(fnd_file.log,'Return Status    = '|| SUBSTR (x_return_status,1,255)||','||x_msg_data);
        fnd_file.put_line(fnd_file.log,APPS.FND_MSG_PUB.Get ( p_msg_index => APPS.FND_MSG_PUB.G_LAST, p_encoded => APPS.FND_API.G_FALSE));

        IF x_msg_count >=0 THEN
          FOR I IN 1..10
          LOOP
            fnd_file.put_line(fnd_file.log,I||'. '|| SUBSTR (FND_MSG_PUB.Get(p_encoded => FND_API.G_FALSE ), 1, 255));
          END LOOP;
       
END IF;
     
  END IF;
   
END LOOP;
    fnd_file.put_line(fnd_file.log,'After end loop');
 
  EXCEPTION
  WHEN OTHERS THEN
    fnd_file.put_line(fnd_file.log,'Exception :'||sqlerrm);
 
  END;
  COMMIT;
END xxfin_create_misc_rec_prc;
/

--END OF CREATING xxfin_create_misc_rec_prc.

No comments:

Post a Comment

Query to find request set and its responsibility

  SELECT FA.application_name,        fr.responsibility_name program_attached_to,        frg.request_group_name,        fcp.request_set_name,...