NOVUS / RESTAURANT

Documentation

Connections, and what a connection is

Why a connection here is an uploaded file rather than a supplier integration, what each card counts, and why one supplier can appear twice.

Last reviewed against the product on .

Connections lists every supplier this site holds records for, and how much evidence stands behind each one. A connection here means an authorised file you uploaded, not a live link to a supplier's system.

A connection is a file, not an integration

There is no credential to enter on this page and no account to link. Supplier records are created by the importer as a side effect of accepting purchase rows: when a row names a supplier the site has not seen before, a supplier record is created from the normalised form of that name, and the row is attached to it. That is the only way a supplier record comes into existence.

So the page is an honest reading of what arrived, rather than a status board. The card labelled "File connected" is fixed text on every card. It is not a health indicator, it does not turn amber when a file goes stale, and it reflects nothing about the supplier at the other end.

What each card counts

The four figures on a supplier card
FieldWhat it countsWhen it reads Unavailable
Last purchase dateThe newest purchase date among that supplier's accepted rowsThe supplier has no accepted rows behind it
History beginsThe oldest purchase date among the same rowsThe supplier has no accepted rows behind it
ProductsDistinct normalised item names across those rowsNever; with no rows it shows zero
Purchase rowsAccepted rows attached to that supplierNever; with no rows it shows zero

Measured from app/app/connections/page.tsx and the purchase_record columns in src/db/schema.ts.

Every one of these is a count of accepted rows. A row your file contained but the importer refused is in none of them, which means a card can understate a supplier you buy from heavily simply because its file parsed badly. The import contract covers what makes a row acceptable, and the import screen reports the refusals for a given upload.

The dates are purchase dates taken from the rows themselves, not upload times. A card reading an old last purchase date means the newest invoice line you have imported for that supplier is old; it does not mean an upload failed.

The order is evidence, not money

Cards are sorted by accepted row count, descending. The supplier at the top is the one you have the most imported history for, which is frequently not your largest supplier by spend. Spend lives on the suppliers page, which totals it per currency and never across currencies.

One supplier can appear twice

Supplier identity is the normalised name, unique per organization. Normalising lowercases the name and collapses every run of non-alphanumeric characters to a single space, then trims it.

That merges spellings that differ only in punctuation, casing or spacing. It does not merge spellings that differ in words. A file that writes a trading name one way and a later file that writes it with a company suffix produce two supplier records, two cards, and history split between them. Nothing on this page merges them afterwards, because nothing in the product edits a supplier record at all: they are written by the importer and only ever read elsewhere.

Recent connection activity

The panel at the foot of the page is the import log, newest first, with each run's file name and status.

Runs shown
10
the most recent by creation time; older runs are not reachable from this page
Statuses
3
processing while the file is being read, then completed or failed

Measured from the importRun query in app/app/connections/page.tsx and processImport in src/lib/imports/processor.ts.

A run marked completed can still have refused rows: completed means at least one row was accepted, and failed means none were. The counts of parsed, inserted and rejected rows are recorded against the run but are not among the fields this page reads.

Re-uploading a file the site has already seen adds no line here. An import run is unique per organization and file content, so an identical upload resolves to the existing run rather than creating a second one. To extend a supplier's history you need a file whose contents differ, not a second copy of the same one.

File names in this list are shown after unsafe characters have been stripped, so a name with accented or unusual characters can appear slightly different here from the file on your machine.

What this page will not do

It cannot show you prices, order status, availability or anything else held in a supplier's own system, because it never speaks to one.

It offers no way to rename, merge, disconnect or delete a supplier. Those controls do not exist anywhere in the product.

It shows your organization's records only. Supplier records, purchase rows and import runs are all filtered by organization on the way out of the database, and there is no view that crosses that boundary. How organizations work sets out where that boundary is drawn.

Where to look next

Supplier files covers what to upload and the rights confirmation the importer asks for. What a saving is explains what the site will and will not conclude from the purchasing history these connections build up.