# Instalar: Numeração Automática + Criar Orçamentos/Facturas

## 1. Ficheiros novos

```
app/Livewire/Admin/QuoteCreate.php
app/Livewire/Admin/InvoiceCreate.php
resources/views/livewire/admin/quote-create.blade.php
resources/views/livewire/admin/invoice-create.blade.php
```

## 2. Ficheiros a substituir

```
app/Services/DocumentNumberService.php        (+ nextPropertyCode, nextAssetTag)

app/Livewire/Admin/PropertyIndex.php            (código automático)
app/Livewire/Admin/AssetIndex.php                (tag automática)
app/Livewire/Admin/PropertyShow.php               (tag automática no form inline)

resources/views/livewire/admin/property-index.blade.php
resources/views/livewire/admin/asset-index.blade.php
resources/views/livewire/admin/property-show.blade.php
resources/views/livewire/admin/quote-index.blade.php    (botão + Novo)
resources/views/livewire/admin/invoice-index.blade.php   (botão + Nova)

routes/web.php   (rotas /admin/quotes/create e /admin/invoices/create)
```

Sem migrations.

```bash
cd ~/public_html/app.amimak.co.mz
php artisan config:clear
php artisan route:clear
php artisan view:clear
```

## 3. O que mudou

### Numeração automática
- **Código de Imóvel**: gerado como `IMV-00001`, `IMV-00002`... ao clicar
  "+ Novo" — campo fica visível mas bloqueado (não editável)
- **Tag de Equipamento**: gerado como `AST-00001`, `AST-00002`... tanto em
  `/admin/assets` como no formulário rápido dentro do imóvel
- Continuam automáticos, como já estavam: número de Pedido (`REQ-...`),
  Work Order (`WO-...`), Orçamento (`ORC-...`)

### Registar Orçamento (`/admin/quotes/create`)
Formulário: escolhe a Work Order, opcionalmente o fornecedor/prestador
externo, adiciona itens (descrição, quantidade, preço, tipo) com
"+ Adicionar item" dinâmico. Número do orçamento gerado automaticamente.

### Registar Factura (`/admin/invoices/create`)
Formulário: escolhe Work Order **ou** Orçamento aprovado (pelo menos um é
obrigatório — nunca uma factura "órfã"), fornecedor opcional, e o **número
da factura é digitado** porque é o número que o próprio fornecedor emitiu
(não é algo que a AMIMAK gera). Itens dinâmicos + imposto/desconto.

**Importante**: confirmei o teu entendimento no código — estas facturas
são registo interno de custos de reparação por fornecedor, associadas ao
imóvel/equipamento via Work Order, para histórico. Não é a factura ao
cliente final da AMIMAK (isso fica para outro sistema, como disseste).

## 4. Testar

1. `/admin/properties` → "+ Novo" → confirma que o código já vem
   preenchido (`IMV-00001`) e não dá para editar
2. `/admin/assets` → "+ Novo" → mesmo teste com a tag
3. `/admin/quotes/create` → escolhe uma Work Order, adiciona 2 itens,
   regista → confirma que aparece na listagem com número automático
4. `/admin/invoices/create` → tenta submeter sem escolher WO nem Orçamento
   → deve dar erro de validação (D6: nunca órfã)
