Adicionar Roteiro
Permite adicionar um roteiro via API, incluindo todos os campos disponíveis na tela Roteiro do BR One.
Endpoint: POST /api/v1/producao/roteiros
Aviso
Mesma observação de nomenclatura já registrada em api-roteiro-atualizar: este endpoint usa /producao/roteiros (plural), enquanto GET, PATCH (adicionar linha) e DELETE desta mesma API usam /producao/roteiro (singular). Confirmar com o autor se é intencional.
Corpo da requisição (Request Body)
O exemplo abaixo reproduz o script da especificação original, com duas correções de sintaxe JSON (vírgulas faltando/sobrando) para o exemplo ficar válido — nenhum campo, nome ou valor foi alterado.
{
"roteiroPadrao": true,
"descricaoRoteiro": "Roteiro de produção principal",
"codigoItem": "PA001",
"filial": "SB0_MATRIZ",
"quantidade": 1.0,
"loteMaximo": 0,
"calculoBaseAlternativo": true,
"deposito": "01-A",
"revisao": null,
"percentualRefugo": 0,
"arredondarPercentualRefugo": 0,
"projeto": null,
"regraDistribuicao": null,
"regrasDistribuicao": [null, null, null, null, null],
"observacoes": "Produção urgente para cliente",
"estruturaBase": false,
"inativo": false,
"qualidade": {
"fichaAnalise": "Nenhum",
"destinoQualidade": null
},
"conteudo": [
{
"operacao": "CT01",
"sequenciaOperacao": 1,
"modeloAnalise": "MA001",
"desconsiderarLeadTime": false,
"linhasOperacao": [
{
"tipoRecurso": "Máquina",
"CodGrupoRecurso": "GR01",
"quantidade": 1,
"quantidadeFixa": 1,
"tempoFixo": 30,
"tempoVariavel": 10,
"percentualDesvio": 10,
"dimensao1": 0,
"dimensao2": 0,
"percentualPerda": 0,
"depositoComponente": "D001",
"metodoBaixa": "FIFO",
"observacao": "Operação crítica",
"observacao2": "Monitorar perdas",
"rentabilidade": 0,
"custoA": 0,
"custoB": 0,
"faturado": 0
},
{
"tipoRecurso": "CP",
"codItem": "item_nenhum_02",
"codigoRecurso": "",
"quantidade": 1,
"quantidadeFixa": 1,
"tempoFixo": 30,
"tempoVariavel": 10,
"percentualDesvio": 10,
"dimensao1": 0,
"dimensao2": 0,
"percentualPerda": 0,
"depositoComponente": "D001",
"metodoBaixa": "FIFO",
"observacao": "Operação crítica",
"observacao2": "Monitorar perdas",
"rentabilidade": 0,
"custoA": 0,
"custoB": 0,
"faturado": 0
}
]
}
],
"subProduto": [
{
"codigoItem": "SP001",
"codigoDeposito": "D002",
"percentualCusto": 50,
"unidadeMedida": "KG"
}
]
}
Nota
Correções de sintaxe feitas no exemplo acima: faltava vírgula após "filial": "SB0_MATRIZ"; sobrava uma vírgula depois de "faturado": 0 na primeira linha de operação (vírgula antes de } não é JSON válido); e "custaA"/"custoB" do original ficaram "custoA"/"custoB" — o primeiro nome parecia typo de digitação, mas fica sinalizado aqui para confirmação.
Campos do cabeçalho do roteiro
Campo |
Tipo |
Obrigatório |
Descrição |
|---|---|---|---|
|
boolean |
— |
Indica se o roteiro é o padrão para o produto. |
|
string |
Sim |
Descrição do roteiro. |
|
string |
Sim |
Código do produto acabado ao qual o roteiro pertence. |
|
string |
— |
Filial à qual o roteiro está associado.¹ |
|
decimal |
Sim |
Quantidade do produto a ser produzida.² |
|
integer |
— |
Limite máximo de lote. |
|
boolean |
— |
Indica se o cálculo de base alternativo deve ser usado. |
|
string |
Sim |
Depósito relacionado à produção. |
|
— |
Não |
Pode ser |
|
decimal |
— |
Percentual de refugo. |
|
integer |
— |
Indica se o percentual de refugo deve ser arredondado. |
|
— |
Não |
Pode ser |
|
string |
— |
Observações gerais. |
|
boolean |
— |
Indica se a estrutura base é utilizada. |
|
boolean |
— |
Indica se o roteiro está inativo. |
Importante
¹ O exemplo em JSON usa "filial": "SB0_MATRIZ"; o texto de apoio da especificação usa o exemplo "Filial Central" para o mesmo campo. Os dois formatos são bem diferentes (código de filial vs. nome de filial) — confirmar qual é o valor esperado de fato.
² O JSON de exemplo mostra "quantidade": 1.0; o texto de apoio mostra o exemplo 100.5 para o mesmo campo. Mesma situação em loteMaximo (0 no JSON, 500 no texto) e calculoBaseAlternativo (true no JSON, false no texto) — os exemplos numéricos não coincidem entre as duas seções do documento original.
Aviso
O documento de origem lista três nomes diferentes para o que parece ser o mesmo campo de regra de distribuição: regraDistribuicao (singular, null no JSON), regrasDistribuicao (plural, array de 5 posições no JSON) e codigosRegraDistribuicao (citado só no texto de apoio, não aparece no JSON). [INFORMAÇÃO NÃO ENCONTRADA] sobre qual é o nome e formato corretos — precisa esclarecer com o autor antes de implementar.
Campos de cada operação (dentro de conteudo)
Campo |
Tipo |
Obrigatório |
Descrição |
|---|---|---|---|
|
— |
— |
[INFORMAÇÃO NÃO ENCONTRADA] — a especificação original marca este campo como “(DETALHAR)” e nunca preenche a descrição. |
|
integer |
— |
[INFORMAÇÃO NÃO ENCONTRADA] — mesma situação, marcado como “(DETALHAR)” no original. |
|
string |
— |
Código do modelo de análise relacionado à operação. |
|
boolean |
— |
[INFORMAÇÃO NÃO ENCONTRADA] — também marcado como “(DETALHAR)” no original, embora o nome do campo e o exemplo em JSON sugiram o mesmo comportamento do campo de mesmo nome em api-roteiro-adicionar-linha. |
|
array |
Sim |
Lista de recursos alocados para a operação — ver abaixo. |
Campos de cada linha de recurso (dentro de linhasOperacao)
O exemplo mostra dois formatos de linha diferentes, dependendo do tipo de recurso:
Campo |
Usado quando |
Descrição / validação |
|---|---|---|
|
Sempre |
Classificação do recurso (ex.: |
|
Recurso do tipo Mão de obra, Máquina ou Ferramenta |
Código do grupo de recursos da operação. Deve estar ativo e disponível para uso na produção. |
|
Recurso do tipo Componente |
Código do componente (matéria-prima/insumo) consumido. Deve estar cadastrado, não pode estar inativo/bloqueado, e a quantidade deve ser maior que zero. |
|
Recurso do tipo Componente (no exemplo, enviado vazio) |
Código do recurso — nos dois exemplos da especificação, |
|
Sempre |
Quantidades da linha. |
|
Apenas recursos Mão de obra, Máquina e Ferramenta |
Números positivos ou iguais a zero. Não se aplicam a linhas de Componente, segundo a especificação. |
|
Sempre |
[INFORMAÇÃO NÃO ENCONTRADA] — presente no JSON, sem descrição no texto de apoio. |
|
Sempre |
Dimensões do componente, quando aplicável. |
|
Sempre |
Percentual estimado de perda. |
|
Sempre |
Depósito onde o componente é consumido. |
|
Sempre |
Método de baixa do componente (ex.: |
|
Sempre |
Campos livres. |
|
Sempre |
[INFORMAÇÃO NÃO ENCONTRADA] — presentes no JSON, sem nenhuma descrição no texto de apoio. |
Campos de subProduto
Campo |
Tipo |
Descrição |
|---|---|---|
|
string |
Código do subproduto. |
|
string |
Depósito do subproduto. |
|
decimal |
[INFORMAÇÃO NÃO ENCONTRADA] — sem descrição no original. |
|
string |
Unidade de medida do subproduto. |
Campos obrigatórios, segundo a especificação
Aviso
O documento de origem lista codigoRoteiro e deposito como campos obrigatórios para este POST — mas nenhum dos dois aparece no corpo (JSON) de exemplo do próprio documento (o exemplo tem deposito no cabeçalho, mas não codigoRoteiro em lugar nenhum). Como é um endpoint de criação, é possível que codigoRoteiro deva ser gerado pelo sistema em vez de enviado pelo cliente — mas isso não está explícito. Confirmar antes de implementar.
Validações adicionais
Campo |
Regra |
|---|---|
|
Obrigatório; item deve existir no cadastro; item não pode estar inativo/bloqueado para produção; quantidade deve ser maior que zero. |
|
O grupo de recursos deve estar ativo e disponível para uso na produção. |
|
Devem ser válidos e existir no sistema. |
|
Números positivos ou iguais a zero — disponíveis apenas para recursos do tipo Mão de obra, Máquina e Ferramenta. |
Autenticação, headers, response, códigos HTTP e mensagens de erro
Importante
[INFORMAÇÃO NÃO ENCONTRADA] — diferente dos outros 4 endpoints desta API, esta especificação nem chega a listar exemplos de mensagem de erro. Nada foi definido sobre autenticação, headers, resposta de sucesso ou códigos HTTP.