# Patch 2 — modelos existentes

Três modelos já existentes precisam de pequenas adições. São todas aditivas —
nada é removido.

---

## `app/Models/Encomenda.php`

Acrescentar ao `$fillable`:

```php
        'chave_importacao',
        'visto_em',
        'ativo',
```

Acrescentar aos `$casts`:

```php
        'visto_em' => 'datetime',
        'ativo'    => 'boolean',
```

Acrescentar o relacionamento com o mapa (opcional, mas prático):

```php
    public function mapasCarga()
    {
        return $this->hasManyThrough(
            \App\Models\MapaCarga::class,
            \App\Models\ProgramacaoEntrega::class,
            'encomenda_id',   // FK em programacao_entregas
            'id',             // PK em mapas_carga
            'id',             // PK em encomendas
            'mapa_carga_id'   // FK em programacao_entregas
        );
    }
```

---

## `app/Models/ProgramacaoEntrega.php`

Acrescentar ao `$fillable`:

```php
        'mapa_carga_id',
        'chave_importacao',
        'visto_em',
        'ativo',
```

Acrescentar aos `$casts` (o modelo ainda não tem `$casts`; criar):

```php
    protected $casts = [
        'data_mapa_carga' => 'date',
        'data_carga'      => 'date',
        'visto_em'        => 'datetime',
        'ativo'           => 'boolean',
    ];
```

Acrescentar relacionamentos:

```php
    public function mapaCarga()
    {
        return $this->belongsTo(\App\Models\MapaCarga::class, 'mapa_carga_id');
    }

    public function descarga()
    {
        return $this->hasOne(\App\Models\Descarga::class, 'programacao_entrega_id');
    }
```

---

## `app/Models/Entrega.php`

Acrescentar ao `$fillable`:

```php
        'chave_importacao',
        'visto_em',
```

---

## `app/Models/Produto.php`

Acrescentar ao `$fillable`:

```php
        'elegivel_desconto_ga',
```

E aos `$casts`:

```php
    protected $casts = [
        'elegivel_desconto_ga' => 'boolean',
    ];
```

> Se o modelo já tiver `$casts`, juntar a linha em vez de criar o array.

---

## `app/Models/Tipo_Usuario.php`

Acrescentar ao `$fillable` as novas permissões:

```php
        'exibir_portal_descargas',
        'atribuir_mapas_carga',
        'gerir_acessos_motorista',
        'exibir_folha_servico',
        'editar_folha_servico',
        'app_motorista',
```

---

## `app/Models/Driver.php`

Acrescentar os relacionamentos com o novo módulo:

```php
    public function mapasCarga()
    {
        return $this->hasMany(\App\Models\MapaCarga::class, 'driver_id');
    }

    public function jornadas()
    {
        return $this->hasMany(\App\Models\Jornada::class, 'driver_id');
    }

    public function acessoTemporario()
    {
        return $this->hasOne(\App\Models\AcessoTemporario::class, 'driver_id');
    }
```

---

## `app/Models/Veiculo.php` e `app/Models/Cisterna.php`

Nada a alterar. O módulo lê `matricula`, `numero_compartimentos` e
`capacidade_por_compartimento`, que já existem.
