Cancelar depositos

This commit is contained in:
Mauricio Baeza 2017-11-29 21:39:19 -06:00
parent 5cda707d59
commit c5c79eace8
1 changed files with 39 additions and 3 deletions

View File

@ -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):