São as informações de um pedido feito por um cliente para um marketplace integrado ao Magalu Marketplace, nele ficam as informações do cliente, das notas e dos status do pedido. Os status possíveis são:
No Magalu Marketplace os 2 primeiros status de um pedido ocorrem dentro da plataforma. Um pedido entra como novo (NEW). Depois ele pode ser aprovado (APPROVED) ou cancelado (CANCELED) pelo marketplace. Após ser aprovado é necessário que o parceiro(ERP,Loja...etc) mude o status para processando(PROCESSING) para indicar que o pedido já encontra-se em separação e fica aguardando os próximos status que são: Nota Fiscal (INVOICED), Enviado (SHIPPED) ou Entregue (DELIVERED).
Os status de NEW para APPROVED são atualizados automaticamente no Integra, conforme o Marketplace informa esses novos status. No status NEW o pedido ainda não foi aprovado. Desta forma não há ainda movimentação em estoque, o Integra possui um sistema de reserva de estoque. Que pode ser configurado diretamente no painel quantos dias o produto ficará na reserva. Até que um pedido seja realmente pago. Só então o estoque é realmente descontado.
Caso o parceiro não possa trabalhar dessa forma. É necessário trabalhar apenas com pedidos APPROVED. Deixando os pedidos em Status NEW de lado. E inserir no ERP ou em outros sistemas, apenas quando os pedidos forem Aprovados.
Ao atualizar a informação de status do pedido, os seguintes Status devem ser utilizados: PROCESSING, INVOICED, SHIPPED, DELIVERED, SHIPMENT_EXCEPTION ou CANCELED. Cada Status atualizado deve seguir uma ordem crescente, ou seja, se o Status está em Shipped(Despachado) o mesmo não pode retornar para um status anterior, como Invoiced(Nota Fiscal Emitida).
O sistema de filas tem como objetivo facilitar a leitura de inserções e atualizações de itens da API Integra. Por exemplo, a atualização de um SKU, será disponibilidade na sua fila (SkuQueue). Sendo assim, após verificar que ocorreu a atualização deve-se consultar o SKU para ler os dados atualizados.
Como todo sistema de fila, o primeiro a chegar é o primeiro a sair, então considerando que as filas têm um limite de 100 itens, somente irão aparecer novos itens à medida que os itens da fila são confirmados (consumidos).
Para consumir os itens da fila é necessário enviar os Ids da OrderQueue. Deve ser atentar que não se trata do Id do SKU ou do ORDER. Todas as filas seguem o mesmo padrão de consumo através de uma chamada PUT, onde passa como parâmetro a lista de Ids, como no exemplo abaixo:
O retorno em caso de sucesso é 204 (No content), caso contrário é retornado apenas os itens que não foram possíveis a confirmação, os demais serão confirmados (consumidos).
Nessa fila serão disponibilizados os novos pedidos (NEW) e as alterações de status de pedido que vieram do Marketplace (APPROVED, CANCELED).
Ao fazer o GET dos pedidos com status APPROVED e confirmar o consumo destes pedidos na OrderQueue, é necessário um novo PUT, mas desta vez em Orders atualizando o status do pedido de APPROVED para PROCESSING.
Chamada:/api/OrderQueue
O parceiro tambem pode enviar três tipos de exeções do status de pedido.
Cancelado (CANCELED): pode ser enviado a partir qualquer status do fluxo normal.
Exceção de Transporte (SHIPMENT_EXCEPTION): pode ser enviado a partir qualquer status do fluxo normal.
Pedido sem estoque (UNAVAILABLE): pode ser enviado a partir qualquer status do fluxo normal.
Nos pedidos a obrigatoriedade dos campos depende do status. A mudança do status do pedido para um atual , tem que corresponder a um status válido , ou seja ele não pode voltar para um status anterior.
| STATUS | CAMPO | DESCRIÇÃO | OBRIGATORIEDADE |
|---|---|---|---|
| processing | |||
| "IdOrder": "string" | Id do pedido | X | |
| "OrderStatus": "PROCESSING" | Status do pedido | X | |
| invoiced | |||
| "IdOrder": "string" | Id do pedido | X | |
| "OrderStatus": "INVOICED" | Status do pedido | X | |
| "InvoicedNumber": "string" | Numero da Nota Fiscal | X | |
| "InvoicedLine": 0 | Série da Nota Fiscal | X | |
| "InvoicedIssueDate": "2016-06-23T10:59:50.381Z" | Data de Emissão da Fatura | X | |
| "InvoicedKey": "string" | Chave da Nota Fiscal | X | |
| "InvoicedDanfeXml": "string" | Xml da Nota Fiscal | ||
| shipped | |||
| "IdOrder": "string" | Id do pedido | X | |
| "OrderStatus": "SHIPPED" | Status do pedido | X | |
| "ShippedTrackingUrl": "string" | Url de Rastreio | ||
| "ShippedTrackingProtocol": "string" | Código de Rastreio | X | |
| "ShippedEstimatedDelivery": "2016-06-23T10:59:50.381Z" | Data estimativa de Entrega | ||
| "ShippedCarrierDate": "2016-06-23T10:59:50.381Z" | Data Entrega a Transportadora | X | |
| "ShippedCarrierName": "string" | Nome da Transportadora | X | |
| delivered | |||
| "IdOrder": "string" | Id do pedido | X | |
| "OrderStatus": "DELIVERED" | Status do pedido | X | |
| "DeliveredDate": "2016-06-23T10:59:50.381Z" | Data da entrega ao cliente | X | |
| shipmentException | |||
| "IdOrder": "string" | Id do pedido | X | |
| "OrderStatus": "SHIPMENTEXCEPTION" | Status do pedido | X | |
| "ShipmentExceptionObservation": "string" | Observação em caso de falha | X | |
| "ShipmentExceptionOccurrenceDate": "2016-06-23T10:59:50.381Z" | Data em que houve falha | X |
Metodo: PUT
Endpoint:(/api/Order)
Verifique no Swagger o exemplo de json's para alteração de status
{
"IdOrder": "string", /*Obrigatório: Pedido deve existir */
"IdOrderMarketplace": "string", /* Id do Pedido no Marketplace */
"InsertedDate": "2016-06-23T10:59:50.381Z", /* Data de Insersão do pedido */
"PurchasedDate": "2016-06-23T10:59:50.381Z", /* Data da Compra */
"ApprovedDate": "2016-06-23T10:59:50.381Z", /* Data de Aprovação */
"UpdatedDate": "2016-06-23T10:59:50.381Z", /* Data do ultimo Update */
"MarketplaceName": "string", /* Nome do Marketplace: b2w | cnova | carrefour | vtex| mobly | magazineluiza | dafiti | tricae */
"StoreName": "string", /* Nome da Loja do Marketplace: (SHOPTIME, SUBMARINO, LOJASAMERICANAS) VTEX | MOBLY | magazineluiza | DAFITI | TRICAE */
"UpdatedMarketplaceStatus": true, /*Está atualizado no Marketplace? (true/false)*/
"InsertedErp": true, /*Está inserido no ERP? (true/false)*/
"EstimatedDeliveryDate": "2016-06-23T10:59:50.381Z", /* Data de Previsão de entrega*/
"CustomerPfCpf": "string", /* CPF do Consumidor */
"CustomerPfName": "string", /* Nome do Consumidor */
"CustomerPjCnpj": "string", /* CNPJ - Pessoa Juridica */
"CustomerPjCorporatename": "string", /* Nome da Empresa */
"DeliveryAddressStreet": "string", /* Rua de Entrega */
"DeliveryAddressAdditionalInfo": "string", /* Informações Adicionais de Entrega*/
"DeliveryAddressZipcode": "string", /* CEP */
"DeliveryAddressNeighborhood": "string", /* Bairro */
"DeliveryAddressCity": "string", /* Cidade */
"DeliveryAddressReference": "string", /* Ponto de Referencia */
"DeliveryAddressState": "string", /* Estado */
"DeliveryAddressNumber": "string", /* Numero do Endereço */
"TelephoneMainNumber": "string", /* Telefone Principal */
"TelephoneSecundaryNumber": "string", /* Telefone Secundario */
"TelephoneBusinessNumber": "string", /* Telefone Comercial */
"TotalAmount": "string", /* Total da Compra */
"TotalFreight": "string", /* Valor do Frete */
"TotalDiscount": "string", /* Desconto */
"CustomerBirthDate": "string", /* Data de Nascimento do Cliente */
"CustomerPjIe": "string", /* Inscrição Estadual*/
"OrderStatus": "string", /* Obrigatório: VER REGRAS ACIMA*/
"InvoicedNumber": "string", /* Numero da Nota Fiscal */
"InvoicedLine": 0, /* Série da Nota Fiscal */
"InvoicedIssueDate": "2016-06-23T10:59:50.381Z", /* Data de Emissão Faturamento */
"InvoicedKey": "string", /* Chave da Nota Fiscal */
"InvoicedDanfeXml": "string", /* Xml da Nota Fiscal */
"ShippedTrackingUrl": "string", /* Url de Rastreio */
"ShippedTrackingProtocol": "string", /* Código de Rastreio*/
"ShippedEstimatedDelivery": "2016-06-23T10:59:50.381Z", /* Data estimativa de Entrega */
"ShippedCarrierDate": "2016-06-23T10:59:50.381Z", /* Data Entrega a Transportadora */
"ShippedCarrierName": "string", /* Nome da Transportadora */
"ShipmentExceptionObservation": "string", /* Observação em caso de falha*/
"ShipmentExceptionOccurrenceDate": "2016-06-23T10:59:50.381Z", /* Data em que houve falha*/
"DeliveredDate": "2016-06-23T10:59:50.381Z", /* Data da Engrega ao cliente */
"Products": [
{ /* Lista de Produtos comprados */
"IdSku": "string",
"Quantity": 0,
"Price": "string",
"Freight": "string",
"Discount": "string"
}
],
"Payments": [
{
"Name": "string",
"Installments": 0,
"Amount": 0
}
]
}
Metodo: GET
Endpoint:(/api/Order)
Exemplo Response Body:
{
"Page": 1,
"PerPage": 1,
"Total": 16782,
"Orders": [
{
"IdOrder": "B2W-123456789",
"IdOrderMarketplace": "01-123456998",
"InsertedDate": "2016-06-09T13:00:05.057",
"PurchasedDate": "2016-06-09T12:46:26",
"ApprovedDate": "2016-06-09T13:04:28",
"UpdatedDate": "2016-06-09T12:54:25",
"MarketplaceName": "B2W",
"StoreName": "SHOPTIME",
"UpdatedMarketplaceStatus": true,
"InsertedErp": true,
"EstimatedDeliveryDate": "2016-06-22T00:00:00",
"CustomerPfCpf": "123456",
"CustomerPfName": "Pato Donalds da Silva Quack",
"CustomerPjCnpj": null,
"CustomerPjCorporatename": null,
"DeliveryAddressStreet": "Rua Patinhas Milinhoario",
"DeliveryAddressAdditionalInfo": "casa 1",
"DeliveryAddressZipcode": "112233",
"DeliveryAddressNeighborhood": "Bairro Cidade",
"DeliveryAddressCity": "Cidade",
"DeliveryAddressReference": null,
"DeliveryAddressState": "SP",
"DeliveryAddressNumber": "247",
"TelephoneMainNumber": "2233558899",
"TelephoneSecundaryNumber": "1122558855",
"TelephoneBusinessNumber": "22558899",
"TotalAmount": "82,11",
"TotalFreight": "47,34",
"TotalDiscount": "0,0",
"CustomerBirthDate": null,
"CustomerPjIe": null,
"OrderStatus": "DELIVERED",
"InvoicedNumber": "00111122",
"InvoicedLine": 1,
"InvoicedIssueDate": "2016-06-09T16:44:17.93",
"InvoicedKey": "1111111111111111111111111111111111111111111111",
"InvoicedDanfeXml": "",
"ShippedTrackingUrl": "",
"ShippedTrackingProtocol": "",
"ShippedEstimatedDelivery": "2016-06-22T00:00:00",
"ShippedCarrierDate": "2016-06-10T09:30:03.42",
"ShippedCarrierName": "Total",
"ShipmentExceptionObservation": null,
"ShipmentExceptionOccurrenceDate": null,
"DeliveredDate": "2016-06-14T23:29:15.08",
"Products": [
{
"IdSku": "1111111",
"Quantity": 1,
"Price": "13,31",
"Freight": "2,25",
"Discount": "0,0"
},
{
"IdSku": "2222222",
"Quantity": 1,
"Price": "10,73",
"Freight": "22,55",
"Discount": "0,0"
}
],
"Payments": [
{
"Name": "string",
"Installments": 0,
"Amount": 0
}
]
}
]
}
Metodo: GET
Endpoint:(/api/Order/{id})
Exemplo Response Body:
{
"IdOrder": "B2W-123456789",
"IdOrderMarketplace": "01-123456998",
"InsertedDate": "2016-06-09T13:00:05.057",
"PurchasedDate": "2016-06-09T12:46:26",
"ApprovedDate": "2016-06-09T13:04:28",
"UpdatedDate": "2016-06-09T12:54:25",
"MarketplaceName": "B2W",
"StoreName": "SHOPTIME",
"UpdatedMarketplaceStatus": true,
"InsertedErp": true,
"EstimatedDeliveryDate": "2016-06-22T00:00:00",
"CustomerPfCpf": "123456",
"CustomerPfName": "Pato Donalds da Silva Quack",
"CustomerPjCnpj": null,
"CustomerPjCorporatename": null,
"DeliveryAddressStreet": "Rua Patinhas Milinhoario",
"DeliveryAddressAdditionalInfo": "casa 1",
"DeliveryAddressZipcode": "112233",
"DeliveryAddressNeighborhood": "Bairro Cidade",
"DeliveryAddressCity": "Cidade",
"DeliveryAddressReference": null,
"DeliveryAddressState": "SP",
"DeliveryAddressNumber": "247",
"TelephoneMainNumber": "2233558899",
"TelephoneSecundaryNumber": "1122558855",
"TelephoneBusinessNumber": "22558899",
"TotalAmount": "82,11",
"TotalFreight": "47,34",
"TotalDiscount": "0,0",
"CustomerBirthDate": null,
"CustomerPjIe": null,
"OrderStatus": "DELIVERED",
"InvoicedNumber": "00111122",
"InvoicedLine": 1,
"InvoicedIssueDate": "2016-06-09T16:44:17.93",
"InvoicedKey": "1111111111111111111111111111111111111111111111",
"InvoicedDanfeXml": "",
"ShippedTrackingUrl": "",
"ShippedTrackingProtocol": "",
"ShippedEstimatedDelivery": "2016-06-22T00:00:00",
"ShippedCarrierDate": "2016-06-10T09:30:03.42",
"ShippedCarrierName": "Total",
"ShipmentExceptionObservation": null,
"ShipmentExceptionOccurrenceDate": null,
"DeliveredDate": "2016-06-14T23:29:15.08",
"Products": [
{
"IdSku": "1111111",
"Quantity": 1,
"Price": "13,31",
"Freight": "2,25",
"Discount": "0,0"
},
{
"IdSku": "2222222",
"Quantity": 1,
"Price": "10,73",
"Freight": "22,55",
"Discount": "0,0"
}
],
"Payments": [
{
"Name": "string",
"Installments": 0,
"Amount": 0
}
]
}
Metodo: GET
Endpoint:(/api/OrderQueue})
Exemplo Response Body:
{
"Total": 0,
"OrderQueues": [
{
"Id": 0,
"IdOrder": "string",
"IdOrderMarketplace": "string",
"InsertedDate": "2017-05-17T20:09:59.426Z",
"OrderStatus": "string"
}
]
}
Metodo: PUT
Endpoint:(/api/OrderQueue})
Exemplo do parametro ordersVm:
[
{
"Id": 0
},
{
"Id": 1
}
]