示例#1
0
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)
示例#2
0
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: