File format
A spreadsheet with one row per piece. .csv, .xlsx, or a .zip containing one of those.
The ZIP package
exemplo.zip
├── pieces.csv ← exactly ONE spreadsheet, at the root
├── images/ ← optional: the original order drawing
│ └── imagem.png
└── shapes/ ← optional: SVG or RC2 of the piece outline
└── forma.svg
Exactly one spreadsheet at the root. Two, or none, rejects the whole package before any row is read.
The SVG and Rc2 columns accept either the content inline, or the name of a file inside shapes/. Same for ImagemPedido and images/.
Columns
The separator is semicolon (;).
| Column | Required | Notes |
|---|---|---|
CodigoBarra | Yes | Your business key. See Overview |
Descricao | Yes | What the piece is, in human words |
Largura · Altura | Yes | In millimetres |
Espessura | Yes | In millimetres. Decimals allowed |
ServicosAplicaveis | Yes | The operations, in square brackets: [SERVICE_A],[SERVICE_B]. Without at least one there is no production route |
Tipologia | Yes | Glass type. Created automatically if new |
NomeCliente | Yes | Created automatically if new |
DataFinalizacao | No | The deadline. Missing means today plus 30 days |
Qtde | No | Quantity. Missing means a single piece |
Item | No | The order line, for serial lots |
Inativa | No | True refuses the piece — see below |
PedidoCliente · PedidoInterno | No | Your order references |
Urgente | No | Raises the scheduling priority |
Observacao | No | Free text, carried through to the shop floor |
Rota | No | Delivery route |
PrioridadePadrao | No | Scheduling priority, as a number |
Recortes | No | Number of cut-outs |
PecaPaiId | No | Barcode of the parent piece, for assemblies |
Rc2 | No | Piece outline. Inline content, or the name of a file in shapes/ |
SVG | No | Technical drawing. Inline content, or the name of a file in shapes/ |
Inside the file, separate services with a comma: [SERVICE_A],[SERVICE_B].
The file itself is semicolon-delimited, so a semicolon inside a field becomes a new column and shifts the rest of the row silently.
How numbers are read
This applies to Largura, Altura, Espessura and Qtde, in all three formats.
The decimal separator can be a dot or a comma — the system works out which, instead of demanding a format. What it will not do is guess when guessing is impossible:
| You send | Result | Why |
|---|---|---|
6.5 · 6,5 | 6.5 | A lone separator outside the thousands position is the decimal |
1.234,5 · 1,234.5 | 1234.5 | With both present, the last one is the decimal. Both conventions agree |
1.234.567 | 1234567 | The same separator repeated can only be grouping |
1.234 | REFUSED | Genuinely ambiguous: one thousand two hundred and thirty-four, or one point two three four? |
abc · 12mm · empty | REFUSED | Not a number |
Three guarantees that follow:
- Nothing becomes a plausible value. An unreadable number refuses the piece; it does not become
0in a measurement or1in a quantity. - The reason names the field, and lists every bad one in the row at once, so a spreadsheet can be fixed in a single pass.
- The result does not depend on our server. The same input reads the same way regardless of the machine's language settings.
1.234 meaning one thousandSend 1234. There is no way for the other side to tell that apart from a decimal, and guessing is exactly what we refuse to do.
Qtde missing means a single piece. Qtde fractional is refused rather than truncated — 2,5 pieces is an error in whatever produced the file, and rounding it to 2 would hide that.
Cancelled pieces
Inativa=True returns REJECTED, and nothing is stored — not the piece, not the glass type or customer it would have created.
This is deliberate. Registering something that is already cancelled is noise, and returning CREATED for a piece your own system cancelled would be technically true and practically misleading.
Refusing does not reserve anything: the barcode stays free. If the cancellation is undone and you resend the piece active, it goes in normally.
Getting a sample
The Mover.Glass Connector that runs at your site ships with a working example package. The Send sample button drops it into the input folder and the normal cycle processes it — a way to prove the pipeline end to end without waiting for your ERP.