Moving over

The open work comes across. The old invoices stay where they are.

There are four ways in and they are the four that matter on the first day: customers, open shipments, rate sheets. Everything else stays where it is.

A migration is judged on the day something goes in wrong. The shipment imports therefore show the table first, every batch can be undone as a batch, and the undo refuses once anything in it has been invoiced or has moved.

500
Customer rows a batch
Eleven columns, and a blank template to fill in.
1,000
Shipment rows a batch
Created only after the preview has been reviewed.
What comes across

Four routes in, and what each one promises.

The routeHow it behaves
The customer list
A CSV of eleven columns, 500 rows at a time, matched on customer_code: a code already held is updated, a code not yet held is created. There is a blank template to fill in. This is the one route with no preview step — it is best run on a copy first, or run small.
Open shipments, export and import
1,000 rows at a time, and nothing is created until the preview has been reviewed and the button pressed. Open work only: the right file is the one the desk is arguing about this week.
Rate sheets
CSV, and PDF, image or Excel read by the model. The screen says it plainly: “Nothing is saved until you look at the table and press Create. It reads the sheet twice — once to pull the lines out, once to check none were skipped — which takes about half a minute and costs a few cents.” Lines it is not sure about arrive with the box unticked.
Header aliases
HAWB · H.AWB · hawb no · 송장번호 all read into the same field. The reason is written in the code: if a person has to rename the columns by hand, one of them gets renamed wrong and three hundred rows go in wrong behind it.
Undo, by the batch
Every import is a batch and every batch can be taken back out whole. If anything in it has been invoiced or has already shipped, the undo is refused rather than half-done (Fig. 2).
Fig. 1 — Four ways in, one gate, four ways out.lib/import-hawbs.ts · lib/export-views.ts
The gate is the same one for all four routes, which is why “can I take it back out” has one answer instead of four — and why the way out is not a favour to be asked for later.
Screen recordingA carrier rate sheet dropped in as a PDF, read twice, and the table checked before a single line is created. About half a minute, start to finish.
Recording — 12 s, silent, loops R-12 · not yet shot
What it shows A thousand shipment rows imported, checked, created — and then taken back out whole.
Where to shoot it Import → Open shipments on the demo company, with a 1,000-row file ready
The take
  1. Choose the file and let the preview count the rows and show what it will create.
  2. Press the button and let the shipments come into existence.
  3. Open the batch and press undo. Stop when the count is back to zero.
Why here Undo is the sentence that decides whether anybody dares run an import on a Tuesday. Written down it is a promise; on screen it is a button somebody has already pressed.

What does not come across

Historic invoices do not, and neither do old quotations, purchases, agent settlements or claims. This is stated here rather than three weeks in.

“The historic invoices stay with the existing accounting system and the open work moves first — QuickBooks connects both ways.”

Why they are not taken

An imported invoice is a number with no charge lines under it and no payment history behind it. It looks like a record and answers no question asked of an invoice. The existing accounting system already holds them properly, and the money coming in reads back from QuickBooks onto the invoices the system does issue.

Fig. 2 — Previewed, created, taken back out.lib/import-hawbs.ts
Open shipments — export and import Preview 1,000 rows every row shown before one of them exists Create and only now do they exist Undo batch taken back out as one batch The batch comes back out whole every row it made, and nothing else Undo refused 3 of these have been invoiced. Nothing is created until you have looked at the preview and pressed the button. invoiced or already shipped, and the undo is refused rather than half–done
The undo is refused whole rather than applied halfway once a row has been invoiced or shipped, because a half-reversed import is worse than the bad import it was meant to fix.
On the way out

Leaving is a menu item.

The shipment list exports in five views, cut for five different readers. One of them is called all, and the comment on it in the source code is the whole promise. It is the right-hand side of Fig. 1.

Export shipments — choose a view CSV
billingfor accounting
customerto send on
opsfor the desk
customsfor the filing
alleverything
The comment on the view
Every field we hold. For migration or backup.

No licence is paid to read the archive.

The export is a screen in the product, not a professional-services line item and not a ticket. The file can be taken on the day of signature, on the day of departure, and every month in between.

The reason it is on this page at all: when a company stops paying, its records are the first thing it discovers it cannot open. That is a bad week to find out, so the answer is given here before the start.

What this does not do →

Get a demo

The spreadsheet in daily use is the right one for the call.

AMC reads it on the call. If it will not import cleanly, that is known in the first ten minutes, not in the second month.