The purpose of this lesson is to help you understand how to generate Shipments and Invoices.
Order Management
It is worth reviewing the Sales Order Management videos before learning Shipping and Invoicing. The fields you chose in your Sales Orders greatly impact the timing and behavior of your Shipments and Invoices.
Find the Document Type window => "MM Shipment" record.
Copy this record and change the name to "MM Shipment with Confirm".
Check the Ship/Receipt Confirm checkbox and save the record.
Create a new Shipment (Customer) record with the "MM Shipment with Confirm" Document Type.
Attempt to Complete the Shipment.
This will cause the Shipment (Customer) => Document Action of "Complete" to stop during at the Prepared status as it waits for a Ship/Receipt Confirm record to be completed.
Generally speaking, it is good practice to close Sales Orders that are fully delivered and fully invoiced. Here are the options to close Sales Orders:
Navigate to a Sales Order, click on the Document Action button, choose Document Action = Close.
Close multiple orders at once using the Menu => Order Batch Process. You can schedule this process to execute on a timer using the Scheduler window.
Use the Menu => Open Order report to review orders that are not closed by the Sales Order => Date Promised field. You may need to manually close orders that need special attention.
Locator Type
There are times when you need to hide inventory from certain processes (replenishment, reservation, picking). The Locator Type window has checkboxes (Available for Replenishment, Available for Reservation, and Available for Shipping) on it that dictate what locators are available for what processes. You simply create the appropriately named and configured Locator Types. Then, assign Locator Types to Locators as is needed.
Examples of when you want to hide inventory:
You receive non-conformant or discrepant material. By moving to a "Discrepant" locator with the appropriate Locator Type, the material will not get picked for shipping.
You move all outbound shipment product to a locator called "Shipping" as described below. If the "Shipping" Locator is hidden according to Locator Type, the same product will not get picked twice.
Pick Ticket Discussion and Considerations - Out of the Box
The pick process for iDempiere out of the box goes as follows:
Generate shipments in prepared status using the Menu => Generate Shipments process.
Print the prepared shipment as a pick ticket (part of the Generate Shipments process),
Picker uses paper pick ticket to deliver goods to shipping station.
Shipper completes Shipment. System removes inventory, posts COGs, updates the Sales Order with Qty Delivered.
Considerations for the out of the box process:
Inventory is not moved to a pick station as part of this process. Instead, inventory is left in its original location until the shipment is completed.
If you have a shipping area where Product can sit for long periods of time, this fact should be considered since the uncompleted shipment will leave the inventory (according to the system) in its original location. Staying in its original location means other shipments can see it and grab it. See below for a possible solutions.
If a Product is not present during the pick process, you can simply delete the line from the shipment. The missing Sales Order => Line will be left intact when the Shipment is completed. Depending on your Sales Order => Delivery Rule, this order/line will get picked up the next time the system sees the order/line is eligible to ship.
If the Product is present during the pick process; however, the qty is wrong, you can adjust the Shipment => Line => Qty field accordingly. It is OK to both increase and decrease the Qty. Here are the consequences of changing the Qty
Qty decreased
The Sales Order => Line => Qty Delivered will be set accordingly. The Sales Order => Line => Qty Remaining field will reflect the open balance.
Depending on your Sales Order => Delivery Rule, this order/line will get picked up the next time the system sees the order/line is eligible to ship.
The Sales Order will continue to show on the Open Sales Order report.
Qty increased to an amount above what exists on the Sales Order => Line
The Sales Order => Line => Qty Delivered will be set accordingly. The Sales Order => Line => Qty Remaining field will reflect a negative balance. This puts your Product's => Qty Reserved value in a bad state. Said another way, a negative Qty Reserved shows less demand than what is actually present.
Closing the Sales Order will remove the negative balance. Note: there is no way to close a single order line. You can only close an order.
It is possible to change the Product on a Shipment Line. Testing is needed to ensure the system handles this situation correctly. Correctly includes:
Sales Order window => Line subtab => Qty Reserved AND Sales Order window => Line subtab => Product zoom to => Product window => Located At subtab => Qty Reserved is updated correctly for the Sales Order Line => Product - not the Product on the Shipment.
Shipment window => Lines subtab => Product zoom to => Product window => Located At subtab => Qty on Hand is updated according to the Shipment Product (not Sales Order Line product).
If memory serves correctly, the system handles changing the product correctly.
Pick Ticket Discussion and Considerations - Alternatives
There are times when iDempiere's simplistic process for picking is not adequate to reflect to complexity of some processes. Below are alternatives to enhance iDempiere:
Shipment Confirmation
The Document Type window for record "MM Shipment" has two important check boxes:
Pick/QA Confirmation - creates a Ship/Receipt Confirm window record of type "Pick/QA Confirm"
Ship/Receipt Confirmation - creates a Ship/Receipt Confirm window record of type "Ship/Receipt Confirm"
Process goes like this:
User or system attempts to complete a Shipment - note that both Generate Shipments and Generate Shipments (Manual) default to trying to Complete the Shipment for you.
System sees the Shipment => Document Type has either or both Pick/QA Confirmation or Ship/Receipt Confirmation checkboxes checked
System stops the completion process and leaves the document in a "In Progress" Document Status.
System creates a Shipment Confirmation for the Pick/QA if checked.
User must Complete the Shipment Confirmation window => record before continuing. You can use the list of pending Shipment Confirmations of type "Pick/QA Confirm" as your pick list. The good news is that Shipment Confirmation allows you to scrap material if it is not found. The bad news is that the Shipment Confirmation does not move the product to a "Shipping" locator when completed.
User attempts to complete the Shipment again - this time for actual shipping (not pick).
System repeats the exact same process again if the Document Type => Ship/Receipt Confirm checkbox is checked.
Out of the box, completing the last confirmation does not automatically complete the shipment. You can automate this step if you wish as a customization.
View-based picking - m_inout_candidate_v
The Generate Shipments and Generate Shipments Manual processes use a view called m_inout_candidate_v to determine what is eligible for shipping.
It is possible to expose this view directly to users. You can even include logic to prioritize which orders should be picked first.
Users can then (a) zoom to the order and (b) Generate Shipment direct from the order when they are ready.
You can even add a Generate Shipment button directly to the m_inout_candidate_v view.
The benefits to this approach are:
You can delay generating shipments until they are needed
You can prioritize Sales Order => Picking based on your specific needs
You can group Sales Orders together for picking based in your specific needs
Shipment Move button - solves the issue where product sits in a shipping area for an extended amount of time. The simple way to move inventory from it original location to a shipping locator is to add a Shipment window => Move to Shipping Area button that:
Moves the inventory to a designated 'Shipping' Locator by automating the creation of an Inventory Move document.
Updates the Shipment Line => Locator accordingly to pull from the correct 'Shipping' location.
Pick Wave (Wave Planning)
Some companies need a more formal process to separate picking (act of moving product from storage to a shipping area) from packing (act of putting product in a box for shipping)
To accomplish this task, you need to add an Inventory Move to the overall process. Said another way, the process would look like this Sales Order => Inventory Move (wave plan + pick ticket) => Shipment.
The Shipment document would be created with a default Locator of 'Shipping' instead where the Product was picked from.
Here is a list of changes needed to accomplish this task:
Create a new process called Generate Pick Ticket. This process would be amazingly similar to the Generate Shipments process except that is would create Movements instead of Shipments.
Update the Generate Shipments have have the following considerations:
Only generate shipments from the previous Pick Ticket run
All Shipment window => Line subtab => Locator fields would default to a 'Shipping' locator.
Once the collection of Inventory Moves are created, you would optimize the pick path for your pick personnel.
Some approximation of the above process can be achieved using the Shipment Confirmation concept described above. The only piece that is missing from Shipment Confirmation is the move from deep storage to a shipping area. Using the Shipment Confirmation architecture is your least effort option to gain the most flexibility.
Shallow and Deep storage
There are times when your warehouse should have the concepts of 'Deep Storage and 'Shallow Storage'.
The purpose of shallow storage is to provide an area where 90% of your products are picked from.
Shallow storage is a much smaller area than deep storage.
Shallow storage has much lower quantities than deep storage.
A Replenishment Run process can be executed on a Scheduler to keep shallow storage at its optimal levels.
In iDempiere, Deep Storage and Shallow Storage would be two different logical warehouses.
Voice command and other picking software options
Since iDempiere is so amazingly open (via shared DB access, web services, etc...) you can use a dizzing number of tools to enhance your pick process.
An example of this fact is using a voice prompt system for picking.
A customer in Scotland provides its pickers a headset. The headset tells the picker where to go next and what to pick. The picker tells the system when the pick is complete. The system completes an Inventory Move to a packing location. The headset tells the picker what to pick next.
Payment Processing, freight selector, other custom processes
There are times when you need the system to execute process are part of the picking/packing processes.
Examples of these custom processes include:
Payment processing
Freight provider selection
Label printing
Etc...
Every customer I have worked with has a different set of demands and timing considerations from the system.
The goals are to:
Automate the process as much as is possible
Hang external processing to available event triggers. Example
Successfully completing a Pick Ticket automates the creation of an Invoice and a Payment (credit card processing)