forked from elmau/empresa-libre
Cancelar depositos
This commit is contained in:
parent
5cda707d59
commit
c5c79eace8
|
@ -1269,6 +1269,7 @@ class MovimientosBanco(BaseModel):
|
||||||
with database_proxy.transaction():
|
with database_proxy.transaction():
|
||||||
obj.cancelado = True
|
obj.cancelado = True
|
||||||
obj.save()
|
obj.save()
|
||||||
|
FacturasPagos.cancelar(obj)
|
||||||
|
|
||||||
obj = cls._movimiento_anterior(cls, obj.cuenta, obj.fecha)
|
obj = cls._movimiento_anterior(cls, obj.cuenta, obj.fecha)
|
||||||
cls._actualizar_saldos(cls, obj)
|
cls._actualizar_saldos(cls, obj)
|
||||||
|
@ -3220,7 +3221,7 @@ class FacturasPagos(BaseModel):
|
||||||
auto_round=True)
|
auto_round=True)
|
||||||
saldo = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
saldo = DecimalField(default=0.0, max_digits=18, decimal_places=6,
|
||||||
auto_round=True)
|
auto_round=True)
|
||||||
cancelado = BooleanField(default=False)
|
# ~ cancelado = BooleanField(default=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
order_by = ('factura',)
|
order_by = ('factura',)
|
||||||
|
@ -3231,8 +3232,7 @@ class FacturasPagos(BaseModel):
|
||||||
def _movimiento_anterior(self, mov, id):
|
def _movimiento_anterior(self, mov, id):
|
||||||
query = (FacturasPagos
|
query = (FacturasPagos
|
||||||
.select()
|
.select()
|
||||||
.where(FacturasPagos.factura==id,
|
.where(FacturasPagos.factura==id)
|
||||||
FacturasPagos.cancelado==False)
|
|
||||||
)
|
)
|
||||||
if len(query):
|
if len(query):
|
||||||
return query[-1], len(query) + 1
|
return query[-1], len(query) + 1
|
||||||
|
@ -3246,6 +3246,42 @@ class FacturasPagos(BaseModel):
|
||||||
)
|
)
|
||||||
return bool(q.execute())
|
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
|
@classmethod
|
||||||
def add(cls, mov, ids):
|
def add(cls, mov, ids):
|
||||||
|
|
Loading…
Reference in New Issue