Pular para conteúdo

Integração de pedido

Para a integração de pedido, será necessário chamar o método integrarPedido. A chamada desse serviço procede da seguinte forma:

URL

http://ip_servidor:9090/cyberweb/api/processo/integrarPedido

Headers

chave : "epa42b92-d78b-7g88-p538-279qw562h54m"

token : "9166226b-6afd-4298-b6cc-d7dc3aef8f48"

Content-Type : "application/x-www-form-urlencoded"

Body

pedido : "JSON Pedido"

JSON Pedido

{
    "operacao": "INSERT",
    "erpId": "id_erp",
    "empresa": "01",
    "data": "Mar 13, 2020 12:00:00 AM",
    "noPedido": 1254,
    "clienteErpId": "06884301",
    "nomeCliente": "TESTE CLIENTE CYBERLOG",
    "noCliente": 0,
    "faturado": false,
    "notaFiscal": 0,
    "serie": 1,
    "valor":200.0,
    "clienteRetira": false,
    "observacao": "pedido normal",
    "prioridade": 50,
    "avaria": false,
    "dataEntrega": "Mar 13, 2020 12:00:00 AM",
    "docasConsolidacao": "3",
    "loteInformado": false,
    "documento": "pedido 1254",
    "noRota": 9,
    "descRota": "Rota 9",
    "transportadoraErpId": "981100004",
    "nomeTransportadora": "Teste Transportadora",
    "equipe": "Equipe Pedido Normal",
    "tipoPedido": "Normal",
    "volumes": 0,
    "representante": "Motorista pedido",
    "vinculo": "pedido x,pedido y,pedido z",
    "embalado": true,
    "chaveNF":"999999",
    "itensPedido": [
        {
            "codigoReduzido": "WMS_CYBERLOG_001",
            "erpId": "erp_id",
            "operacao": "INSERT",
            "quantidade": 5,
            "qtdAvaria": 0,
            "sequenciaERP": 1,
            "noLayout": 0,
            "qtdFaturado": 0,
            "loteItensPedido": [
                {
                    "quantidade": 5,
                    "qtdAvaria": 0,
                    "nolote": "L1.1",
                    "validadeLote": "Feb 28, 2021 12:00:00 AM",
                    "dataFabricacao": "Mar 28, 2019 12:00:00 AM"
                }
            ],
            "grades": [
                {
                    "codigo": "grade1",
                    "quantidade": 2,
                    "tipoEstrutura": "estrutura1"
                },
                {
                    "codigo": "grade2",
                    "quantidade": 1,
                    "tipoEstrutura": "estrutura1"
                }
            ]
        },
        {
            "codigoReduzido": "WMS_CYBERLOG_002",
            "erpId": "erp_id2",
            "operacao": "INSERT",
            "quantidade": 10,
            "qtdAvaria": 0,
            "sequenciaERP": 2,
            "noLayout": 0,
            "qtdFaturado": 0,
            "loteItensPedido": [],
            "grades": [
                {
                "codigo": "grade1",
                "quantidade": 8,
                "tipoEstrutura": "estrutura1"
                }
            ]
        }
]
}

Response

{
    "CyberWeb": "1 - Inserido"
}

URL

http://ip_servidor:9090/SyncWS/SyncWS/integrarPedido

Headers

Content-Type : text/xml

Body - (XML) Pedido

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <integrarPedido xmlns="http://soap.cyber/">
            <sessionId xmlns="">SessionId</sessionId>
            <pedido xmlns="">JSON Pedido</pedido>
        </integrarPedido>
    </Body>
</Envelope>

JSON Pedido

{
    "operacao": "INSERT",
    "erpId": "id_erp",
    "empresa": "01",
    "data": "Mar 13, 2020 12:00:00 AM",
    "noPedido": 1254,
    "clienteErpId": "06884301",
    "nomeCliente": "TESTE CLIENTE CYBERLOG",
    "noCliente": 0,
    "faturado": false,
    "notaFiscal": 0,
    "serie": 1,
    "valor":200.0,
    "clienteRetira": false,
    "observacao": "pedido normal",
    "prioridade": 50,
    "avaria": false,
    "dataEntrega": "Mar 13, 2020 12:00:00 AM",
    "docasConsolidacao": "3",
    "loteInformado": false,
    "documento": "pedido 1254",
    "noRota": 9,
    "descRota": "Rota 9",
    "transportadoraErpId": "981100004",
    "nomeTransportadora": "Teste Transportadora",
    "equipe": "Equipe Pedido Normal",
    "tipoPedido": "Normal",
    "volumes": 0,
    "representante": "Motorista pedido",
    "vinculo": "pedido x,pedido y,pedido z",
    "embalado": true,
    "chaveNF":"999999",
    "itensPedido": [
        {
            "codigoReduzido": "WMS_CYBERLOG_001",
            "erpId": "erp_id",
            "operacao": "INSERT",
            "quantidade": 5,
            "qtdAvaria": 0,
            "sequenciaERP":1,
            "noLayout": 0,
            "qtdFaturado": 0,
            "loteItensPedido": [
                {
                    "quantidade": 5,
                    "qtdAvaria": 0,
                    "nolote": "L1.1",
                    "validadeLote": "Feb 28, 2021 12:00:00 AM",
                    "dataFabricacao": "Mar 28, 2019 12:00:00 AM"
                }
            ],
            "grades": [
                {
                    "codigo": "grade1",
                    "quantidade": 2,
                    "tipoEstrutura": "estrutura1"
                },
                {
                    "codigo": "grade2",
                    "quantidade": 1,
                    "tipoEstrutura": "estrutura1"
                }
            ]
        },
        {
            "codigoReduzido": "WMS_CYBERLOG_002",
            "erpId": "erp_id2",
            "operacao": "INSERT",
            "quantidade": 10,
            "qtdAvaria": 0,
            "sequenciaERP":2,
            "noLayout": 0,
            "qtdFaturado": 0,
            "loteItensPedido": [],
            "grades": [
                {
                "codigo": "grade1",
                "quantidade": 8,
                "tipoEstrutura": "estrutura1"
                }
            ]
        }
]
}

Response

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <ns2:integrarPedidoResponse xmlns:ns2="http://soap.cyber/">
            <return>1 - Inserido</return>
        </ns2:integrarPedidoResponse>
    </S:Body>
</S:Envelope>

RC's do método integrarPedido

  • 1 - Inserido;
  • 2 - Alterado;
  • 3 - Excluído;
  • !4 - Não alterado (processo já iniciado);
  • !5 - Não alterado (conferência de separação já iniciada);
  • !6 - Não inserido (processo não cadastrado);
  • !7 - Não inserido (cliente não cadastrado);
  • !8 - Não inserido (rota não cadastrada);
  • !10 - Não inserido (pedido com documento vazio);
  • !11 - Não inserido (registro incompleto);
  • !12 - Não inserido (produto não consta no WMS);
  • 13 - Inserido (pedido complementar);
  • 14 - Aguardando (conclusão da separação para integrar);
  • 15 - Executando separação;
  • 16 - Concluída separação;
  • 17 - Executando conferência de separação;
  • 18 - Concluída conferência de separação;
  • 19 - Executando consolidação;
  • 20 - Concluída consolidação;
  • 21 - Executando expedição;
  • 22 - Concluída expedição;
  • !23 - Pedido sem itens;
  • !24 - Produto XXXXX do documento de pedido sem quantidade;
  • !25 - Não há configuração de depósito para a empresa: XXXXX;
  • !26 - Não inserido (depósito informado não possui configuração);
  • !27 - Pedido à ser atualizado não existe no WMS;
  • !28 - Pedido à ser deletado não existe no WMS;
  • !29 - Nenhuma operação válida enviada (válidas: INSERT, UPDATE, DELETE);
  • !30 - Regra de pos processamento cancelou a inserção deste pedido: XXXXX;
  • !31 - Lista dos itens do pedido está vazia ou não pode ser processada;
  • !32 - Não foi possível converter medida do pedido! Erro: XXXXX;
  • !33 - Pedido em execução, aguarde ser finalizado para realizar a alteração;
  • !34 - Pedido não processado, status pronto!;
  • !35 - Erro ao deletar pedido no WMS!;
  • !36 - Não alterado (separação pronta);
  • !37 - Não alterado (separação já iniciada);
  • !38 - Erro ao converter objeto JSON!;
  • !39 - Regra de pos processamento faturado cancelou a inserção deste pedido: XXXXX;
  • !40 - Pedido pronto não pode ser cancelado!;
  • 41 - Aguardando (conclusão da conferência de separação para integrar);
  • !42 - Erro não cadastrado (informações no log do servidor).

Dicionário de dados - Pedido

Nome Tipo de Dado Descrição Obrigatório Padrão
erpId varchar(30) Chave que identifica o registro.
operacao varchar(10) Operação ('INSERT', 'UPDATE', 'DELETE')
empresa varchar(20) Número da empresa.
noPedido number(10) Número do pedido.
documento varchar(1000) Documento de identificação do pedido.
serie number(10) Série do pedido.
valor number(15,4) Valor do pedido. 0.0
data datetime Data do pedido. Formato:"MMM dd, yyyy HH​:​m​m​:​ss a" Língua:"en" (configurável se necessário)
avaria boolean (true) o pedido deve ser separado do layout de avarias, (false) não. F
noCliente number(10) Código do cliente do pedido.
clienteErpId varchar(30) Chave que identifica o registro do cliente.
nomeCliente varchar(50) Nome do cliente.
prioridade number(10) Prioridade de execução do pedido. 0
tipoPedido varchar(100) Tipo do Pedido (Normal, Assistência técnica, Balcão, Cliente retira etc.) Normal
observacao varchar(200) Observação do pedido.
noRota number(10) Código da rota do pedido.
descRota varchar(100) Descrição da rota do pedido.
transportadoraErpId varchar(50) Chave que identifica a transportadora.
nomeTransportadora varchar(100) Nome da transportadora.
docasConsolidacao varchar(100) Doca do pedido.
equipe varchar(50) Descrição da equipe do pedido.
faturado boolean (true) o pedido está faturado, (false) não. F
notaFiscal number(10) Número da nota fiscal.
clienteRetira boolean (true) o pedido será retirado, (false) não. F
dataEntrega datetime Data de entrega. Formato:"MMM dd, yyyy HH​:​m​m​:​ss a" Língua:"en" (configurável se necessário)
loteInformado boolean (true) será informado lote para o pedido, (false) não. F
itensPedido arraylist (ItensPedido) Lista de itens a serem integrados.
volumes number(10) Quantidade total de volumes separados.
vinculo varchar Lista de pedidos vinculados.
representante varchar(100) Representante do pedido.
embalado boolean (true) pedido de produtos embalados, (false) não, para pedido de produtos a granel. T
chaveNF varchar(100) Chave da Nota Fiscal.

Dicionário de dados - ItensPedido

Nome Tipo de Dado Descrição Obrigatório Padrão
erpId varchar(30) Chave que identifica o registro.
operacao varchar(10) Operação ('INSERT', 'UPDATE', 'DELETE')
codigoReduzido varchar(39) Código reduzido do produto.
quantidade number(15,4) Quantidade a ser separada em unidades.
qtdAvaria number(15,4) Quantidade avariada.
observacao varchar(100) Observação do item do pedido.
sequenciaERP number(10,0) Sequência do item no ERP.
noLayout number(10) Número do layout a ser retirado o item.
loteItensPedido arraylist (LoteItensPedido) Lista de lotes a serem integrados.
qtdFaturado number(15,4) Quantidade faturada no ERP
grades arraylist (Grades) Lista de grades do item.

Atenção

É importante observar que os campos (codigoReduzido e erpId) de ItensPedido, não devem se repetir em um mesmo pedido.

Dicionário de dados - LoteItensPedido

Nome Tipo de Dado Descrição Obrigatório Padrão
quantidade number(15,4) Quantidade a do lote ser separada em unidades.
qtdAvaria number(15,4) Quantidade avariada.
nolote varchar(20) Número do lote a ser separado.
validadeLote date(8) Data da validade do lote. Formato:"MMM dd, yyyy HH​:​m​m​:​ss a" Língua:"en" (configurável se necessário)
dataFabricacao date(8) Data de fabricação do lote. Formato:"MMM dd, yyyy HH​:​m​m​:​ss a" Língua:"en" (configurável se necessário)

Dicionário de dados - Grades

Nome Tipo de Dado Descrição Obrigatório Padrão
codigo varchar(50) Código da grade.
quantidade number(15,4) Quantidade do produto na grade.
tipoEstrutura varchar(50) Descrição da estrutura.

Fluxo de integração padrão

  • 1) Adicionar a nota fiscal no pedido:

    O pedido que vier completo, com a operação UPDATE e com o campo da nota fiscal preenchido, vai ser atualizado com o número da nota fiscal.

  • 2) Pedido aguardando:

    Se chegar outra operação INSERT de um pedido que já existe e o mesmo estiver com status aguardando, ele será apagado e um novo pedido, com as informações da nova tentativa de sincronização, será inserido no sistema.

  • 3) Pedido em execução/pronto:

    Pedidos que já estão cancelados, com tarefas em execução ou conferência pronta não poderão ser deletados/atualizados.

  • 4) Exclusão dos registros (operação DELETE):

    Os registros que vierem com a operação DELETE, que estiverem aguardando, serão excluídos. Se estiverem com a separação pronta vão ser cancelados, podendo gerar a devolução se estiver ativa a configuração de gerar a devolução dos itens quando o pedido é cancelado.

Fluxo de integração customizado (não padrão), disponível se for utilizada a configuração de pedido complementar

  • 1) Pedido aguardando:

    Se o pedido vier com operação INSERT, vai ser inserido um pedido série. Se o pedido vier com operação UPDATE, os itens dos pedidos que vierem com a operação INSERT serão inseridos, com a operação UPDATE serão atualizados, e os itens que vierem com a operação DELETE serão excluídos.

  • 2) Pedido em execução:

    Se o pedido estiver em execução, o WMS não efetuará as alterações solicitadas pelo ERP, sendo assim, o WMS informará o ERP que o pedido está em execução. Neste tipo de situação o ERP deve enviar esta alteração novamente após a conclusão do pedido em execução.

  • 3) Pedido pronto:

    Se o pedido estiver pronto a aplicação irá gerar devolução para os itens que tiverem as quantidades reduzidas ou excluídas, porém se a alteração for incrementar a quantidade, será gerado um novo pedido vinculado ao pedido inicial, com a quantidade a ser adicionada.

    Diminuir/ Excluir: se a operação dos itens for UPDATE ou DELETE, diminuir ou excluir, a aplicação do WMS irá criar um documento de recebimento, devolvendo as quantidades que tenham sido separadas conforme a nova atualização solicitada pelo ERP.

    Aumentar/ Novo: se a operação dos itens for UPDATE , e os itens possuírem quantidade maior do que já foi integrado ao WMS, ou com INSERT, será gerado um novo documento de pedido adicionando os itens e/ou quantidades faltantes.

Na figura abaixo, podemos analisar o fluxograma de como será processada esta operação de atualização, quando o status do pedido for pronto:

Image title
Integração de Pedido com Alteração