You are on page 1of 7

Rectifying Lockbox Errors Programmatically A Customers Practical Example

Author: Anil Patil Created: ay !" #$$% Product: &racle Accounts Recei'able (ersion: ))*+*)$

&'er'ie,
-he purpose of this document is to explain ho, ,e rectified some of the recurring Lockbox Errors our client encountered using a custom concurrent program* -he users run the Lockbox process daily* any receipts are re.ected because either the lockbox data is incorrect or it conflicts ,ith the Customer /etup data* -he users ha'e to manually correct the lockbox transmission data" ,hich is a time consuming acti'ity* -here ,as therefore a need to ,rite a small magic program 0magic because thats ,hat my client calls it1 that ,ould do the data rectification and clear most of the Lockbox errors* 2e created a custom concurrent program that the users ran after the first run of the Lockbox process* -he details of the different types of recurring errors encountered and our solution for the same is as follo,s

3ssue ):

3CR 4umber refers to more than one customer

2e get this error ,hen more than one customer record in our database ha'e the same 3CR 4umber that is passed in the Lockbox file* -o rectify the errors manually" the users ,ould 5uery for the transmission data in the 6 aintain -ransmission 7ata form 0 4a'igation: Receipts 8 Lockbox 8 aintain -ransmission 7ata1 and clear the 3CR number 0 -ransit Routing and Customer 9ank Account fields1 for each Payment record ha'ing this error*

/olution:
-he solution ,e implemented for this ,as programmatically replicating exactly the same manual steps that the users performed* )* 2e remo'ed the 3CR number details from the 6Payment record from the ar:payments:interface table* #* 3n addition to this ,e also ga'e an output report to the users ,ith a* -he list of customers ha'ing the same 3CR 4umber* b* -he list of receipts created after rectifying the issue* -he 3CR number consists of t,o segments* Page )

http://oracle.anilrpatil.com

-he first segment is the transit routing number of the customers bank account* -he transit routing number can be seen in the 9anks form 0 4a'igation: /etup 8 Receipts 8 9anks* ;ield : 9ank 9ranch 4umber1* -he second segment is the 9ank Account 4umber of the customer* -his bank account number is associated ,ith the customer record 04a'igation: Customers 8 /tandard* -ab: 9ank Accounts* ;ield: Account 4umber1* -he abo'e issue occurs because )* -here are more than one customer defined in the system that has the same 3CR number i*e* the same bank branch number and the same account number* #* -he Lockbox file only contains the Payment record ,ith the 3CR number* 3f the Lockbox file contained an 6&'erflo, Payment record ,ith a 'alid transaction number and customer number" the receipt ,ould ha'e been created ,ithout any lockbox errors" e'en if ,e had more than one Customer ,ith the same 3CR number* <* -here is no customer number in the 6Payment record of the Lockbox file* 3f the customer number is included in the 6Payment record of the Lockbox file" Lockbox process ,ill ignore the 3CR number and create the receipt for that customer* 3dentifying the correct customer for that receipt re5uires some in'estigation on the part of the user and this takes time" hence the best practice ,e follo,ed is to remo'e the 3CR number from the lockbox file and process the Lockbox* -his ,ill create an =nidentified Receipt because ,e do not ha'e any customer number or 3CR number reference to link the receipt to a customer* -he user then in'estigates for the correct customer for this receipt and updates the receipt ,ith the customer information* /ince the concurrent program output also gi'es the list of customers ha'ing the same 3CR" the users then update the Customer record and end date the 3CR number for the incorrect Customer /cripts used in the program )* /cript to identify the customers ha'ing the same interface table 3CR number for records in the

select bau.customer_id, cust.account_number, bau.bank_account_uses_id, bau.start_date, bau.end_date from ap_bank_account_uses bau, ap_bank_accounts ba, ap_bank_branches bb, hz_cust_accounts cust, ar_payments_interface int where bau.customer_id = cust.cust_account_id and bb.bank_num = int.transit_routing_number and bb.bank_branch_id = ba.bank_branch_id and ba.bank_account_num = int.account and ba.bank_account_id = bau.external_bank_account_id and int.transmission_request_id = &request_id and int.status = 'AR_PLB_BAD_MICR_NUM'

http://oracle.anilrpatil.com

Page #

and int.record_type = ( select record_identifier from ar_trans_record_formats F , ar_transmissions T where F.transmission_format_id = T.requested_trans_format_id AND F.record_type_lookup_code = 'PAYMENT' AND T.transmission_id = int.transmission_id );

#* /cript to remo'e the

3CR number from the interface table

update ar_payments_interface I SET I.transit_routing_number = NULL , I.account = NULL where I.transmission_request_id = &request_id and I.status = 'AR_PLB_BAD_MICR_NUM' and I.record_type = ( select record_identifier from ar_trans_record_formats F , ar_transmissions T where F.transmission_format_id = T.requested_trans_format_id AND F.record_type_lookup_code = 'PAYMENT' AND T.transmission_id = I.transmission_id );

4ote: Records in the interface table ,ith this issue ha'e the status >AR:PL9:9A7: 3CR:4= > <* /cript to identify customers ,ith the same 3CR number as the parameter 3CR 4umber by pro'iding the

select bb.bank_num , ba.bank_account_num, bau.customer_id, cust.account_number, bau.bank_account_uses_id, bau.start_date, bau.end_date from ap_bank_account_uses bau, ap_bank_accounts ba, ap_bank_branches bb, hz_cust_accounts cust where bau.customer_id = cust.cust_account_id and bb.bank_num = '&transit_routing_number' and bb.bank_branch_id = ba.bank_branch_id and ba.bank_account_num = '&bank_account_number' and ba.bank_account_id = bau.external_bank_account_id ;

3ssue #: 3CR and Customer 4umber do not refer to the same customer*
2e get this error ,hen )* -he lockbox file contains the 6Payment record as ,ell as the 6&'erflo, Payment record #* -he 3CR number of the 6Payment record points to one customer and the customer number of the 6&'erflo, Payment record is a different customer* http://oracle.anilrpatil.com Page <

-o rectify the errors manually" the users ,ould 5uery for the transmission data in the 6 aintain -ransmission 7ata form 04a'igation: Receipts 8 Lockbox 8 aintain -ransmission 7ata1 and clear the 3CR number 0-ransit Routing and Customer 9ank Account fields1 for each Payment record ha'ing this error*

/olution:
-he solution that ,e implemented for this ,as )* Programmatically remo'e the 3CR number for the 6Payment record from the interface table* &nce ,e remo'e the 3CR number 0transit:routing:number and the account number1" there is no field that links the 6Payment record to the Customer record and hence the receipt gets created for the customer that appears on the 6&'erflo, Payment record* #* Pro'ide the users ,ith a report that gi'es them the 3CR number and the corresponding Customer number" the receipt number and the customer of that receipt* -his report helped the users to 'erify the 3CR number of the Customer* /cript to remo'e the 3CR 4umber

update ar_payments_interface I SET I.transit_routing_number = NULL , I.account = NULL where I.transmission_request_id = &request_id and I.status = 'AR_PLB_CUSTOMER_CONFLICT' and I.record_type = ( select record_identifier from ar_trans_record_formats F , ar_transmissions T where F.transmission_format_id = T.requested_trans_format_id AND F.record_type_lookup_code = 'PAYMENT' AND T.transmission_id = I.transmission_id );

4ote: Records in the interface table ,ith this issue ha'e the status >AR:PL9:C=/-& ER:C&4;L3C->

3ssue <: Receipt has more than one customer number


2e get this error ,hen )* -here are more than one 6&'erflo, Payment records in the lockbox file* #* All the 6&'erflo, Payment records do not ha'e the same Customer number* Rectifying these errors manually ,as a 'ery time consuming acti'ity as the users had to remo'e the 3CR number and the customer number from the 6Payment and the 6&'erflo, Payment records* As a result of this" the receipts ,ould al,ays be created as unidentified receipts*

/olution:
http://oracle.anilrpatil.com Page ?

-he /olution ,e implemented for this ,as )* 3f the 6Payment record has a 'alid 3CR number" then update the customer numbers from the 6&'erflo, Payment records ,ith the Customer number ha'ing the 3CR 4umber of the 6Payment Record* ost of the records ha'ing this issue satisfied the condition of 6(alid 3CR 4umber for the client* /cript to get the account:number
select cust.account_number into v_account_number from ap_bank_account_uses bau, ap_bank_accounts ba, ap_bank_branches bb, hz_cust_accounts cust, ar_payments_interface int where bau.customer_id = cust.cust_account_id and bb.bank_num = int.transit_routing_number and bb.bank_branch_id = ba.bank_branch_id and ba.bank_account_num = int.account and ba.bank_account_id = bau.external_bank_account_id and int.transmission_request_id = '&request_id' and int.status = 'AR_PLB_CUST_NUM_CONFLICT' and int.record_type = ( select record_identifier from ar_trans_record_formats F , ar_transmissions T where F.transmission_format_id = T.requested_trans_format_id AND F.record_type_lookup_code = 'PAYMENT' AND T.transmission_id = int.transmission_id );

4ote: 2hen the receipt has more than one customer number" the status in the interface table is >AR:PL9:C=/-:4= :C&4;L3C-> /cript to update the 6&'erflo, Payment records ,ith the same customer number deri'ed from the abo'e 5uery
update ar_payments_interface I SET I.customer_number = v_account_number where I.transmission_request_id = &request_id and I.status = 'AR_PLB_CUST_NUM_CONFLICT' and I.record_type = ( select record_identifier from ar_trans_record_formats F , ar_transmissions T where F.transmission_format_id = T.requested_trans_format_id AND F.record_type_lookup_code = 'OVRFLW PAYMENT' AND T.transmission_id = I.transmission_id );

#* 3f the 6Payment record does not ha'e a 'alid 3CR 4umber 0 i*e* 4o customer ha'e that 3CR 4umber1 or if the 3CR 4umber is blank" ,e cleared the http://oracle.anilrpatil.com Page +

customer number for all the 6&'erflo, Payment records* -his approach ,ould create an unidentified receipt ,hich the users ,ould later in'estigate* /cript to clear the customer numbers of the 6&'erflo, Payment records
update ar_payments_interface I SET I.customer_number = NULL where I.transmission_request_id = &request_id and I.status = 'AR_PLB_CUST_NUM_CONFLICT' and I.record_type = ( select record_identifier from ar_trans_record_formats F , ar_transmissions T where F.transmission_format_id = T.requested_trans_format_id AND F.record_type_lookup_code = 'OVRFLW PAYMENT' AND T.transmission_id = I.transmission_id );

<* 2e pro'ided the users ,ith the list of receipts that ,ere rectified using this approach along ,ith the corresponding in'oice numbers and the original customer numbers as they appeared before the interface tables ,as updated*

/ummary:
-his document details the approach ,e took for rectifying the recurring Lockbox errors and this sa'ed # to < hrs per day of the Cash Apps Analyst* -he type of Lockbox errors different customers get ,hile processing the Lockbox ,ould be different based on ho, they recei'e the Lockbox file from the bank* y approach ,ould al,ays be to discuss the most recurring issues ,ith the Cash Apps -eam members and pro'ide them a custom program that ,ould do the rectification* -here is no better alternati'e than to get the proper lockbox file from the bank that ,ould ne'er error* @o,e'er" in reality this seldom happens and in those cases" this approach 2&RA/ BBB

References:
4ote #C#%?!*) ARLPL9 Lockbox /tatus Error Codes 4ote:)!!$)?*) @o, to identify Receipts on basis of 9ank Account 4umber in Lockbox ProcessD 4ote:<$))<<*) Autolockbox ;ails (alidation 2ith 3CR 4umber Refers -o ore -han &ne Customer

http://oracle.anilrpatil.com

Page E

Appendix:
-he transmission formats used in the examples abo'e are -ransmission format for 6Payment Record

-ransmission ;ormat for 6&'erflo, Payment Record

http://oracle.anilrpatil.com

Page %

You might also like