# Enviar tanques

> ## Método POST
>
> <http://app.milksrota.com.br/api/retaguardasync/writeTanque>

## Requisição

### Dados da requisição

```javascript
{
    "conta_id": "DDDDD",
    "token": "XXXX-XXXX-XXXX-XXXX",
    "doc": "99.999.999/9999-99"
    "data": [
        // lista de registros de tanques
    ]
}
```

{% hint style="info" %}
**conta\_id**: Deve ser informado o ID da conta que você encontra na tela ***"Sua conta"*** no menu principal no painel do Milk's Rota.

**token**: Deve ser informado o Token da conta, que você encontra na tela ***"Sua conta"*** no menu principal no painel do Milk's Rota.

**doc:** Deve ser informado o CNPJ da conta cadastra. Pode ser encontrado na tela ***"Sua conta"*** no menu principal do painel Milk's Rota.

**data**: Lista que deve conter um ou mais registros de tanque. Cada registro de tanque pode ser informando com a relação de propriedades detalhadas abaixo. Apenas os campos obrigatórios não podem ser ignorados.
{% endhint %}

### Propriedades do tanque

| **Campo**                        | **Descrição**                                                                                                                                                                                                                                             | **Tipo** | **Obrigatório** |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | --------------- |
| **codigo**                       | código único para identificação do registro no ERP.                                                                                                                                                                                                       | Texto    | SIM             |
| **tipo**                         | Identifica o tipo de tanque: **F** -  Tanque de fazenda(ponto de coleta), **V** - Compartimento do tanque do veículo de transporte (boca),  **P** - Tanque de plataforma (Balão ou Silo).                                                                 | Texto    | SIM             |
| tipo\_leite                      | Tipo de leite que será armazenado:  **V**- Vaca ; **C** - Cabra; **B** - Búfala                                                                                                                                                                           | Texto    | NÃO             |
| fazenda                          | Código da fazenda quando o **tipo** for **"F"**                                                                                                                                                                                                           | Texto    | NÃO             |
| veiculo                          | Código do veículo quando o **tipo** for **"V**                                                                                                                                                                                                            | Texto    | NÃO             |
| **capacidade**                   | Capacidade total de armazenamento                                                                                                                                                                                                                         | Número   | SIM             |
| perimetro                        | Medida do perímetro                                                                                                                                                                                                                                       | Decimal  | NÃO             |
| **volume**                       | Volume total de armazenamento                                                                                                                                                                                                                             | Número   | SIM             |
| altura                           | Medida da altura                                                                                                                                                                                                                                          | Decimal  | NÃO             |
| **comunitario**                  | Indica se o tanque é utilizado por mais de um produtor para armazenar leite : **1** - Sim ; **0** - Não                                                                                                                                                   | Número   | SIM             |
| comunitario\_lancamento          | Quem fará a distribuição de volumes em tanques comunitários: **DC** - agente de coleta; **DP** - Painel de monitoramento; **DA** - Aplicativo específico "Milks Tanque"                                                                                   | Texto    | NÃO             |
| comunitario\_diferenca           | Como será trata a distribuição de diferença nos tanques comunitários: **P** - Proprietário assume ; **D** - Rateio proporcional entre os participantes do tanque; **L** - Laticínio assume a diferença; **N** - Não se permite (resolver antes da coleta) | Texto    | NÃO             |
| comunitario\_divisao             | Forma de distribuição do valores : **M** - Manual;  **A** - Automática                                                                                                                                                                                    | Texto    | NÃO             |
| comunitario\_impressao           | Tipo de impressão do ticket de coleta : **D** - Detalhado; **S** - Simplificado                                                                                                                                                                           | Texto    | NÃO             |
| **comunitario\_impressao\_mapa** | **Tipo de impressão no relatório final de coleta: D** - Detalhado; **S** - Simplificado                                                                                                                                                                   | Texto    | NÃO             |
| proprietario                     | Indica quem é o proprietário do tanque: **P** - Produtor; **E** - Empresa; **A** - Aluguel                                                                                                                                                                | Texto    | NÃO             |
| email                            | Usuário para login no aplicativo "Milk's Tanque                                                                                                                                                                                                           | Texto    | NÃO             |
| senha                            | Senha de acesso para logIn no aplicativo "Milk's Tanque:.                                                                                                                                                                                                 | Texto    | NÃO             |
| descricao                        | <p>Descrição</p><p>Identificação ou Nome Comum</p>                                                                                                                                                                                                        | Texto    |                 |
| label\_impressao                 | Identificação do grupo em caso do tanque ser comunitário                                                                                                                                                                                                  | Texto    | NÃO             |
| coleta\_seletiva                 | Indica se o volume coletado neste tanque deve ser armazenado separadamente no veículo de transporte e plataforma: **1** - Sim; **0** - Não.                                                                                                               | Número   | NÃO             |
| fabricante                       | Nome do fabricante                                                                                                                                                                                                                                        | Texto    | NÃO             |
| marca                            | Marca do tanque                                                                                                                                                                                                                                           | Texto    | NÃO             |
| modelo                           | Modelo de fabricação                                                                                                                                                                                                                                      | Texto    | NÃO             |
| numero\_serie                    | Número de série da fábrica.                                                                                                                                                                                                                               | Texto    | NÃO             |
| numero\_patrimonio               | Número de patrimônio na empresa.                                                                                                                                                                                                                          | Texto    | NÃO             |
| **deleted**                      | Se o registro deve ser excluído. Se enviar o valor **1** ele será excluído caso já exista na plataforma. Se for enviado **0** ele será reativado na plataforma.                                                                                           | Texto    | SIM             |

### Exemplo de requisição

```javascript
{
    "conta_id": 999999,
    "token": "77d3-96a6-c1a3-c58e",
    "doc": "99.999.999/9999-99",
    "data": [
        {
            "codigo": "000058",  // Tanque de fazenda
            "tipo": "F",
            "Tipo_leite": "V",   // Armazenar leite de vaca
            "veiculo": "",
            "fazenda": "907010",
            "comunitario": "1",   // Indica tanque é comunitario
            "comunitario_lancamento": "DC",
            "comunitario_divisao": "M",
            "comunitario_diferenca": "P",
            "comunitario_impressao": "D",
            "capacidade": "1500",
            "volume": "1500",
            "email": "",
            "senha": "",
            "deleted": "0"
        },
        {
            "codigo": "V-001/01",  // Tanque de veículo
            "tipo": "V",
            "veiculo": "V-001", // Boca dianteira
            "fazenda": "",
            "comunitario": "0",
            "capacidade": "3200",
            "volume": "3200",
            "email": "",
            "senha": "",
            "deleted": "0"
        },
        {
            "codigo": "V-001/02",  // tanque de veículo
            "tipo": "V",
            "veiculo": "V-001", // Boca central
            "fazenda": "",
            "comunitario": "0",
            "capacidade": "3200",
            "volume": "3200",
            "email": "",
            "senha": "",
            "deleted": "0"
        },
        {
            "codigo": "SILO/01",  // tanque de plataforma
            "tipo": "P",
            "veiculo": "",
            "fazenda": "",
            "comunitario": "0",      
            "capacidade": "25000",
            "volume": "25000",
            "email": "",
            "senha": "",
            "deleted": "1"  // Indica que o registro já existe e 
        },                  // deverá ser apagado logicamente.
    ]
}
```

{% hint style="info" %}
A propriedade ***"codigo"***  faz associação do registro com a base de dados do ERP,  deve ser enviado um conteúdo único por registro, de forma a identificar o conjunto de dados entre a API e a base de dados do ERP.

A API  utiliza a propriedade ***"codigo"*** para localizar os registros, inclusive para fazer o relacionamento com chaves estrangeiras nas tabelas.\
Ex.: Antes de inserir o registro  abaixo, a rotina irá verificar se existe o veículo com código ***"V-001"*** na tabela veículo.

```
 {
   "codigo": "V-001/01",  // Tanque de veículo
   "tipo": "V",
   "veiculo": "V-001" // Boca dianteira
   ...
 }  
```

A propriedade ***"deleted"*** é utilizada para comandar o processo de atualização, inclusão ou exclusão lógica do registro. Caso seu valor seja **"0" (zero)** e o registro não tenha sido encontrado, ele será criado. Se for encontrado, o valor será atualizado e se o valor for "**1" (um)**, o conteúdo será excluído logicamente da base de dados.&#x20;
{% endhint %}

## Resposta

### 200: Importação realizada

```javascript
{
  "succes": true,
    "message": "OK",
    "data": [],
    "monitor.time": 2.14737200737 // Tempo de execução
}  
```

{% hint style="success" %}
Os registros foram enviados para a plataforma Milk's e importados sem erro.
{% endhint %}

### 200: Importação com falhas

```javascript
{
    "succes": true,
    "message": "OK",
    "data": [ // Falhas de importação
        {
            "codigo": "000101", // Código do tanque não importado
            "error_message": "tipo não informado", // mensagem de erro
            "error_code": 40003 // código do erro
        }
    ],
    "monitor.time": 2.14737200737 // Tempo de execução
}
```

{% hint style="info" %}
Os registros foram enviados para a plataforma Milk's e importados, entretanto, alguns registros não puderam ser importados.
{% endhint %}

### 404: Conta não localizada

```javascript
{    
    "success": false,
    "message": "Conta não localizada",
    "data": [],
    "monitor.time": 2.14737200737 // Tempo de execução
}
```

{% hint style="danger" %}
**O que isso significa?** Significa que o ID da conta não foi localizado na Plataforma Milk's.
{% endhint %}

### 403: Token inválido

```javascript
{
    "success": false,
    "message": "Token inválido",
    "data": [],
    "monitor.time": 2.14737200737 // Tempo de execução
}
```

{% hint style="danger" %}
**O que isso significa?** Significa que o token informado na requisição não corresponde ao token cadastrado para a conta.
{% endhint %}
