INV635 – Backorder Processing

This batch process fetches all backorders from the order_detail table and checks for sufficient inventory and updates the order_line_status back to “A” (Active) so that they can be processed by the Packing Slip generation process for the next run. Inventory counts are updated accordingly. Please note that if an order is created with a quantity of 14 for an INV product with an available quantity of 10, the entire line with be placed on back order. This batch process must be run to split the line items into one active line with a quantity of 10 and one back-ordered line with a quantity of 4.

 

When a backorder is saved from ORD001 screen, the warehouse and bin location is updated in order_detail based on priority of the warehouse. This process first checks the inventory to fulfill the order in the warehouse and bin location referenced by order detail. If sufficient inventory is not found in this warehouse, other warehouses are checked for sufficient inventory.

An inactive warehouse should not be assigned to an order line, but if the warehouse was active at the time the warehouse was assigned, and if there is remaining inventory, then the order line will be fulfilled.

As of 7.4.2, when a non-inventoried INV product has inventoried INV product(s) as components, and when one or more of the component products is shipped through the Shipping Maintenance (INV200) screen, the Fulfill Status of the non-inventoried INV product linked to warehouse will be set to "S" (shipped) if it is not already "P" or "S". If the non-inventoried INV product has one or more INV products as components, and is not linked to a warehouse, when one or more of the component products is shipped through the Shipping Maintenance (INV200) screen, the Fulfill Status of the non-inventoried INV product not linked to a warehouse will be set to "P" (pre-shipped) if it is not already "P" or "S".

If there are any proforma orders for a backordered products and no payment was made toward the line, then the Status Change Reason on the Line Item Details screen will be automatically set to PROBACK.

This process generates two outputs, one showing all orders made active by the process and the other showing all the orders skipped because of insufficient inventory.

Calculating a Customer's Balance

The system executes the following logic using the INV635_Process_SP when calculating the customer_balance:

1.    First, the system checks for the credit_limit from Cus_Credit_Info table for the respective customer for a particular ORG and ORG_UNIT.

2.    Next, the system checks for the Order_Line_Balance for the particular order.

3.    Finally, the system calculates the customer_Balance based on the SUM(BASE_AMOUNT) from FAR_TXN table for the respective bill_customer for all other orders created except the current order.  

 

The following is a code snippet from the ActivateInventoryOrderLine stored procedure, which is called from the INV635_Process_SP. The highlighted is how the system determines the customer balance:

IF (@lv_tmp_credit_limit > 0)

            BEGIN

                IF (@lv_tmp_order_line_balance > 0)

                    BEGIN

                        SELECT  @lv_tmp_customer_balance = ISNULL(SUM(BASE_AMOUNT), 0)

                        FROM    FAR_TXN (NOLOCK)

                        WHERE   BILL_MASTER_CUSTOMER_ID = @ip_bill_master_customer_id

                                AND BILL_SUB_CUSTOMER_ID = @ip_bill_sub_customer_id

                                AND ORDER_NO <> @ip_order_no

                                AND ORDER_LINE_NO <> @ip_order_line_no

                        SELECT  @lv_ErrorNo = @@ERROR,

                                @lv_RowCount = @@ROWCOUNT,

                                @lv_Operation = 'FETCH',

    @lv_ErrorMessage = 'ActivateInventoryOrderLine : Fetching total customer balance for the bill_customer : Error fetching from FAR_TXN for bill_master_customer_id = '

                                + @ip_bill_master_customer_id

                                + ' and bill_sub_customer_id = '

                                + CAST(@ip_bill_sub_customer_id AS VARCHAR)

                        IF ( @lv_ErrorNo <> 0 )

                            GOTO EXIT_ERROR

                        IF ( ( @lv_tmp_order_line_balance

                               + @lv_tmp_customer_balance ) >= @lv_tmp_credit_limit )

                            BEGIN

                                SET @lv_ErrorMessage = 'Order Line Balance <'

                                    + CAST(@lv_tmp_order_line_balance AS VARCHAR)

                                    + '>  +  Customer Balance <'

                                    + CAST(@lv_tmp_customer_balance AS VARCHAR)

                                   + '> is more than the Bill Customer''s Credit Limit <'

                                    + CAST(@lv_tmp_credit_limit AS VARCHAR)

                                    + '>'

                                SET @lv_tmp_skip_category = '2-CREDIT'

                                GOTO SKIP

                          END

                    END -- (@lv_tmp_order_line_balance > 0) --(@lv_tmp_credit_limit > 0)

            END --(@lv_tmp_credit_limit > 0)

Parameters

Parameter

Description

Required?

Organization ID

The Organization ID for which you want to run the report.

Read-only

Organization Unit

The Organization Unit ID for which you want to run the report.

Read-only

Subtitle

Alphanumeric. Enter a subtitle, which would appear below the report heading within the title of the report.

No

Run Mode

Mode in which the report runs:

·       EDIT – prints the report.

·       PROD – prints the report and updates the database tables.

Yes

Parent Product

Enter the “Parent Product” to process the backorder for the specific product. To process all products, leave this parameter blank.

Personify recommends that you run this process when you receive inventory for a specific Parent Product and Product Code combination.

No

Product Code

This parameter works in conjunction with “Parent Product” parameter. This parameter is ignored if “Parent Product” parameter is left blank. Providing a “Product Code” will process the backorder for the combination of “Parent Product” and “Product Code”. If left blank will process backorder for the “Parent Product”, if specified.

Personify recommends that you run this process when you receive inventory for a specific Parent Product and Product Code combination.

No

Sample Report