2.lockbox Approach
2.lockbox Approach
2.lockbox Approach
understand what Account Receivables is and what receipts are. What is AR? Accounts receivable (AR) are amounts owed by customers for goods and services a company allowed the customer to purchase on credit. What is a Receipt? A Receipt is a written acknowledgment that a specified article or sum of money has been received. A receipt records the purchase of goods or service. Companies who want to bring old receipts to the newer system or in re-implementation project, the ways to get the Receipts are Lockbox, API or creating receipts manually. Different Methods in Creating a Receipt: a. While creating Receipts Manually Navigate to AR Responsibility -> Receipts -> Receipts one can create only a single cash receipt, as in the case of manually created cash receipts. b. To create Receipts using API use the following procedure AR_RECEIPT_API_PUB.CREATE_CASH API. c. Create Receipts using Auto Lockbox. This article would help you to understand the mechanism behind AR AUTO LOCKBOX, basic setups and the approach followed to achieve this mechanism. The technologies used to implement the AR AUTO LOCKBOX are PLSQL and SHELL SCRIPTING. What is Auto LOCKBOX? Auto lockbox is a program available in Oracle Receivables which helps you import payments or receipts. What happens in real world is that customers send the payments to the banks; bank provides a data files which would have information about the payments made by customers. Receivables auto lockbox program would help you in importing information from these data files into your system. Apply the receipts against the invoices and the Post Quick Cash.
Suryakanth Gunti
AUTO LOCKBOX
1|Page
Process Flow: Below is the data flow diagram of the complete process of AUTO LOCKBOX along with the tables that gets affected:
Auto lockbox has three steps: Import Reads the lockbox data from bank file, moving it to the lockbox tables using SQL* loader script.
Validation The validation program checks data in the Auto Lockbox tables for compatibility with Receivables. Once validated, the data is transferred into QuickCash tables. At this point, you can optionally query your receipts in the QuickCash window and change how they will be applied before submitting the final step, Post QuickCash.
Suryakanth Gunti
AUTO LOCKBOX
2|Page
Post QuickCash This step applies the receipts and updates your customers balances.
The above mentioned steps for auto lockbox can be executed at one go just by submitting the Interface program for the Lockbox. The navigation steps to submit the interface program is navigate to Account Receivables responsibility and then navigate to Interfaces => Lockbox.
Before submitting the Interface program one should ensure that the Control file is been designed, Data File is available in the suitable path. (Designing the control file and the data file is explained in-detail going forward). Another way to execute the AUTO LOCKBOX is by calling the program from backend using the API FND_REQUEST.SUBMIT_REQUEST and calling the Program ARLPLB. Now would be explaining in detail the approach that was followed in implementing Auto Lockbox. The challenge was to execute the AR LOCKBOX by breaking it into two parts the first one was to just import the data from a flat file(.DAT file) into the interface table by calling the standard Lockbox program then performing some validation then again calling the standard Lockbox program to perform the validation and the posting. Now we shall discuss in detail starting from creating a Control File, defining Transmission Format, defining lockbox number etc.
Suryakanth Gunti
AUTO LOCKBOX
3|Page
Sample Control File as below: LOAD DATA APPEND -- Type B - Batch Header INTO TABLE APPS.AR_PAYMENTS_INTERFACE WHEN RECORD_TYPE = 'B' (STATUS CONSTANT 'AR_PLB_NEW_RECORD', RECORD_TYPE position (1:1) char, LOCKBOX_NUMBER position (2:31) char, DEPOSIT_DATE position(32:40) date "MMDDYYYY", BATCH_NAME position (41:65) char, BATCH_AMOUNT position (66:80) decimal external, BATCH_RECORD_COUNT position (81:97) char ) -- Type H - Transmission Header INTO TABLE APPS.AR_PAYMENTS_INTERFACE WHEN RECORD_TYPE = 'H' (STATUS CONSTANT 'AR_PLB_NEW_RECORD', RECORD_TYPE position (1:1) char, ORIGINATION position (2:18) char, REMITTANCE_BANK_NAME position (19:53) char, DESTINATION_ACCOUNT position (54:70) char )
-- Type L - Lockbox Header INTO TABLE APPS.AR_PAYMENTS_INTERFACE WHEN RECORD_TYPE = 'L' (STATUS CONSTANT 'AR_PLB_NEW_RECORD', RECORD_TYPE position(1:1) char, LOCKBOX_NUMBER position(2:31) char, DEPOSIT_DATE position(32:40) date "MMDDYYYY", TRANSIT_ROUTING_NUMBER position(41:65) char, ACCOUNT position(66:95) char, LOCKBOX_AMOUNT position (96:110) decimal external) Once the control file is designed we need move it to $AR_TOP/bin directory. Sample Data File from the Bank (Files varies from Bank to Bank based on the Transmission Format defined)
Suryakanth Gunti
AUTO LOCKBOX
4|Page
Now we define the Transmission format Navigation: AR Responsibility -> Setup-> Receipts->lockboxes->Transmission Formats
Once the above steps of creating a Control file, Transmission Format, Lockbox number we now design a shell script which would call our custom package using CONCSUB utility which in-turn calls the standard
Suryakanth Gunti
AUTO LOCKBOX
5|Page
lockbox program ARLPLB , the parameters defined in the CONCSUB utility passes the value to our custom Package. Below is the same code of the Package script: FND_REQUEST.SUBMIT_REQUEST ( application => 'AR' ,program => 'ARLPLB' ,description => NULL ,start_time => NULL ,sub_request => NULL ,argument1 => p_i_code_new_trans -- CODE_NEW_TRANS_YN ,argument2 => l_trans_id -- TRANSMISSION_ID ,argument3 => '' -- TRANSMISSION_REQUEST_ID ,argument4 => p_i_trans_name -- TRANSMISSION_NAME ,argument5 => p_i_code_run_import -- CODE_RUN_IMPORT_YN ,argument6 => p_i_file_name -- FILE_NAME ,argument7 => p_i_ctlfile_name -- CONTROL_FILE ,argument8 => l_transmission_format_id -- TRANSMISSION_FORMAT_ID ,argument9 => p_i_code_run_validation -- CODE_RUN_VALIDATION_YN ,argument10 => '' -- CODE_PAY_UNRELATED_INVOICES_YN ,argument11 => p_i_lockbox_id -- LOCKBOX_ID ,argument12 => '' -- GL_DATE (Open Period GL Date) ,argument13 => 'R' -- CODE_REPORT_FORMAT ,argument14 => 'N' -- CODE_COMPLETE_BATCHES_YN ,argument15 => p_i_code_run_appl -- CODE_RUN_APPL_Y/N(Post Quick Cash) ,argument16 => 'N' -- Alternate name search ,argument17 => 'Y' -- IGNORE_INVALID_TXN_NUM ,argument18 => '' -- USSGL_Transaction_code ,argument19 => l_org_id -- Org ,argument20 => 'L' ,argument21 => '' ); Based on the values of the argument the Data from the flat file is imported in the interface table then validation is done and later the Post QuickCash is performed. Whenever we create a receipt it finds its entry in the below tables: 1. 2. 3. 4. AR_CASH_RECEIPTS_ALL AR_CASH_RECEIPT_HISTORY_ALL AR_RECEIVABLE_APPLICATIONS_ALL with the status = 'UNAPP' AR_TRANSMISSIONS_ALL
Suryakanth Gunti
AUTO LOCKBOX
6|Page
Different Status: 1. APP -- Applied 2. UNAPP -- Unapplied 3. UNID -- Unidentified UNID: - Come when customer is not known UNAPP: - Come when no application has been done Interface tables: a. AR_PAYMENTS_INTERFACE_ALL b. AR_INTERIM_CASH_RECEIPTS_ALL c. AR_INTERIM_CASH_RCPT_LINES_ALL This ends the Auto Lockbox Mechanism. Please let me know if at any case my explanation is not clear. *************************************************************************************
Suryakanth Gunti
AUTO LOCKBOX
7|Page