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"
}
]
}
]
}
URL
http://ip_servidor:9090/SyncWS/SyncWS/integrarPedido
Headers
Content-Type : text/xml
Body - (XML) 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"
}
]
}
]
}
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: