Pular para o conteúdo principal

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 (;).

ColunaObrigatóriaObservações
BarcodeSimSua chave de negócio. Ver Visão geral
DescriptionSimO que é a peça, em palavras de gente
Width · HeightSimEm milímetros
ThicknessSimEm milímetros. Aceita decimal
ServicesSimAs operações, entre colchetes: [SERVICE_A],[SERVICE_B]. Sem ao menos uma não há roteiro de produção
GlassTypeSimTipo de vidro. Criada automaticamente se for nova
CustomerNameSimCriado automaticamente se for novo
DueDateNãoO prazo. Ausente significa hoje mais 30 dias
QuantityNãoAusente significa peça avulsa
ItemNãoA linha do pedido, para lote serial
CancelledNãoTrue recusa a peça — ver abaixo
CustomerOrder · InternalOrderNãoSuas referências de pedido
UrgentNãoEleva a prioridade na programação
NotesNãoTexto livre, que segue até o chão de fábrica
RouteNãoRota de entrega
PriorityNãoPrioridade na programação, como número
CutoutsNãoQuantidade de recortes
ParentBarcodeNãoCódigo de barras da peça pai, para peças compostas
ShapeNãoForma da peça em rc2. Conteúdo inline, ou o nome de um arquivo em shapes/
DrawingNãoDesenho técnico (SVG). Conteúdo inline, ou o nome de um arquivo em shapes/
OrderImageNãoNome de uma imagem em images/
Os nomes em português continuam funcionando

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.

Serviços usam vírgula, não ponto e vírgula

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ê mandaViraPor quê
6.5 · 6,56,5Um separador sozinho fora da casa de milhar é o decimal
1.234,5 · 1,234.51234,5Com os dois presentes, o último é o decimal. As duas convenções concordam
1.234.5671234567O mesmo separador repetido só pode ser agrupamento
1.234REJECTEDGenuinamente ambíguo: mil duzentos e trinta e quatro, ou um vírgula duzentos e trinta e quatro?
abc · 12mm · vazioREJECTEDNão é número

Três garantias que decorrem disso:

  1. Nada vira valor plausível. Número ilegível recusa a peça; não vira 0 numa medida nem 1 numa quantidade.
  2. O motivo diz qual campo, e lista todos os ruins da linha de uma vez, para a planilha ser corrigida numa passada só.
  3. O resultado não depende do nosso servidor. A mesma entrada é lida do mesmo jeito, independente da configuração de idioma da máquina.
Se o seu ERP escreve 1.234 querendo dizer mil

Mande 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.