- Invoicing with multiple “shipments” on a sales order (being able to pack some of the order, charge the customer for shipping for that partial shipment, then properly invoicing the partial shipment for shipping charged, and then later doing another partial shipment for the same sales order, have a new shipping charged and properly invoice that new value but keep the totals in tact on the sales order while only invoicing for the partial shipping charged amounts for each individual shipment. )
- Tracking shipping by item, quantity, serial number
- Multiple tracking numbers for multiple packed lines.
- Tracking Packaging materials
Basic Cartons Notes:
Shipping Cost field which is now called “Shipping Charged” and the new “Shipping Cost” fields on sales order header will be controlled by a new custom setting called “Track Shipping Charged with Shipment Tracker”. This will mean if you enter a cost for this shipment on the Carton or the “Charged” for the shipment on the carton they will roll up to the header level automatically.
You have 2 Cartons with one costing $10 and Charge customer $12, the other costing $15 and charging the customer $20 on the carton, then the total “Shipping Charged” on the header will be $32, and the shipping cost will be $25 when you turn on this custom setting.
Carton Functionality with Invoicing:
When we click the “Invoice” button or “Generate Invoice” button we need to look at all of the shipment records attached to this sales order. It should look for Shipment Records that do not yet have the Invoice lookup filled out yet. Gather these up and take the SUM of all of the “Total Shipment Cost” and also take the SUM of all “Total Shipping Charged”. Add the summed value of “Total Shipment Cost” value to Sales Order header “Shipping Cost”. Add the summed value of “Total Shipment Charged” value to Sales Order header “Shipping Charged”. So if Shipping Cost and Shipping Charged already has a value from a previous shipment, so we add to these values.
The Shipping Charged from the carton or cartons used for this invoice will be totaled for the Invoice Shipping Charged.
Important Note: Potentially your sales order may have multiple cartons and multiple invoices. But we don’t want the total amount for Shipping Charged to go to the first invoice and then keep charging the customer over and over, so we only charge shipping for the cartons that were picked up by this invoice. This means your shipping charged could be higher on the sales order than an invoice for that sales order, but if the entire sales order has been invoiced, then the totals for Shipping Charged on those invoices will always total to the Shipping Charged on the single sales order. When an invoice is created against a sales order and it picks up the Carton for invoicing we fill in the Invoice Lookup on the Carton to create a related list of cartons on the invoice.
Now we also support the carton object in the standard Ascent Invoice document!
Cartons for Packing Interfaces in Ascent:
"Carton" will still have all the same fields (tracking number, mode of delivery, etc.). But it will have a new related list of Packed Sales Order lines. We need to create a lookup from the Packed lines to the "Carton" (Shipment Tracker). So when you look at a carton you will know which items you packed on this sales order for this carton.
We will accomplish this by changing the Pack SO page to support "Cartons" as well was Packed sales order lines. The idea is that the user will click Pack SO and then there will be some changes to this page. There are three sections on this page:
1.) Sales Order Info
2.) Open Lines for this order...
3.) Lines Packed for this order...
When you click Pack, next to a line item Ascent currently creates a virtual packed sales order line on this page, and you modify the quantity and location, etc. before saving it. So you can create multiple packed lines for a specific sales order line, and multiple packed lines for an order. The problem is that we don't group these into Cartons so we can't tell which packed lines went together in a carton/package that went to the customer. The purpose of the "Carton" (Shipment Tracker) object is to group these together. So on the Pack SO page we need to give the user the ability to create a carton first, and then pack some lines for this carton, then create another carton, and pack some lines for it, and then another carton, pack some lines, etc. etc.
So later we will have
Carton.Name = 00001, Tracking Code = Z12421523462
Packed Line = 235122, Carton Lookup = 00001
Packed Line = 235123, Carton Lookup = 00001
Carton.Name = 00002, Tracking Code = Z23534626424
Packed Line = 235124, Carton Lookup = 00002
Packed Line = 235125, Carton Lookup = 00002
Now we know which carton contains which packed lines. And each carton has a tracking number so we can tell which tracking numbers are for which packed lines. So the idea is that the Pack SO page will build this hierarchy for us by allowing the user to create new packages and say which packed lines go in those packages.
Visual Force Pages changes:
When you first arrive on the pack so page it will look the same. When you click Pack it will show a "virtual" Carton above where the packed line shows up. The only field we need for the carton is a blank text field called "Tracking Code". The user does not have to fill this out to save, but it is optional and can be used at this time. This is so the user can say the tracking number for that carton before clicking save. The visual representation on the visual force page should be that the carton surrounds all packed lines to show what will be created when you click save. You can click pack next to as many sales order lines as you want and it will create the virtual packed lines inside of this carton. None of the records will be generated until you save. If you do nothing else and you pack the whole order inside of the one carton then it will create one Carton with multiple packed lines inside, where the packed lines all have a lookup to the carton.