Agregar deposito con facturas relacionadas

This commit is contained in:
Mauricio Baeza 2017-11-29 15:21:51 -06:00
parent d06a5b8361
commit f1d47d1119
1 changed files with 38 additions and 1 deletions

View File

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