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.
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)
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.
|
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.
|
No |