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

roteiroPadrao

boolean

—

Indica se o roteiro é o padrão para o produto.

descricaoRoteiro

string

Sim

Descrição do roteiro.

codigoItem

string

Sim

Código do produto acabado ao qual o roteiro pertence.

filial

string

—

Filial à qual o roteiro está associado.¹

quantidade

decimal

Sim

Quantidade do produto a ser produzida.²

loteMaximo

integer

—

Limite máximo de lote. 0 quando não há limite.

calculoBaseAlternativo

boolean

—

Indica se o cálculo de base alternativo deve ser usado.

deposito

string

Sim

Depósito relacionado à produção.

revisao

—

Não

Pode ser null.

percentualRefugo

decimal

—

Percentual de refugo.

arredondarPercentualRefugo

integer

—

Indica se o percentual de refugo deve ser arredondado.

projeto

—

Não

Pode ser null.

observacoes

string

—

Observações gerais.

estruturaBase

boolean

—

Indica se a estrutura base é utilizada.

inativo

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

operacao

—

—

[INFORMAÇÃO NÃO ENCONTRADA] — a especificação original marca este campo como “(DETALHAR)” e nunca preenche a descrição.

sequenciaOperacao

integer

—

[INFORMAÇÃO NÃO ENCONTRADA] — mesma situação, marcado como “(DETALHAR)” no original.

modeloAnalise

string

—

Código do modelo de análise relacionado à operação.

desconsiderarLeadTime

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.

linhasOperacao

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

tipoRecurso

Sempre

Classificação do recurso (ex.: "Máquina", "CP" — componente).

CodGrupoRecurso

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.

codItem

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.

codigoRecurso

Recurso do tipo Componente (no exemplo, enviado vazio)

Código do recurso — nos dois exemplos da especificação, codigoRecurso e tipoRecurso/codItem aparecem juntos; a relação exata entre os dois campos não está clara no original.

quantidade / quantidadeFixa

Sempre

Quantidades da linha.

tempoFixo / tempoVariavel

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.

percentualDesvio

Sempre

[INFORMAÇÃO NÃO ENCONTRADA] — presente no JSON, sem descrição no texto de apoio.

dimensao1 / dimensao2

Sempre

Dimensões do componente, quando aplicável.

percentualPerda

Sempre

Percentual estimado de perda.

depositoComponente

Sempre

Depósito onde o componente é consumido.

metodoBaixa

Sempre

Método de baixa do componente (ex.: "FIFO" no exemplo — os outros endpoints desta API usam "Automático"/"Manual"/"M"; confirmar se são os mesmos valores aceitos).

observacao / observacao2

Sempre

Campos livres.

rentabilidade, custoA, custoB, faturado

Sempre

[INFORMAÇÃO NÃO ENCONTRADA] — presentes no JSON, sem nenhuma descrição no texto de apoio.

Campos de subProduto

Campo

Tipo

Descrição

codigoItem

string

Código do subproduto.

codigoDeposito

string

Depósito do subproduto.

percentualCusto

decimal

[INFORMAÇÃO NÃO ENCONTRADA] — sem descrição no original.

unidadeMedida

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

codItem

Obrigatório; item deve existir no cadastro; item não pode estar inativo/bloqueado para produção; quantidade deve ser maior que zero.

CodGrupoRecurso

O grupo de recursos deve estar ativo e disponível para uso na produção.

codigoRecurso / tipoRecurso

Devem ser válidos e existir no sistema.

tempoFixo / tempoVariavel

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.