Showing posts with label Functional. Show all posts
Showing posts with label Functional. Show all posts

Monday, March 9, 2015

AutoCreate Final Assembly Orders Warning

Dear Readers

Recently, I was faced with an issue with the "AutoCreate Final Assembly Orders" program ending in warning status for an ATO line for one of my clients

The warning message read as below in the log file

reserve_wo_to_so: Beginning Reservation Loop.
reserve_wo_to_so: lSourceCode: ORDER ENTRY
reserve_wo_to_so: MO:operating Unit :715
Warning: No reservations made. Check for errors in WJSI
reserve_wo_to_so: End of Reservation

The cause for this is also explained in MOS Note ID: 875337.1

To fix this, do the below steps

1. Query the order line which you wish to perform the AutoCreate operation on. It would be in "Supply Eligible" status and the item would be a configured item (maybe having a * after the main item#)

2. Go to your BOM responsibility and go to Routings --> Routings

3. Choose the appropriate inventory org for the routing to view

4. Click on the "Routing Details" button and you would see the Subinventory and Locator fields

5. Enter valid values in these fields and save your changes

6. Re-Run the process again and it should complete normally

I hope this helps you

Cheers
A

Monday, February 9, 2015

GL Journal WebADI Import - Custom Validations

Dear Readers

Many of you may be aware that Oracle provide a means to load GL journal entries from WebADI sheet via a seeded functionality

This process has several seeded validations on Source, Category, Period etc. But now, let us suppose that you wanted to add some custom validation in there to prevent loading certain records if the custom logic is not met

Let us just say for the case of this example, that we want to prevent user from loading records with DR amount as 100 ... sounds funny but this can be modified as per your requirement I am just taking this as an example

For this, there is a seeded package gl_import_hook_pkg which provides means to add custom logic

In this package in the FUNCTION pre_module_hook add the code as below

  FUNCTION pre_module_hook(sob_id    IN     NUMBER,
         run_id    IN     NUMBER,
         errbuf    IN OUT NOCOPY VARCHAR2) RETURN BOOLEAN IS
  BEGIN
    -- AX section
    IF ax_setup_pkg.ax_installed THEN
      IF NOT ax_ezl_filter_pkg.EZLFilter(sob_id, run_id, errbuf) THEN
        RETURN FALSE;
      END IF;
    END IF;

    -- Please put your function call here.  Make it the following format:
    --    IF (NOT dummy(sob_id, run_id, errbuf)) THEN
    --      RETURN(FALSE);
    --    END IF;

        IF (NOT anand_test_hook_prc(sob_id, run_id, errbuf)) THEN
          RETURN(FALSE);
        END IF;

    RETURN(TRUE);
  END pre_module_hook;


The code for my custom function is as below

CREATE OR REPLACE FUNCTION anand_test_hook_prc
(
sob_id NUMBER, run_id NUMBER, errbuf IN OUT NOCOPY VARCHAR2
)
RETURN BOOLEAN
AS
   lv_count NUMBER;
   lv_group_id NUMBER;
   lv_je_source VARCHAR2(240);
BEGIN
   INSERT INTO anand_test_hook_dbg VALUES('inside hook process run id value is ' || run_id);
   SELECT   COUNT(*)
   INTO     lv_count
   FROM     gl_interface_control
   WHERE    interface_run_id = run_id;
   INSERT INTO anand_test_hook_dbg VALUES('count in control is ' || lv_count);

   IF lv_count = 1 THEN
      SELECT   group_id, je_source_name
      INTO     lv_group_id, lv_je_source
      FROM     gl_interface_control
      WHERE    interface_run_id = run_id;

      IF lv_je_source = 'Spreadsheet' THEN
         SELECT   COUNT(1)
         INTO     lv_count
         FROM     gl_interface
         WHERE    group_id = lv_group_id
         AND      entered_dr = 100;

         INSERT INTO anand_test_hook_dbg VALUES('count in iface is ' || lv_count);

         IF lv_count <> 0 THEN
            fnd_file.put_line(fnd_file.log, ' *** CUSTOM VALIDATION FAILED *** --> There are records in this batch which have 100 as debit amount');
            fnd_file.put_line(fnd_file.output, ' *** CUSTOM VALIDATION FAILED *** --> There are records in this batch which have 100 as debit amount');
            RETURN FALSE;
         END IF;
      END IF;
   END IF;

   RETURN TRUE;

END anand_test_hook_prc;

When you now try to load GL JV with DR = 100, the custom validation will fail and prevent importing of such records :-)

Hope this helps

Cheers
A

Wednesday, October 15, 2014

Disputing an Invoice in Advanced Collections (IEX)

Dear Readers

Below is a useful document on the procedure to dispute an invoice in Advanced Collections (IEX) module. This will help to create a credit memo in AR in case the dispute is approved (the approval process is controlled via AME)

Hope this helps

Cheers
A

-------------------------

Disputing Invoices
Debtors often refuse to pay invoices because they do not believe they owe money for a variety of reasons. Use this procedure to submit a dispute against an invoice (whether or not it is delinquent). Once created, a dispute is sent to Oracle Receivables through the Credit Memo Workflow for review and resolution. See: AME Credit Memo Request Workflow, Oracle Receivables User Guide.
Steps
  1. Using the Collections Agent responsibility, in the Transactions tab, select the invoice and click Transaction Details.
  2. If the customer is disputing a specific invoice line item, then perform the following steps:
    1. Select Specific Invoice Lines from the Dispute Section LOV.
    2. Select the line item.
    3. Enter the dispute amount or dispute quantity for the line. If the invoice has no line items, then the line-item related dispute fields are not accessible.
The application calculates the dispute amount if you enter a dispute quantity. The dispute amounts are totaled in the Dispute Total field.
  1. If the customer wants to dispute a section of the invoice, then use the LOV in the Dispute Section field to select one of the following:
    • Lines subtotal
    • Shipping
    • Tax
    • Total
The total amount for the selected section appears in the Dispute Totals field. Earlier disputes are not included in the total.
  1. If the customer's dispute is over an expected discount, enter the discount amount.
The amount is calculated using the entered percent against the invoice total prior to shipping and tax.
  1. Select a dispute reason.
  2. Optionally, enter a note.
  3. Click Dispute.
While invoices are in dispute they are no longer labeled as delinquent. Disputed transactions are recorded in Interaction History, including the transaction number, class, type, date, status, amount, remaining amount, customer name, and organization.
A dispute confirmation message containing a dispute number appears and can be used as a reference between customer and collector.
If the IEX: Send Correspondence Automatically profile option is set to Yes, then a confirmation document is sent to the customer's dunning address using the correspondence method and template specified in the Collections Checklist. For more information about correspondence profile options, see: Correspondence Category, Oracle Advanced Collections Implementation Guide.
The dispute creates a Credit Memo Request in Oracle Receivables.

Enable a new Attachment Type on Sales Order Form

Dear Reader

We may have come across requirement sometime to enable a new custom attachment on the sales order form (or any other form also)

Below are the steps how this can be achieved. Hope this helps

Application Developer à Attachments à Document Categories
Create new category as below

Application Developer à Attachments à Attachment Functions

Query for OEXOEORD as shown below

Click Categories and add our new category there as shown below

Now on SO form, we can see our new category also as shown below

Cheers
A