def daily_collection(request): if (request.method == 'GET'): return get_daily_collection(request) if (request.method != 'POST'): return HttpResponse('Request must be either GET or POST', status=500) c_list = Customer.objects.all().order_by('name') for c in c_list: cust_payment = request.POST.get('customer_collection_%s' % c.id) cust_payment = int(cust_payment) if cust_payment else 0 if cust_payment: print("Payment for ", c.name, " is ", cust_payment) print("Finding subscriptions with due amounts") dues = (JournalItem.objects.filter(subscription__member_id=c.id). values('subscription_id').annotate( Sum('debit'), Sum('credit')).order_by('subscription__id')) # Get any previous credits pc_id = Subscriptions.objects.get(member_id=c.id, group_id=1).id a = JournalItem.objects.filter(subscription_id=pc_id).aggregate( Sum('debit'), Sum('credit')) credit_amount = int(a['credit__sum'] if a['credit__sum'] else 0) debit_amount = int(a['debit__sum'] if a['debit__sum'] else 0) old_credit = credit_amount - debit_amount # Create journal entry j = Journal() j.entry_date = request.POST['collection_date'] j.amount = cust_payment j.entry_type = j.PAYMENT j.member = c j.save() # If there any old credit, add it to the current amount available_amount = old_credit + cust_payment for s in dues: s_id = s['subscription_id'] due = s['debit__sum'] - s['credit__sum'] if due <= 0: continue j1 = JournalItem() j1.subscription_id = s_id j1.txn = j j1.debit = 0 j1.credit = min(due, available_amount) j1.save() available_amount -= j1.credit if available_amount == 0: break if available_amount != old_credit: j1 = JournalItem() j1.txn = j j1.credit = cust_payment j1.subscription_id = pc_id j1.debit = 0 if old_credit < available_amount: j1.credit = available_amount - old_credit else: j1.debit = old_credit - available_amount j1.save() return HttpResponseRedirect('/customers/list')
def daily_collection(request): c_list = Customer.objects.all().order_by('name') for c in c_list: cust_payment = request.POST.get('customer_collection_%s' % c.id) cust_payment = int(cust_payment) if cust_payment else 0 if cust_payment: print "Payment for ", c.name, " is ", cust_payment print "Finding subscriptions with due amounts" dues = (JournalItem.objects .filter(subscription__member_id=c.id) .values('subscription_id') .annotate(Sum('debit'),Sum('credit')) .order_by('subscription__id')) # Get any previous credits pc_id = Subscriptions.objects.get(member_id=c.id, group_id=1).id a = JournalItem.objects.filter(subscription_id=pc_id).aggregate(Sum('debit'),Sum('credit')) credit_amount = int(a['credit__sum'] if a['credit__sum'] else 0) debit_amount = int(a['debit__sum'] if a['debit__sum'] else 0) old_credit = credit_amount - debit_amount # Create journal entry j = Journal() j.entry_date = request.POST['collection_date'] j.amount = cust_payment j.entry_type = j.PAYMENT j.save() # If there any old credit, add it to the current amount if old_credit != 0: j1 = JournalItem() j1.txn = j j1.subscription_id = pc_id cust_payment += old_credit if(old_credit>0): j1.debit, j1.credit = old_credit, 0 j1.credit = 0 else: # We don't expect this case. But if the customer # Owe us something for what ever reason, we reduce it # from the amount j1.debit, j1.credit = 0, -old_credit j1.save() for s in dues: s_id = s['subscription_id'] due = s['debit__sum'] - s['credit__sum'] if due == 0: continue j1 = JournalItem() j1.subscription_id = s_id j1.txn = j j1.debit = 0 j1.credit = min(due, cust_payment) j1.save() cust_payment -= j1.credit if cust_payment == 0: break else: j1 = JournalItem() j1.txn = j j1.credit = cust_payment j1.subscription_id = pc_id j1.debit = 0 j1.save() return HttpResponseRedirect('/customers/list')
def daily_collection(request): if(request.method=='GET'): return get_daily_collection(request) if(request.method != 'POST'): return HttpResponse('Request must be either GET or POST', status=500) c_list = Customer.objects.all().order_by('name') for c in c_list: cust_payment = request.POST.get('customer_collection_%s' % c.id) cust_payment = int(cust_payment) if cust_payment else 0 if cust_payment: print "Payment for ", c.name, " is ", cust_payment print "Finding subscriptions with due amounts" dues = (JournalItem.objects .filter(subscription__member_id=c.id) .values('subscription_id') .annotate(Sum('debit'),Sum('credit')) .order_by('subscription__id')) # Get any previous credits pc_id = Subscriptions.objects.get(member_id=c.id, group_id=1).id a = JournalItem.objects.filter(subscription_id=pc_id).aggregate(Sum('debit'),Sum('credit')) credit_amount = int(a['credit__sum'] if a['credit__sum'] else 0) debit_amount = int(a['debit__sum'] if a['debit__sum'] else 0) old_credit = credit_amount - debit_amount # Create journal entry j = Journal() j.entry_date = request.POST['collection_date'] j.amount = cust_payment j.entry_type = j.PAYMENT j.member = c j.save() # If there any old credit, add it to the current amount available_amount = old_credit + cust_payment print "\n" print "Total available amount == ", available_amount print "\n" for s in dues: s_id = s['subscription_id'] due = s['debit__sum'] - s['credit__sum'] if due <= 0: continue j1 = JournalItem() j1.subscription_id = s_id j1.txn = j j1.debit = 0 j1.credit = min(due, available_amount) j1.save() available_amount -= j1.credit if available_amount == 0: break if available_amount != old_credit: j1 = JournalItem() j1.txn = j j1.credit = 0 j1.subscription_id = pc_id j1.debit = 0 if old_credit < available_amount: j1.credit = available_amount - old_credit else: j1.debit = old_credit - available_amount j1.save() return HttpResponseRedirect('/customers/list')
def daily_collection(request): c_list = Customer.objects.all().order_by('name') for c in c_list: cust_payment = request.POST.get('customer_collection_%s' % c.id) cust_payment = int(cust_payment) if cust_payment else 0 if cust_payment: print "Payment for ", c.name, " is ", cust_payment print "Finding subscriptions with due amounts" dues = (JournalItem.objects.filter(subscription__member_id=c.id). values('subscription_id').annotate( Sum('debit'), Sum('credit')).order_by('subscription__id')) # Get any previous credits pc_id = Subscriptions.objects.get(member_id=c.id, group_id=1).id a = JournalItem.objects.filter(subscription_id=pc_id).aggregate( Sum('debit'), Sum('credit')) credit_amount = int(a['credit__sum'] if a['credit__sum'] else 0) debit_amount = int(a['debit__sum'] if a['debit__sum'] else 0) old_credit = credit_amount - debit_amount # Create journal entry j = Journal() j.entry_date = request.POST['collection_date'] j.amount = cust_payment j.entry_type = j.PAYMENT j.save() # If there any old credit, add it to the current amount if old_credit != 0: j1 = JournalItem() j1.txn = j j1.subscription_id = pc_id cust_payment += old_credit if (old_credit > 0): j1.debit, j1.credit = old_credit, 0 j1.credit = 0 else: # We don't expect this case. But if the customer # Owe us something for what ever reason, we reduce it # from the amount j1.debit, j1.credit = 0, -old_credit j1.save() for s in dues: s_id = s['subscription_id'] due = s['debit__sum'] - s['credit__sum'] if due == 0: continue j1 = JournalItem() j1.subscription_id = s_id j1.txn = j j1.debit = 0 j1.credit = min(due, cust_payment) j1.save() cust_payment -= j1.credit if cust_payment == 0: break else: j1 = JournalItem() j1.txn = j j1.credit = cust_payment j1.subscription_id = pc_id j1.debit = 0 j1.save() return HttpResponseRedirect('/customers/list')