diff --git a/source/app/models/main.py b/source/app/models/main.py index c1010bd..e804340 100644 --- a/source/app/models/main.py +++ b/source/app/models/main.py @@ -1269,6 +1269,7 @@ class MovimientosBanco(BaseModel): with database_proxy.transaction(): obj.cancelado = True obj.save() + FacturasPagos.cancelar(obj) obj = cls._movimiento_anterior(cls, obj.cuenta, obj.fecha) cls._actualizar_saldos(cls, obj) @@ -3220,7 +3221,7 @@ class FacturasPagos(BaseModel): auto_round=True) saldo = DecimalField(default=0.0, max_digits=18, decimal_places=6, auto_round=True) - cancelado = BooleanField(default=False) + # ~ cancelado = BooleanField(default=False) class Meta: order_by = ('factura',) @@ -3231,8 +3232,7 @@ class FacturasPagos(BaseModel): def _movimiento_anterior(self, mov, id): query = (FacturasPagos .select() - .where(FacturasPagos.factura==id, - FacturasPagos.cancelado==False) + .where(FacturasPagos.factura==id) ) if len(query): return query[-1], len(query) + 1 @@ -3246,6 +3246,42 @@ class FacturasPagos(BaseModel): ) return bool(q.execute()) + def _actualizar_saldos(self, factura, saldo_anterior): + query = (FacturasPagos + .select() + .where(FacturasPagos.factura==factura) + ) + saldo = saldo_anterior + for i, row in enumerate(query): + if not saldo_anterior: + saldo_anterior = row.saldo_anterior + row.numero = i + 1 + row.saldo_anterior = saldo_anterior + row.saldo = saldo_anterior - row.importe + row.save() + saldo_anterior = row.saldo + saldo = row.saldo + + factura.saldo = saldo + factura.pagada = False + factura.save() + return + + @classmethod + def cancelar(cls, mov): + query = (FacturasPagos + .select() + .where(FacturasPagos.movimiento==mov) + ) + for row in query: + cls._actualizar_saldo_cliente(cls, row.factura.cliente, row.importe) + factura = row.factura + saldo_anterior = 0 + if row.numero == 1: + saldo_anterior = row.saldo_anterior + row.delete_instance() + cls._actualizar_saldos(cls, factura, saldo_anterior) + return @classmethod def add(cls, mov, ids):