Sample views

 avatar
unknown
python
3 years ago
1.7 kB
15
Indexable
def get_expense_new(request, year, *args, **kwargs):

    expense_breakdown = {}

    for category in ExpenseCategory.objects.all():
        obj_data = ExpenseVoucherLineItem.objects.filter(voucher__transaction_date__year=year).filter(expense__category=category).annotate(date=TruncMonth('voucher__transaction_date')).values('date').annotate(amt=Sum('amount'))

        label = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
        figures = [0 for x in range(0, len(label))] # Prepopulate Figures


        for data in obj_data:
            idx = (data['date'].month-1)
            figures[idx] = float(data['amt'])

        data = {
            'label': label, 
            'figures': figures,
  
        }

        expense_breakdown.update(
            {category.name.replace(" ",""): data }
        )

    # MERGE SOME DATA

    merge = ['food', 'salaryregular', 'salaryadvance', 'salaryloan', 'contributionPHICphilhealth', 'contributionPAGIBIG', 'contributionSSS', 'allowance']
    stock_list = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    label = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']

    new_dict = {}

    for mat_name, mat_values in expense_breakdown.items():

        if mat_name in merge:
            for idx, value in enumerate(mat_values['figures']):
                stock_list[idx] = stock_list[idx] + value


        new_dict.update(
            {mat_name: mat_values
            }
        ) 

    new_dict.update(
        {'personnel': {'label': label, 'figures': stock_list}
        }
    )  

    print ('get_expense_new', (type(new_dict)))

    return JsonResponse(new_dict)