Formato do arquivo
Uma planilha com uma linha por peça. .csv, .xlsx, ou um .zip contendo uma das duas.
O pacote ZIP
exemplo.zip
├── pieces.csv ← exatamente UMA planilha, na raiz
├── images/ ← opcional: a imagem original do pedido
│ └── imagem.png
└── shapes/ ← opcional: SVG ou RC2 do contorno da peça
└── forma.svg
Exatamente uma planilha na raiz. Duas, ou nenhuma, recusa o pacote inteiro antes de ler qualquer linha.
As colunas Drawing e Shape aceitam o conteúdo inline ou o nome de um arquivo dentro de shapes/. O mesmo vale para OrderImage e images/.
Colunas
O separador é ponto e vírgula (;).
| Coluna | Obrigatória | Observações |
|---|---|---|
Barcode | Sim | Sua chave de negócio. Ver Visão geral |
Description | Sim | O que é a peça, em palavras de gente |
Width · Height | Sim | Em milímetros |
Thickness | Sim | Em milímetros. Aceita decimal |
Services | Sim | As operações, entre colchetes: [SERVICE_A],[SERVICE_B]. Sem ao menos uma não há roteiro de produção |
GlassType | Sim | Tipo de vidro. Criada automaticamente se for nova |
CustomerName | Sim | Criado automaticamente se for novo |
DueDate | Não | O prazo. Ausente significa hoje mais 30 dias |
Quantity | Não | Ausente significa peça avulsa |
Item | Não | A linha do pedido, para lote serial |
Cancelled | Não | True recusa a peça — ver abaixo |
CustomerOrder · InternalOrder | Não | Suas referências de pedido |
Urgent | Não | Eleva a prioridade na programação |
Notes | Não | Texto livre, que segue até o chão de fábrica |
Route | Não | Rota de entrega |
Priority | Não | Prioridade na programação, como número |
Cutouts | Não | Quantidade de recortes |
ParentBarcode | Não | Código de barras da peça pai, para peças compostas |
Shape | Não | Forma da peça em rc2. Conteúdo inline, ou o nome de um arquivo em shapes/ |
Drawing | Não | Desenho técnico (SVG). Conteúdo inline, ou o nome de um arquivo em shapes/ |
OrderImage | Não | Nome de uma imagem em images/ |
O contrato publica os nomes em inglês acima. Os nomes antigos em português — CodigoBarra, Largura, Espessura, ServicosAplicaveis, Inativa e os demais — continuam sendo aceitos, então arquivo que você já gera segue funcionando. Os dois conjuntos podem até aparecer no mesmo cabeçalho.
Integração nova deve usar os nomes em inglês: são esses que esta página vai continuar documentando.
O layout .xlsx é lido por posição, não por cabeçalho. Nome de coluna em planilha é ignorado — o que vale é a ordem. Se você está começando agora, use CSV: o cabeçalho deixa o arquivo legível por uma pessoa e tolerante a coluna nova no meio do caminho.
Dentro do arquivo, separe os serviços com vírgula: [SERVICE_A],[SERVICE_B].
O arquivo em si é delimitado por ponto e vírgula, então um ; dentro de um campo vira coluna nova e desloca o resto da linha em silêncio.
Como os números são lidos
Vale para Width, Height, Thickness e Quantity, nos três formatos.
O separador decimal pode ser ponto ou vírgula — o sistema descobre qual é, em vez de exigir um formato. O que ele não faz é chutar quando chutar é impossível:
| Você manda | Vira | Por quê |
|---|---|---|
6.5 · 6,5 | 6,5 | Um separador sozinho fora da casa de milhar é o decimal |
1.234,5 · 1,234.5 | 1234,5 | Com os dois presentes, o último é o decimal. As duas convenções concordam |
1.234.567 | 1234567 | O mesmo separador repetido só pode ser agrupamento |
1.234 | REJECTED | Genuinamente ambíguo: mil duzentos e trinta e quatro, ou um vírgula duzentos e trinta e quatro? |
abc · 12mm · vazio | REJECTED | Não é número |
Três garantias que decorrem disso:
- Nada vira valor plausível. Número ilegível recusa a peça; não vira
0numa medida nem1numa quantidade. - O motivo diz qual campo, e lista todos os ruins da linha de uma vez, para a planilha ser corrigida numa passada só.
- O resultado não depende do nosso servidor. A mesma entrada é lida do mesmo jeito, independente da configuração de idioma da máquina.
1.234 querendo dizer milMande 1234. Não há como o outro lado distinguir isso de um decimal, e adivinhar é exatamente o que nos recusamos a fazer.
Quantity ausente significa peça avulsa. Quantity fracionária é recusada em vez de truncada — 2,5 peças é erro de quem gerou o arquivo, e arredondar para 2 esconderia isso.
Peças canceladas
Cancelled=True devolve REJECTED, e nada é gravado — nem a peça, nem a tipologia ou o cliente que ela criaria.
É de propósito. Cadastrar algo que já está cancelado é ruído, e devolver CREATED para uma peça que o seu próprio sistema cancelou seria tecnicamente verdade e enganoso na prática.
Recusar não reserva nada: o código de barras continua livre. Se o cancelamento for desfeito e você reenviar a peça ativa, ela entra normalmente.
Pegar um exemplo
O Mover.Glass Connector que roda na sua instalação vem com um pacote de exemplo funcionando. O botão Send sample larga o pacote na pasta de entrada e o ciclo normal o processa — uma forma de provar o caminho de ponta a ponta sem esperar pelo seu ERP.