Create One Invoice for Sales Orders with Items That Can and Can't Ship

Set up Order Management so you have a single invoice when the sales order includes order lines that you can ship and lines that you can't ship.

If your sales order has order lines that you can ship and lines that you can't, then Accounts Receivable creates one invoice for each line.

Assume order line 1 contains the AS54888 desktop computer, which you can ship, and line 2 contains the Warranty for AS54888, which you can't ship. Accounts Receivable will create two separate invoices, one for each line, but you only want one invoice because you're selling the computer and the warranty that covers the computer to the same customer on the same sales order.

This problem happens because you can ship the warranty immediately, but it takes more time to ship the computer. So the Ship Date Actual attribute on the order line for the computer is different than the Ship Date Actual attribute on the line for the warranty.

As a result, the GL Date (General Ledger Date) is different, and accounting creates two different invoices, one for each date.

  • The warranty doesn't have a fulfillment date or ship date in Order Management or in Oracle Shipping.

  • Order Management sets the SHIP_DATE_ACTUAL column in the RA_INTERFACE_LINES_ALL table for the:

    • Computer to the actual ship date.

    • Warranty to the ordered date.

  • The Import AutoInvoice scheduled process determines the General Ledger date. If the GL_DATE column:

    • Contains a value, then AutoInvoice uses it.

    • Doesn't contain a value, and if the SHIP_DATE_ACTUAL column contains a value, then AutoInvoice uses SHIP_DATE_ACTUAL.

  • The computer and the warranty each have different SHIP_DATE_ACTUAL values, so accounting creates a different invoice for each order line.

Here's how you can fix that.

how you fix the problem.

Note

  • Use the Pricing Administration work area to create a service mapping that maps an attribute value from the sales order in Order Management, such as the requested ship date, to the GL Date attribute in Oracle Receivables. You modify the FulfillmentIntegration service mapping. It doesn't affect pricing, but it does use some of the same processing that Pricing uses. That's why its in the Pricing Administration work area.

  • Wait until Order Management finishes shipping the shippable item, then run the Import AutoInvoice scheduled process to update the invoice. If you run the process before Order Management finishes shipping the shippable item, then you're still going to get two invoices. So, make sure you wait.

    If you set up Import AutoInvoice to run automatically on a schedule, then make sure there's enough time in the schedule to ship the shippable item. For example, if it takes 13 hours to ship the item, but the schedule runs every 12 hours, then modify the schedule so it run less frequently, such as every 24 hours.

Summary of the Set Up

  1. Enable the feature.

  2. Set up service mapping.

  3. Test your set up.

Enable the Feature

Enable the Invoice option in the Enable Custom Payloads for Downstream Integration feature. For details, see Get Started with Integrating Order Management with Other Oracle Applications.

Set Up Service Mapping

Set up the service mapping so it can map the GL Date attribute.

  1. Open the mapping.

    • Create a sand box. For details, see Create a Sandbox So You Can Edit Service Mappings.

    • Go to the Pricing Administration work area.

    • Click Tasks, then, under Order Management Configuration, click Manage Service Mappings.

    • On the Manage Service Mappings page, in the Name column, click FulfillmentIntegration.

  2. Edit the source.

    • On the Edit Service Mapping page, click Sources.

    • In the Source List, click the row that has InvoiceSources in the Source column.

    • In the InvoiceSources area, on the Entity Mappings tab, click that row that has ARInterfaceLine in the Entity column.

    • In the ARInterfaceLine area, on the Attribute Mappings tab, click Actions > Add Row, set the values, then click Save.

      Attribute

      Value

      Attribute

      GlDate

      Expression

      Enter now().

      This value sets GlDate to the current date of the Oracle server instead of using the actual ship date. It assumes you're shipping the item on the current data and time.

      You can also set the GL Date only for business units that you specify.

      OrgId in [list]?now():null

      where

      • list is a comma-separated list of values that uniquely identifies the business units.

      For example, set GL Date only for business units 204 and 205.

      OrgId in [204,205]?now():null

      use fun_all_business_units_v to get the values that identify business units.

      You can also set GL Date to the value of an attribute, and only for a specific business unit.

      OrgId in list?attribute_name():null

      where

      • attribute_name is the name of an attribute that contains the value you will set.

      For example, set GL Date only for business units 204 and 205, and set it to the requested ship date.

      OrgId in [204,205]?RequestShipDate:null

      View Object Attribute

      To populate your date according to an attribute, leave Expression empty and specify the attribute in View Object Attribute.

      For example, to set the GL Date to the same value as the requested date, enter RequestShipDate in View Object Attribute.

      If you set a value in the Expression, then leave View Object Attribute empty.

  3. Edit the service.

    • Click the Services tab.

    • In the Service list, click the row that has InvoiceService in the Service column.

    • In the InvoiceService area, in the Entity list, click the row that has ARInterfaceLine in the Entity column.

    • In the ARInterfaceLine area, click Actions > Add Row, set the value, then click Save and Close.

      Attribute

      Value

      Attribute

      GlDate

      For example, query for sales order 56486.

      select gl_date, trx_date, ship_date_actual, creation_date, inventory_item_id from ra_interface_lines_all where interface_line_attribute1 = '56486'

      For details, see Use SQL to Query Order Management Data.

  4. Verify that ship_date_actual contains the date value of the Oracle server on both order lines.

    Recall that you set GlDate to the current date of the Oracle server when you set up the service mapping.

  5. Go to the Scheduled Processes work area, then run the Import AutoInvoice scheduled process. For details, see Update Intercompany Receivables Invoice Import Details.

  6. Examine the results of running Import AutoInvoice. Verify that the process created a single invoice, and didn't create two invoices.