Anade el campo is_transfer a gastos e ingresos

Un traspaso entre cuentas propias se registra hoy como dos movimientos: un
gasto en la cuenta de origen y un ingreso en la de destino. Los saldos
cuadran, pero el gasto infla los analisis (KPIs, graficos, objetivos) con
dinero que nunca ha salido del patrimonio del usuario.

Marcar el movimiento hace falta en los dos modelos, no en uno solo. Una
"categoria de traspaso" cubriria unicamente la mitad de la operacion, porque
Income no tiene categoria; de ahi el booleano en ambos.

El campo solo se anade aqui: ninguna consulta lo usa todavia, asi que este
commit no cambia ningun numero de la aplicacion.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
JKuijperM 2026-09-16 08:30:01 +02:00
parent b4508a13db
commit 8c0225a297
2 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,23 @@
# Generated by Django 5.2.10 on 2026-09-15 10:48
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('expenses', '0012_alter_account_options_alter_category_options_and_more'),
]
operations = [
migrations.AddField(
model_name='expense',
name='is_transfer',
field=models.BooleanField(default=False, help_text='Márcalo si este movimiento solo mueve dinero entre cuentas propias. No contará como gasto ni como ingreso en los análisis, pero sí afectará al saldo de la cuenta.', verbose_name='Es un traspaso entre cuentas'),
),
migrations.AddField(
model_name='income',
name='is_transfer',
field=models.BooleanField(default=False, help_text='Márcalo si este movimiento solo mueve dinero entre cuentas propias. No contará como gasto ni como ingreso en los análisis, pero sí afectará al saldo de la cuenta.', verbose_name='Es un traspaso entre cuentas'),
),
]

View File

@ -228,6 +228,16 @@ class Expense(models.Model):
related_name="expenses",
)
is_transfer = models.BooleanField(
default=False,
verbose_name="Es un traspaso entre cuentas",
help_text=(
"Márcalo si este movimiento solo mueve dinero entre cuentas propias. "
"No contará como gasto ni como ingreso en los análisis, pero sí "
"afectará al saldo de la cuenta."
),
)
created_at = models.DateField(auto_now_add=True)
class Meta:
@ -246,6 +256,17 @@ class Income(models.Model):
name = models.CharField(max_length=150)
amount = models.DecimalField(max_digits=12, decimal_places=2)
date = models.DateField()
is_transfer = models.BooleanField(
default=False,
verbose_name="Es un traspaso entre cuentas",
help_text=(
"Márcalo si este movimiento solo mueve dinero entre cuentas propias. "
"No contará como gasto ni como ingreso en los análisis, pero sí "
"afectará al saldo de la cuenta."
),
)
created_at = models.DateTimeField(auto_now_add=True)
class Meta: