Wednesday, 30 March 2016

R12 Encumbrance Accrual Accounting for PO and Invoice



R12 Encumbrance Accrual Accounting for PO and Invoice
What is Budgetary Control?
A method of systematically enforcing spending limits by ensuring availability of budgeted funds before approval of transactions, including pre-expenditures.

What is Encumbrance?
A method of tracking and controlling an organization’s spending from the very early stage of initial documented evidence showing intention to buy to the final stage of actual expenditure. It is a management tool used to reflect commitments in the accounting system and attempt to prevent overspending. Mostly Used by Government and Non-Profit Firms

How it works?
Once an encumbrance document(PO, Invoice..etc) is created, funds are set aside for the sole purpose of enabling the organization to pay for it. If funds are insufficient due to budget or previous commitments and expenditures, no new encumbrances can be entered, ensuring that budget will not be exceeded.

Calculation of fund available
F.A. = Budget – (Encumbrance + Actual)

F.A. - Amount of money left in the account to spend
Budget – Maximum amount that can be spend for the account
Encumbrance – Reserved amount (Requisition, PO, invoice, and others)
Actual – Amount liable to another party


Encumbrance Accounting for documents PO and Invoice When accounting method Encumbrance Accrual is set
Example:
Budget is $1000
Purchasing an item which costs $200
Assume encumbrance is enabled for Purchase Orders and Invoices

Fund available before transaction
   F.A. = Budget – (Encumbrance + Actual)
   F.A. = 1000   –  (0+0) = 1000

Create a PO for $200.
   Application RESERVES the fund of $200 for PO
   PO  A/C------------------------200-----Dr
   RFE A/C------------------------200-----Cr
  
   F.A. = Budget – (Encumbrance + Actual)
   F.A. = 1000   - (200+0) = 800

Created an Invoice for $200 and matched it to the above said PO and validate Invoice(bc_event and validation event get created).
   Step 1: Application REVERSES PO encumbrance accounting.
   PO  A/C------------------------200-----Cr
   RFE A/C------------------------200-----Dr
  
   Step 2: Application RESERVES the fund of $200 for Invoice(bc_event)
   Inv A/C------------------------200-----Dr
   RFE A/C------------------------200-----Cr

   F.A. = Budget – (Encumbrance + Actual)
   F.A. = 1000   - (200+0) = 800

Run accounting for invoice actuals(Invoice Validation event).
   Step 1: Application REVERSES above Invoice encumbrances accounting(bc_event).
   Inv A/C------------------------200-----Cr
   RFE A/C-----------------------200-----Dr

   Step 2: Application creates original entries for invoice(Invoice Validation event).
   ItemExpenseA/C----------------200-----Dr
   LiabilityA/C---------------------200-----Cr

   F.A. = Budget – (Encumbrance + Actual)
   F.A. = 1000   - (0+200) = 800

Note: Payment accounting may happen in two stages based on option selected in Payables->Setup->Options->PayablesOptions->AccountingOption tab->PaymentAccounting.
Payment Accounting:
   Direct Pay-No Clearance
     Payment Time
     LiabilityA/C-------------------200----Dr
     CashA/C----------------------200----Cr

   Or

   Pay and Clear
     Payment Time
     LiabilityA/C-------------------200----Dr
     CashClearingA/C--------------200----Cr

     Clearing Time
     CashClearingA/C--------------200----Dr
     CashA/C----------------------200----Cr


Sunday, 27 March 2016

Table registration API in Oracle Apps




Table registration API in Oracle Apps


DECLARE
   v_appl_short_name   VARCHAR2 (40) := '&appl_short_name';
   v_tab_name          VARCHAR2 (32) := '&table_name';
   v_tab_type          VARCHAR2 (50) := 'T';
   v_next_extent       NUMBER := 512;
   v_pct_free          NUMBER;
   v_pct_used          NUMBER;
BEGIN
   -- Unregistering the custom table if it exists
   ad_dd.delete_table (p_appl_short_name   => v_appl_short_name,
                       p_tab_name          => v_tab_name);

   -- Registering the custom table
   FOR i_tab_details IN (SELECT table_name,
                                tablespace_name,
                                pct_free,
                                pct_used,
                                ini_trans,
                                max_trans,
                                initial_extent,
                                next_extent
                           FROM dba_tables
                          WHERE table_name = v_tab_name)
   LOOP
      ad_dd.register_table (
         p_appl_short_name   => v_appl_short_name,
         p_tab_name          => i_tab_details.table_name,
         p_tab_type          => v_tab_type,
         p_next_extent       => NVL (i_tab_details.next_extent, 512),
         p_pct_free          => NVL (i_tab_details.pct_free, 10),
         p_pct_used          => NVL (i_tab_details.pct_used, 70));
   END LOOP;

   -- Registering the columns of our custom table
   FOR i_all_tab_cols IN (SELECT column_name,
                                 column_id,
                                 data_type,
                                 data_length,
                                 nullable
                            FROM all_tab_columns
                           WHERE table_name = v_tab_name)
   LOOP
      ad_dd.register_column (
         p_appl_short_name   => v_appl_short_name,
         p_tab_name          => v_tab_name,
         p_col_name          => i_all_tab_cols.column_name,
         p_col_seq           => i_all_tab_cols.column_id,
         p_col_type          => i_all_tab_cols.data_type,
         p_col_width         => i_all_tab_cols.data_length,
         p_nullable          => i_all_tab_cols.nullable,
         p_translate         => 'N',
         p_precision         => NULL,
         p_scale             => NULL);
   END LOOP;

   FOR all_keys IN (SELECT constraint_name, table_name, constraint_type
                      FROM all_constraints
                     WHERE constraint_type = 'P' AND table_name = v_tab_name)
   LOOP
      ad_dd.register_primary_key (
         p_appl_short_name   => v_appl_short_name,
         p_key_name          => all_keys.constraint_name,
         p_tab_name          => all_keys.table_name,
         p_description       => 'Register primary key',
         p_key_type          => 'S',
         p_audit_flag        => 'N',
         p_enabled_flag      => 'Y');

      FOR all_columns
         IN (SELECT column_name, position
               FROM dba_cons_columns
              WHERE     table_name = all_keys.table_name
                    AND constraint_name = all_keys.constraint_name)
      LOOP
         ad_dd.register_primary_key_column (
            p_appl_short_name   => v_appl_short_name,
            p_key_name          => all_keys.constraint_name,
            p_tab_name          => all_keys.table_name,
            p_col_name          => all_columns.column_name,
            p_col_sequence      => all_columns.POSITION);
      END LOOP;
   END LOOP;

   COMMIT;

END

Wednesday, 2 March 2016

Reconcile or Autoreconcile Bank Statement Lines To Bank Statement Lines In Same or In Different Bank Statements In Oracle Cash management


Reconcile or Autoreconcile Bank Statement Lines To Bank Statement Lines In Same or In Different Bank Statements In Oracle Cash management 


Manual Reconcile Multiple statement lines: Misc Rec to Misc Pay multiple lines.


Example of Reconciling a MISC REC line to Multiple Misc Pay lines:
Important here is to have all lines NUMBER COLUMN to have identical value. In This case: MISC PAY
Step 1:



Step 2:






Step 3:




Step 4:


Concept:
The misc. receipt & misc. payment statement lines are trx_type of 'MISC_DEBIT' or 'MISC_CREDIT'.  But when this is displayed, it is displayed as 'Stmt-Payment' and 'Stmt-Receipt'.
How To Manually Reconcile Statement Lines In Different Bank Statements To Transaction?
 Q1: It seems that issue you may have is similar to:
"Currently you load daily bank statements and occasionally there will be errors on the bank side requiring the bank to send through correction payments/receipt adjustments. These misc receipts reconcile with the earlier payment. If the payment and adjusting misc receipt come through on the same bank statement, it is not an issue. The auto reconciliation program will auto reconcile the two transactions together. However, if the adjusting receipt comes through on a different bank statement (perhaps the next day), they will not auto reconcile. These misc receipt will have to be manually reconciled."

Q2: Following Scenario and questions needs to be addressed:
Business Scenario:
============

(1). Using ADJ./REVERSAL: 1ST Bank Statement:
Scenario Bank statement processed however there are few statement lines which are not fully Reconciled (Partially Reconciled) but due to Tolerance setup it is showing as RECONCILED.

2nd Bank Statement:

This statement is containing : Adjustment and Reversal statement line against the same Number.
(2). Using: Misc. Receipt / Payment Creation:
From 2nd Statement: Create Misc. Payments/Receipts as per the setups in Bank Transaction codes setup, however this expect that only statement lines with null NUMBER will be considered?
(3). Even if customer tries to manually Unreconcile and try to Re-reconcile it will not be possible as the Statement lines are in different bank statements.

Questions - Adjustment and Reversal :
1. Will the autoreconciliation try to Autoreconciliation these statements across the bank statements?
2. If yes, How?
3. If no, then what is the course of action customer has to Reconcile these bank errors?

Questions - Using: Misc. Receipt/Payment Creation:
1. Does this only serves for Misc. type statement lines; which can be attributed to specific payment or receipt?
2. If the Number is available in the statement line then creation of the Misc. Payment / Receipt will fail and that will result in manually creating these?
3. Is there any other way this can be resolved?

757206.1 - Unable To Autoreconcile Misc Receipt With Payments On Separate Bank Statement
Q3: Scenario: Over night deposits: Bank each night takes the Bank account Balance amount and puts in over night deposit and in the morning it is deposited back same amount to same bank account.
Bank sends customer two bank statement: One when they take the balance out from the bank account and second when they deposit back to the bank account.
Question now is: how to insure autoreconciliation of such bank statements when they exist in two different bank statement and with two different type of statement lines:
1). Misc. Payment
2). Misc. Receipt

Solution

A1:
1. The Auto reconciliation takes into account the transaction amount is within the reconciliation tolerance and if yes then it Reconciles. If in the case the reconciliation tolerance needs review, you may do so, however the statement lines are in different bank statements, this may not be helpful.

Please note: even if a statement line is partially reconciled against a Receipt or Payment, the line is marked as reconciled. There is no concept of "Partially Reconciled", however in order to see the remaining amount of the partially reconciled line, the user has to go to statement line and open the reconciled transaction screen.

2. If a Transaction is already Reconciled then it will not be available for the next auto reconciliation run.

3. Occasionally, errors on the bank side requiring the bank to send correction payments/receipt adjustments to reconcile with the earlier transaction. This needs educated intervention and hence these should only be corrected using manual reconciliation process.

A2:
(1). The bank statement lines of types adjustment/ corrections are reconciled against the statement lines. The autoreconciliation always happen with the transaction codes used on the statement line.
Consider an example:
Supposing there is a receipt of 1000 with receipt number ABC1001. A bank statement is received that contains statement lines including this receipt of 1000 and 2 correction lines of 100 and <100> with transaction code as '105'.

If the transaction code '105' has transaction type is 'Miscellaneous Receipt' and the 'matching against' is set to 'stmt' or 'stmt, Misc' or 'misc,stmt', then system finds a statement line or a miscellaneous receipt to match this statement line.

Answer- Adjustment and Reversal :
If the correction method on this transaction code is 'Reversal', then system checks for a
statement line with a negative amount and reconciles this line.Auto reconciliation does not handle this, but in manual reconciliation when available transactions are selected, it checks for the statement and
miscellaneous lines from all the available statements. Therefore, if there is a statement that contains such lines, manual reconciliation must be used to reconcile such transactions.

Answer: Using: Misc. Receipt/Payment Creation:
Creation of miscellaneous payments or receipts is required only for real miscellaneous payments and receipts. It is not required for bank statement lines that are corrections or reversals. The corrections or reversals must be reconciled with the statement lines only.

(2). You can Manually Reconcile the Bank statement lines with a Payment / Receipts across bank statements provided:
- All statement lines and the Transactions are with Status of Unreconciled.
- Statement Lines against which the manual Reconciliation to be done must be of Misc type.
- All statement lines must have Number column populated with correct Transaction Number
- When you do Click available>>In Find insure that you have checked:
a. Transaction sources: Payable/Receivables/Misc/Cash etc and also: Statement Lines
b. Insure that you have Transaction Number shown for selection as well.
Then:
Select the Transaction and Statement lines of the Other Statement and then Click Reconcile.
It should Reconcile.

A3: Autoreconciliation will work correct provided:
(1). Setup:
If user wants to reconcile a statement with statement itself, then the transaction code for that statement should have 'Matching Against' as 'Stmt'. This setup can be done is Bank Transaction Codes Form.
This is explained in User Guide under Bank Transaction Code:
If the transaction type is Miscellaneous Receipt or Miscellaneous Payment, use the Matching Against field to determine the order of matching and the type of transactions to match.
Choose from the following values to indicate how to use this bank transaction code:
• Misc: Only match against miscellaneous transactions.
• Stmt: Identify the statement line as a correcting entry.
The statement line will match against existing statement lines. The netted amount of these lines is used to match to subledger transactions.
• Misc, Stmt: First try to match against miscellaneous transactions, if  there is no match, then try to match against statement lines (corrections).
• Stmt, Misc: First try to match against statement lines (corrections), if there is no match, then try to match against miscellaneous transactions. 

(2). Please note: both statement lines must have Same Transaction number. If it doesn't have than it will Error as: Missing matching criteria


For more information refer the doc 944431.1