Variables y configuración
Variables (BudgetVariable)
Sección titulada «Variables (BudgetVariable)»Fichero: backend/app/models/budget_variable.py.
Un presupuesto puede tener variables con nombre y valor. Se usan en fórmulas de cantidades y precios de partidas y recursos.
| Campo | Tipo | Descripción |
|---|---|---|
id |
UUID | PK |
budget_id |
UUID | FK a budgets. |
nombre |
string(100) | Nombre de la variable (mayúsculas). |
valor |
string(255) | Valor (puede ser numérico o texto). |
descripcion |
text | Descripción. |
orden |
int | Orden de visualización. |
Restricción: uq_budget_variable_nombre (única por presupuesto).
Sintaxis en fórmulas
Sección titulada «Sintaxis en fórmulas»Se usan llaves o corchetes:
{ALTURA} * {BASE} * 2[IVA] + 100Patrón en backend/app/services/budget_variable_service.py:12:
_VAR_PATTERN = re.compile(r"\{([A-Za-z0-9_\-]+)\}|\[([A-Za-z0-9_\-]+)\]")Servicio
Sección titulada «Servicio»BudgetVariableService (backend/app/services/budget_variable_service.py) proporciona:
list(budget_id)create(budget_id, data)update(budget_id, variable_id, data)delete(budget_id, variable_id)resolve(budget_id, expression)resolve_numeric(...)
Configuración por presupuesto
Sección titulada «Configuración por presupuesto»Fichero: backend/app/services/budget_configuration_service.py.
Endpoint: GET/PUT /api/v1/budgets/{id}/configuracion.
Campos gestionados:
default_unit_id: unidad por defecto de nuevas partidas.default_iva_type_id: tipo de IVA por defecto.decimal_places: decimales de configuración (0-6).currency_id: moneda.
La configuración se aplica a la cabecera del presupuesto (Budget) y las nuevas partidas heredan los valores por defecto.
Validaciones
Sección titulada «Validaciones»- La unidad debe existir y estar activa.
- El tipo de IVA debe existir y estar activo.
decimal_placesdebe estar entre 0 y 6.- Solo se puede editar si el presupuesto está editable.