# Documentação do Banco de Dados (CD9)

Esta documentação provê uma visão estrutural das principais tabelas do banco de dados relacional que sustentam o sistema logístico do CD9. 

Os relacionamentos são gerenciados via Eloquent ORM no Laravel.

---

## 1. Módulo: CIV (Controle de Identificação de Veículo)

A tabela central de rastreio de frota e fluxos logísticos.

### Tabela: `cd_civ`
- `id` (PK)
- `data` (Date): Data de criação da entrada/saída.
- `hora_entrada_site` / `hora_entrada_cd` (Time)
- `fk_cd_companhia` (FK): Referencia a Marca Primária (Revenda/Empresa mãe) - `cd_empresas`
- `fk_cd_transportadora` (FK): Referencia a empresa que opera o transporte - `cd_empresas`
- `fk_cd_veiculo` (FK): Caminhão / Cavalo - `cd_veiculos`
- `fk_cd_motorista` (FK): Motorista responsável - `cd_motoristas`
- `fk_cd_doca` (FK): Doca operada - `cd_docas`
- `fk_cd_tipo_mov` (FK): Entrada ou Saída - `cd_tipo_movs`
- `fk_cd_status` (FK): Estado da máquina (Ex: 1 Aguardando, 4 Concluído).

**Relacionamentos (HasMany / HasOne):**
- Um CIV `Tem Muitos` **Lotes** (`cd_civ_lote`) -> Trazem XML e Produtos físicos na Entrada.
- Um CIV `Tem Uma` **AMV** Autorização de Movimento (`cd_amv`) -> Orquestra os itens requeridos na Saída.
- Um CIV `Tem Muitos` **Anexos** (`cd_anexos`) -> Tratado via regra de negócio para ser único por vez.

---

## 2. Módulo: Lotes e Estoque Físico

É aqui que a volumetria de produtos passa a existir de fato.

### Tabela: `cd_civ_lote`
Quando um veículo entra, os produtos na nota fiscal formam lotes amarrados àquele CIV.
- `id` (PK)
- `fk_cd_civ` (FK): Referencia o CIV de origem.
- `fk_cd_produto` (FK): Qual o tipo de gás/produto (Ex: P13, P20) - `cd_produtos`.
- `fk_cd_revenda` (FK): Qual distribuidor é o real dono dessa carga.
- `chave` (Varchar): A chave primária eletrônica da NFe.
- `qtd` (Int): Quantidade fiscal registrada.

### Tabela: `cd_estoque`
Sempre que um lote entra, ele abastece a tabela de estoque físico logicamente separado.
- `id` (PK)
- `fk_civ_lote` (FK): Qual lote imputou esse estoque.
- `qtd` (Int): Quantidade de entrada original (saldo físico bruto).
- `qtd_saida` (Int): Soma de quantas unidades DR esse lote já despachou ao longo do tempo.
- `qtd_reservada` (Int): Soma de quantas unidades estão aguardando carregamento (não baixadas ainda).
- **Regra do Saldo Disponível (Available):** `(qtd - qtd_saida - qtd_reservada) > 0`

---

## 3. Módulo: Anexos e Validação (NFe)

Responsável por armazenar arquivos comprobatórios associados ao CIV ou Lote (ex: XML).

### Tabela: `cd_anexos`
- `id` (PK)
- `fk_civ` (FK): Ligação macro com o CIV.
- `fk_civ_lote` (FK - nullable): Se for um XML de carga, é atrelado aqui.
- `caminho` (Varchar): Path de Storage local (`public/cd/xml/...`).
- `tipo_arquivo` (Varchar): Ex: `xml`, `pdf`.
- `status_validacao` (Int): 
  - `null`: Sem validação aplicável.
  - `1`: Sucesso (Chave NFe `xml` bateu perfeitamente com a chave em `cd_civ_lote`).
  - `2`: Divergente (Arquivo carregado de nota errada).

---

## 4. Gestão de Contratos e Empresas

### Tabela: `cd_empresas` e `cd_empresa_perfil`
- Agrupamento logístico de atores. Revendas, Transportadoras e Filiais residem em sua grande maioria dentro de entidades empresariais, segregadas através de chaves estrangeiras de tipo (TipoEmpresa).
- A tabela de Contratos (implementada externamente a CIV) controla os vínculos de vigência e senhas administrativas por operação, ligando faturamento a essas empresas de transporte ou marca.
