Planograma atual

Ver

Mostra o planograma atual de uma máquina e instalação.

GET /api/v1/machines/[machine_id]/installations/[installation_id]/current_planogram

Parâmetros de URL:

parâmetro

descrição

obrigatório

machine_id

id da máquina

sim

installation_id

id da instalação

sim

Retorno

status

descrição

200

OK

Campos que serão retornados apenas se o operador controlar estoque e a máquina for do tipo micromarket

nome

descrição

alternative_only

indica se o item é um produto somente alternativo no planograma

Exemplo:

{
  "id": 189976,
  "created_at": "2016-01-26T17:36:44.000-02:00",
  "updated_at": "2016-01-26T17:36:44.000-02:00",
  "due": "now",
  "started_at": "2016-01-26T17:36:44.000-02:00",
  "details": "Planograma temporário",
  "items": [
    {
      "id": 86717,
      "type": "Coil",
      "name": "1,2",
      "good_id": 10,
      "capacity": 20,
      "par_level": 20,
      "alert_level": 4,
      "desired_price": 2.5,
      "logical_locator": 1,
      "current_balance": 11.0,
      "status": "active",
      "alternative_only": false
    },
    {
      "id": 86718,
      "type": "Coil",
      "name": "3",
      "good_id": 12,
      "capacity": 10,
      "par_level": 10,
      "alert_level": 2,
      "desired_price": 2.3,
      "logical_locator": 2,
      "current_balance": 8.0,
      "status": "active",
      "alternative_only": true
    },
    {
      "id": 86719,
      "type": "VirtualCoil",
      "name": "4",
      "good_id": 23,
      "desired_price": 4.0,
      "logical_locator": 3,
      "children": { "1": 2, "2": 1 },
      "status": "active",
    },
    {
      "id": 86720,
      "type": "Canister",
      "good_id": 26,
      "capacity": 2000,
      "par_level": 2000,
      "alert_level": 200,
      "logical_locator": 4,
      "current_balance": 983.3,
      "status": "active",
    },
    {
      "id": 86721,
      "type": "Canister",
      "good_id": 27,
      "capacity": 3000,
      "par_level": 3000,
      "alert_level": 300,
      "logical_locator": 5,
      "current_balance": 1975.4,
      "status": "active",
    },
    {
      "id": 86722,
      "type": "VirtualCanister",
      "good_id": 30,
      "name": "5",
      "desired_price": 3.0,
      "logical_locator": 6,
      "children": { "4": 20, "5": 15 },
      "status": "active",
    }
  ]
}

Erros

status

descrição

response body

404

máquina/instalação/planograma não encontrado

{ “status”: “404”, “error”: “Not Found” }

Atualizar

Atualiza o planograma atual de determinada máquina e instalação.

Algumas condições devem ser respeitadas:

  • Somente planogramas de máquinas de micromarket podem ser atualizados.

  • Não pode haver pick list pendente para ocorrer a atualização.

  • Não é permitido alterar os campos name, type, good_id, logical_locator e children dos itens.

  • Não é possível incluir ou alterar cânisters ou seleções.

  • Não é possível excluir itens. O parâmetro _destroy será ignorado. Entretanto, um item pode ser suspenso ou inativado (ver abaixo).

Se as condições descritas não forem satisfeitas, será retornado um erro de validação, código HTTP 422.

É possível incluir itens novos, desde que não sejam cânisters ou seleções.

PATCH /api/v1/machines/[machine_id]/installations/[installation_id]/current_planogram

Parâmetros de URL:

parâmetro

descrição

obrigatório

machine_id

id da máquina

sim

installation_id

id da instalação

sim

Campos que serão retornados apenas se o operador controlar estoque e a máquina for do tipo micromarket

nome

descrição

alternative_only

indica se o item é um produto somente alternativo no planograma

Request:

{
  "planogram": {
    "details": "Planograma para testes de canaleta",
    "items_attributes": [
      {
        "id": 113846,
        "capacity": 25,
        "par_level": 25,
        "alert_level": 5,
        "desired_price": 6.5,
        "logical_locator": 1,
        "status": "active",
        "alternative_only": true
      },
      {
        "id": 113848,
        "desired_price": 4,
        "status": "suspended"
      },
      {
        "type": "Coil",
        "good_id": 12,
        "name": "4",
        "capacity": 10,
        "par_level": 10,
        "alert_level": 2,
        "desired_price": 2.3,
        "logical_locator": "4",
        "status": "active"
      }
    ]
  }
}

Campos

Obrigatórios

  • planogram

    • items_attributes: um array contendo os items do planograma (deve conter no máximo 2000 items, caso contrário o servidor poderá recusar a requisição).

      • Os items podem ser de 2 tipos: canaletas e combos.

      • Canaletas:

        • id: o id do item, gerado automaticamente pelo sistema no momento da criação do item.

        • type: deve ser igual a “Coil”. Não pode ser alterado em itens já existentes.

        • name: o número da canaleta. Caso se trate de um agrupamento de canaletas, os números devem ser separados por vírgulas. Não pode ser alterado em itens já existentes.

        • good_id: id do produto. Nesse caso não pode ser composto. Good neste caso se traduz como bem. Não pode ser alterado em itens já existentes.

        • capacity: a capacidade total da canaleta. No caso de agrupameto de canaletas, deve-se colocar aqui a capacidade total, somando-se todas as canaletas.

        • par_level: o nível de par da canaleta. No caso de agrupameto de canaletas, deve-se colocar aqui o nível de par total, somando-se todas as canaletas.

        • alert_level: o nível de alerta da canaleta.

        • desired_price: o preço unitário desejado.

        • logical_locator: trata-se do identificador lógico da canaleta. Deve-se gerar um inteiro único dentro de todos os items do planograma. Não pode ser alterado em itens já existentes.

        • status: o estado do item no planograma. Caso não seja informado em itens novos, o padrão active será usado.

      • Combos:

        • id: o id do item, gerado automaticamente pelo sistema no momento da criação do item.

        • type: deve ser igual a “VirtualCoil”. Não pode ser alterado em itens já existentes.

        • name: o número de seleção do combo. Não pode ser alterado em itens já existentes.

        • good_id: id do produto. Nesse caso deve ser composto e com o type Combo. Good neste caso se traduz como bem. Não pode ser alterado em itens já existentes.

        • desired_price: o preço unitário desejado.

        • logical_locator: trata-se do identificador lógico do combo. Deve-se gerar um inteiro único dentro de todos os items do planograma.

        • status: o estado do item no planograma. Caso não seja informado, o padrão active será usado.

        • children: as canaletas e suas quantidades que compõe o combo. É um objeto cujas chaves são identificares lógicos (campo logical_locator) das canaletas e os valores as quantidades. No exemplo acima, o combo é composto de 2 produtos da canaleta cujo name é “1,2” - ou seja, canaletas 1 e 2 agrupadas - e 1 produto da canaleta 3. Não pode ser alterado em itens já existentes.

      • Campo status:

        • active: o item está ativo e disponível para uso no vmpay e para venda.

        • inactive: o item está inativo e não poderá ser usado no vmpay nem disponibilizado para venda.

        • suspended: o item está suspenso e não poderá ser usado no vmpay, mas as unidades em campo poderão ser vendidas.

Opcionais

  • planogram

    • details: Texto explicativo relacionado ao planograma

Retorno

status

descrição

200

Atualizado com sucesso

Exemplo:

{
  "id": 2961,
  "created_at": "2016-02-16T16:54:39.000-02:00",
  "updated_at": "2016-02-16T16:54:39.000-02:00",
  "due": "due_next_restock",
  "started_at": null,
  "ended_at": null,
  "details": "Planograma para testes de canaleta",
  "items": [
    {
      "id": 113846,
      "created_at": "2016-02-16T16:54:39.000-02:00",
      "updated_at": "2016-02-16T17:03:27.727-02:00",
      "planogram_id": 2961,
      "type": "Coil",
      "good_id": 10,
      "name": "1,2",
      "capacity": 25,
      "par_level": 25,
      "alert_level": 5,
      "desired_price": 6.5,
      "modified": true,
      "undefined": false,
      "logical_locator": "1",
      "physical_locators": [
        "1",
        "2"
      ],
      "children": null,
      "current_balance": 0,
      "status": "active",
      "good": {
        "id": 10,
        "name": "Amendoin",
        "upc_code": "77",
        "upc_code_name": "77 - Amendoin",
        "unit_description": "Unidade",
        "unit_symbol": "un"
      }
    },
    {
      "id": 113848,
      "created_at": "2016-02-16T16:54:39.000-02:00",
      "updated_at": "2016-02-16T16:54:39.000-02:00",
      "planogram_id": 2961,
      "type": "VirtualCoil",
      "good_id": 23,
      "name": "4",
      "capacity": null,
      "par_level": null,
      "alert_level": null,
      "desired_price": 4,
      "modified": true,
      "undefined": false,
      "logical_locator": "3",
      "physical_locators": [
        "4"
      ],
      "children": {
        "1": 2,
        "2": 1
      },
      "status": "suspended",
      "good": {
        "id": 23,
        "name": "Camiseta Acqua tamanho G",
        "upc_code": "0",
        "upc_code_name": "0 - Camiseta Acqua tamanho G",
        "unit_description": "Unidade",
        "unit_symbol": "un"
      },
      {
        "id": 113849,
        "created_at": "2016-02-16T16:54:39.000-02:00",
        "updated_at": "2016-02-16T16:54:39.000-02:00",
        "planogram_id": 2961,
        "type": "Coil",
        "good_id": 12,
        "name": "3",
        "capacity": 10,
        "par_level": 10,
        "alert_level": 2,
        "desired_price": 2.3,
        "modified": true,
        "undefined": false,
        "logical_locator": "2",
        "physical_locators": [
          "3"
        ],
        "children": null,
        "current_balance": 0,
        "status": "active",
        "good": {
          "id": 12,
          "name": "Twix",
          "upc_code": "99",
          "upc_code_name": "99 - Twix",
          "unit_description": "Unidade",
          "unit_symbol": "un"
        }
      }
    }
  ]
}

Erros

status

descrição

response body

400

parâmetros faltando

{ “status”: “400”, “error”: “Bad Request” }

401

não autorizado

(vazio)

404

máquina/instalação/planograma não encontrado

{ “status”: “404”, “error”: “Not Found” }

422

erro ao atualizar

ver exemplo abaixo

422 - erro ao atualizar:

{
  "items.name": [
    "não pode mudar"
  ],
  "base": [
    "Registros filhos duplicados"
  ]
}