Agregar deposito con facturas relacionadas
This commit is contained in:
parent
d06a5b8361
commit
f1d47d1119
|
@ -3220,6 +3220,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)
|
||||
|
||||
class Meta:
|
||||
order_by = ('factura',)
|
||||
|
@ -3227,10 +3228,46 @@ class FacturasPagos(BaseModel):
|
|||
(('factura', 'numero'), True),
|
||||
)
|
||||
|
||||
def _movimiento_anterior(self, mov, id):
|
||||
try:
|
||||
query = (FacturasPagos
|
||||
.select()
|
||||
.where(
|
||||
(FacturasPagos.movimiento==mov) &
|
||||
(FacturasPagos.factura==id) &
|
||||
(FacturasPagos.cancelado==False))[-1]
|
||||
)
|
||||
return query
|
||||
except IndexError:
|
||||
return None
|
||||
|
||||
def _actualizar_saldo_cliente(self, cliente, importe):
|
||||
q = (Socios
|
||||
.update(saldo_cliente=Socios.saldo_cliente - importe)
|
||||
.where(Socios.id==cliente.id)
|
||||
)
|
||||
return bool(q.execute())
|
||||
|
||||
|
||||
@classmethod
|
||||
def add(cls, mov, ids):
|
||||
print (mov)
|
||||
print (ids)
|
||||
for i, importe in ids.items():
|
||||
fac = Facturas.get(Facturas.id==int(i))
|
||||
mov_ant = cls._movimiento_anterior(cls, mov, fac)
|
||||
nuevo = {'movimiento': mov, 'factura': fac, 'importe': importe}
|
||||
if mov_ant is None:
|
||||
nuevo['saldo_anterior'] = float(fac.saldo)
|
||||
else:
|
||||
nuevo['numero'] = mov_ant.numero + 1
|
||||
nuevo['saldo_anterior'] = float(mov_ant.saldo)
|
||||
nuevo['saldo'] = nuevo['saldo_anterior'] - importe
|
||||
FacturasPagos.create(**nuevo)
|
||||
fac.saldo = nuevo['saldo']
|
||||
if nuevo['saldo'] == 0:
|
||||
fac.pagada = True
|
||||
fac.save()
|
||||
cls._actualizar_saldo_cliente(cls, fac.cliente, importe)
|
||||
return
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue