Ir al contenido

Variables y configuración

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).

Se usan llaves o corchetes:

{ALTURA} * {BASE} * 2
[IVA] + 100

Patrón en backend/app/services/budget_variable_service.py:12:

_VAR_PATTERN = re.compile(r"\{([A-Za-z0-9_\-]+)\}|\[([A-Za-z0-9_\-]+)\]")

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(...)

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.

  • La unidad debe existir y estar activa.
  • El tipo de IVA debe existir y estar activo.
  • decimal_places debe estar entre 0 y 6.
  • Solo se puede editar si el presupuesto está editable.