</Pedidos>

PEDIDOS (/api/Order)

São as informações de um pedido feito por um cliente para um marketplace integrado ao IntegraCommerce, nele ficam as informações do cliente, das notas e dos status do pedido. Os status possíveis são:

  • (-1) - NEW - Pedidos novos
  • (0) - APPROVED - Pedido aprovado (pagamento OK)
  • (1) - PROCESSING - Pedido aguardando emissão de nota fiscal
  • (2) - INVOICED - Pedido aguardando expedição
  • (3) - SHIPPED - Pedido aguardando entrega
  • (4) - DELIVERED - Pedido entregue
  • (5) - SHIPMENT_EXCEPTION - Pedido com exceção de transporte
  • (6) - UNAVAILABLE - Pedido sem estoque
  • (7) - CANCELED - Pedido cancelado

Fluxo normal de Status

Order

No IntegraCommerce 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).

SISTEMA DE FILAS API INTEGRA

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).

Fila de pedidos (OrderQueue)

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

Demais Status

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.

Campos Obrigatórios para cada Status

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

Métodos

Order

Atualizar Pedido

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
        }
    ]
}

Consultar vários Pedidos

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
            }
        ]
    }
    ]
}

Consultar um pedido

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
        }
    ]
}

OrderQueue

Recuperar novos pedidos e atualizações de status provenientes do Marketplace

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"
    }
  ]
}

Este método insere os Pedidos que foram consumidos da fila.

Metodo: PUT

Endpoint:(/api/OrderQueue})

Exemplo do parametro ordersVm:

                [
                  {
                    "Id": 0
                  },
                    {
                    "Id": 1
                  }
                ]