def get_loan_to_save(data, amount = None, lid = None): if not lid: l = Loan.objects.get(pk=data['loan.id']) else: l = Loan.objects.get(pk=lid) if not amount: amount = round(l.amount / l.instalments,2) if amount > l.remain: amount = l.remain validate_amount(amount) if param_exist("id",data): p = Payment.objects.get(pk=data['id']) prevAmount = p.amount else: p = Payment(loan=l) prevAmount = None if checkPayment(l,amount,prevAmount): if prevAmount: diff = float(prevAmount) - float(amount) l.remain = unicode(float(l.remain) + diff) else: l.remain = unicode(float(l.remain) - float(amount)) p.amount=amount p.date=DateService.parseDate(data['date']) else: raise ValidationError(_('The entered amount is greater than the amount owed.')) return (l,p)
def save_or_update_old(request): data = '{"success":true}' req = request.REQUEST amount=req['amount'] try: validate_amount(amount) except ValidationError, va1: return '{"success":false, "msg": "%s"}' % ("".join(va1.messages)) l = Loan.objects.get(pk=req['loan.id']) if param_exist("id",req): p = Payment.objects.get(pk=req['id']) prevAmount = p.amount else: p = Payment(loan=l) prevAmount = None if checkPayment(l,amount,prevAmount): if prevAmount: diff = float(prevAmount) - float(amount) l.remain = unicode(float(l.remain) + diff) else: l.remain = unicode(float(l.remain) - float(amount)) p.amount=amount p.date=DateService.parseDate(req['date']) try: l.save() except _mysql_exceptions.Warning: