v2.26.0
v2.26.0: sell prices, invoice email, and a Main warehouse
A sales order line can take a customer price, a price list, or a pack price. A posted customer invoice can be emailed as a PDF, with Reply-To set to the company billing email. Each company has a Main warehouse.
One hundred eighteen commits since v2.25.0. Four additive database changes. The tag is cut after this page, not by it.
Shipped
A wholesale sales order asks the server for the line price. The server picks a private customer price, then that customer’s price list, then a pack price, then the catalog. The match uses the product, the unit on the line, the order date, and the largest quantity break the ordered quantity meets. A price typed by hand is kept. The line shows where the price came from. Sales has Price Lists, and the customer form can assign a list. A private price beats the list.
A customer invoice prints from its detail. Print, then Print Invoice, opens the print dialog. On a posted invoice, Email Invoice sends that same PDF. From shows the company name and the platform sending address. Reply-To is the company billing email saved in Company Settings. Send me a copy can BCC that address. Each customer has Invoice emails, with To and Cc. An empty list uses the customer email. A billing-run account uses its own list and does not use the customer email. When the mail service rejects the send, the screen shows that reason. The button is hidden on a draft, and hidden without approval rights. The file is the same document as the print.
The customer form stores street, city, state, postal code, and country. A sales order copies that state onto the ship-to address, so estimated tax can match a rule for that state. The previous free-text address is left as it was until someone edits the customer. Dates that are a calendar day show that day. A pack hint uses the pack name, for example 1 MC = 360 PCS.
Stock Levels shows each balance as base pieces, plus the pack breakdown when the product has an active pack. Export CSV downloads every row that matches the filter. The piece count is a number in its own column.
Administration has Warehouses. Each company has one Main warehouse, listed Active, and Deactivate on Main stays off. Every location belongs to a warehouse.
Approving a cycle count folds on-hand into pieces and cases. A product count cannot add a second line for the same product, and it cannot be approved while bulk stock is present. The line says the count is pick face only.
Help includes Contact support. It opens a mail draft with the company code in the subject.
Known limits
A price stored for one warehouse is not used on the sales order. The form does not send a warehouse, so the price that applies to every warehouse is the one that matches.
There is no screen in this release for a company sending domain, so From stays the company name and the platform sending address. Send me a copy with an empty billing email does not send. A billing-run invoice does not fall through to the customer email.
Outbound invoice sync is not configured in this release. It still sends the list amount on each line. Do not turn it on for an invoice that has a discount.
A location that holds stock cannot change warehouse. Moving stock from one warehouse to another is not in this release. A product count does not include bulk stock. Count that stock with a location count.
Migrations: four, all additive. Customers gain structured address columns. Price lists and sell prices are new tables. Each company gains one Main warehouse, and each location gains a required warehouse. Companies gain a billing email and empty tables for a sending domain, invoice recipients, and a mail log. No stock row and no movement row is rewritten.
Rollback: return to v2.25.0. No switches to flip. Do not roll back if people still need to create locations, because the previous build does not fill the required warehouse on a location. Do not roll back if the next orders must keep a price list. The previous build does not read those tables. Prices already stored on a line stay on the line.