88 lines
2.3 KiB
Markdown
88 lines
2.3 KiB
Markdown
# Proforma Tax Config
|
|
|
|
## Objetivo
|
|
|
|
Persistir la configuracion fiscal de cabecera de una proforma sin confundirla con los impuestos realmente calculados desde lineas valoradas.
|
|
|
|
## Alcance
|
|
|
|
- `tax_regime_code` sigue representando el regimen fiscal general
|
|
- `tax_config` representa los controles fiscales de cabecera usados por la UI
|
|
- `taxes` sigue representando solo desglose fiscal materializado
|
|
- `totals` sigue representando solo importes calculados desde lineas valoradas
|
|
|
|
## Campos persistidos en `proformas`
|
|
|
|
- `tax_mode`
|
|
- `default_iva_code`
|
|
- `uses_equivalence_surcharge`
|
|
- `default_rec_code`
|
|
- `uses_retention`
|
|
- `default_retention_code`
|
|
|
|
## Contrato publico
|
|
|
|
`GET /proformas/:id` debe devolver:
|
|
|
|
```ts
|
|
{
|
|
tax_regime: {
|
|
code: string;
|
|
name: string;
|
|
description: string;
|
|
} | null;
|
|
tax_config: {
|
|
tax_mode: "single" | "per_line";
|
|
default_iva_code: string | null;
|
|
uses_equivalence_surcharge: boolean;
|
|
default_rec_code: string | null;
|
|
uses_retention: boolean;
|
|
default_retention_code: string | null;
|
|
};
|
|
}
|
|
```
|
|
|
|
`POST /proformas` y `PATCH /proformas/:id` pueden aceptar `tax_config` como bloque independiente de `items`.
|
|
|
|
## Regla funcional
|
|
|
|
- una proforma puede existir con `items = []`
|
|
- en ese caso `taxes = []`
|
|
- en ese caso todos los totales monetarios deben quedar a `0`
|
|
- la UI debe hidratar los controles de fiscalidad desde `tax_config`, no desde `taxes`
|
|
|
|
## Resolucion de defaults en create
|
|
|
|
Los defaults del cliente solo se usan al crear la proforma y el resultado se persiste.
|
|
|
|
Fallback actual:
|
|
|
|
- `tax_mode`: `single`
|
|
- IVA por defecto: `iva_21`
|
|
- recargo de equivalencia: desactivado salvo indicacion explicita
|
|
- retencion: desactivada salvo indicacion explicita
|
|
- codigo de retencion por defecto si `uses_retention = true`: `retention_15`
|
|
|
|
Si el cliente cambia despues de crear la proforma:
|
|
|
|
- no se reconstruye `tax_config` desde el cliente actual
|
|
- la proforma conserva su `tax_config` persistido
|
|
|
|
## Regla de update
|
|
|
|
`tax_config` se actualiza de forma parcial y se mergea sobre la configuracion persistida actual.
|
|
|
|
No debe reconstruirse desde:
|
|
|
|
- `taxes`
|
|
- el cliente actual
|
|
- defaults implícitos de frontend
|
|
|
|
## No incluido
|
|
|
|
- nueva tabla para configuracion fiscal
|
|
- recalculo fiscal fuera del flujo normal de lineas
|
|
- cambios de Verifacti
|
|
- cobros o vencimientos vivos
|
|
- rectificativas
|