def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) currency = settings.CURRENCY back_url = reverse('analysis:homepage') incomes = Income.filters_data( self.request, Income.objects.all()).order_by('date_expired') income_clean_value, income_taxes, income_value = 0, 0, 0 if incomes.exists(): income_clean_value = incomes.aggregate( Sum('clean_value'))['clean_value__sum'] income_taxes = incomes.aggregate(Sum('taxes'))['taxes__sum'] income_value = incomes.aggregate( Sum('final_value'))['final_value__sum'] total_z = incomes.aggregate( Sum('sum_z'))['sum_z__sum'] if incomes.exists() else 0 total_pos = incomes.aggregate( Sum('pos'))['pos__sum'] if incomes.exists() else 0 total_cash = total_z - total_pos total_order = incomes.aggregate( Sum('order_cost'))['order_cost__sum'] if incomes.exists() else 0 total = incomes.aggregate( Sum('value'))['value__sum'] if incomes.exists() else 0 date_filter = True # outcomes vendor_payments = Payment.filters_data(self.request, Payment.objects.all()) vendor_payments_total = vendor_payments.aggregate( Sum('value'))['value__sum'] if vendor_payments.exists() else 0 payrolls = Payroll.filters_data(self.request, Payroll.objects.filter(is_paid=True)) payrolls_total = payrolls.aggregate( Sum('final_value'))['final_value__sum'] if payrolls.exists() else 0 bills = Bill.filters_data(self.request, Bill.objects.filter(is_paid=True)) bills_total = bills.aggregate( Sum('final_value'))['final_value__sum'] if bills.exists() else 0 generic_expenses = GeneralExpense.filters_data( self.request, GeneralExpense.objects.filter(is_paid=True)) generic_expenses_total = generic_expenses.aggregate( Sum('value'))['value__sum'] if generic_expenses.exists() else 0 total_expenses = vendor_payments_total + bills_total + payrolls_total + generic_expenses_total expenses_query = sorted(chain(bills, vendor_payments, payrolls, generic_expenses), key=attrgetter('report_date')) diff = round(total - total_expenses, 2) context.update(locals()) return context
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) currency, date_filter = settings.CURRENCY, True back_url = reverse('analysis:homepage') search_filter, paid_filter = [True] * 2 # get the incomes incomes = CostumerPayment.filters_data( self.request, CostumerPayment.objects.all()).order_by('date') total = incomes.aggregate( Sum('value'))['value__sum'] if incomes.exists() else 0 # vendor_payments vendor_payments = Payment.filters_data(self.request, Payment.objects.all()) vendor_payments_total = vendor_payments.aggregate( Sum('value'))['value__sum'] if vendor_payments.exists() else 0 payrolls = Payroll.filters_data(self.request, Payroll.objects.filter(is_paid=True)) payrolls_total = payrolls.aggregate( Sum('final_value'))['final_value__sum'] if payrolls.exists() else 0 bills = Bill.filters_data(self.request, Bill.objects.filter(is_paid=True)) bills_total = bills.aggregate( Sum('final_value'))['final_value__sum'] if bills.exists() else 0 generic_expenses = GenericExpense.filters_data( self.request, GenericExpense.objects.all()) generic_total = generic_expenses.aggregate( Sum('final_value'))['final_value__sum'] if generic_expenses.exists( ) else 0 total_expenses = vendor_payments_total + bills_total + payrolls_total + generic_total expenses_query = sorted(chain(bills, vendor_payments, payrolls, generic_expenses), key=attrgetter('date')) diff = round(total - total_expenses, 2) context.update(locals()) return context
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) currency = settings.CURRENCY back_url = reverse('analysis:homepage') date_filter = True bills = Bill.filters_data(self.request, Bill.objects.all()) payrolls = Payroll.filters_data(self.request, Payroll.objects.all()) invoices = Invoice.filters_data(self.request, Invoice.objects.all()) generic_expenses = GeneralExpense.filters_data( self.request, GeneralExpense.objects.all()) generic_expenses_analysis = generic_expenses.values( 'category__title').annotate(total=Sum('value')).order_by('-total') generic_expenses_analysis_per_month = generic_expenses.annotate(month=TruncMonth('date')).values('month'). \ annotate(total=Sum('value')).values('month', 'total').order_by('month') total_bills = bills.aggregate( Sum('final_value'))['final_value__sum'] if bills else 0 analysis_bills = bills.values('category__title').annotate( total=Sum('final_value')).order_by('-total') analysis_bills_per_month = bills.annotate( month=TruncMonth('date_expired')).values('month').annotate( total=Sum('final_value')).values('month', 'total').order_by('month') total_payroll = payrolls.aggregate( Sum('final_value'))['final_value__sum'] if payrolls else 0 total_invoices = invoices.aggregate( Sum('final_value'))['final_value__sum'] if invoices else 0 total_generic = generic_expenses.aggregate( Sum('value'))['value__sum'] if generic_expenses else 0 total_expenses = total_bills + total_payroll + total_invoices + total_generic analysis_invoices = invoices.values('vendor__title').annotate( total=Sum('final_value')).order_by('-total') analysis_invoices_per_month = invoices.annotate( month=TruncMonth('date')).values('month').annotate( total=Sum('final_value')).values('month', 'total').order_by('month') payroll_analysis = payrolls.values('person__title').annotate( total=Sum('final_value')).order_by('-total') payroll_analysis_per_month = payrolls.annotate(month=TruncMonth('date_expired')).values('month').\ annotate(total=Sum('final_value')).values('month', 'total').order_by('month') # get unique months months = sort_months([ analysis_invoices_per_month, analysis_bills_per_month, payroll_analysis_per_month, generic_expenses_analysis_per_month ]) result_per_months = [] for month in months: data = {'month': month, 'total': 0} # data['invoice'] = ele['total'] for ele in analysis_invoices_per_month if ele['month'] == month else 0 for ele in analysis_invoices_per_month: if ele['month'] == month: data['invoice'] = ele['total'] data['total'] = data['total'] + ele['total'] for ele in analysis_bills_per_month: if ele['month'] == month: data['bills'] = ele['total'] data['total'] = data['total'] + ele['total'] for ele in payroll_analysis_per_month: if ele['month'] == month: data['payroll'] = ele['total'] data['total'] = data['total'] + ele['total'] for ele in generic_expenses_analysis_per_month: if ele['month'] == month: data['generic'] = ele['total'] data['total'] = data['total'] + ele['total'] data['invoice'] = data['invoice'] if 'invoice' in data.keys( ) else 0 data['bills'] = data['bills'] if 'bills' in data.keys() else 0 data['payroll'] = data['payroll'] if 'payroll' in data.keys( ) else 0 data['generic'] = data['generic'] if 'generic' in data.keys( ) else 0 result_per_months.append(data) context.update(locals()) return context
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) date_filter, currency = True, settings.CURRENCY # incomes incomes = Income.filters_data(self.request, Income.objects.all()) incomes_per_month = incomes.annotate( month=TruncMonth('date_expired')).values('month').annotate( total=Sum('logistic_value')).values('month', 'total').order_by('month') incomes_per_month_table = incomes.annotate(month=TruncMonth('date_expired')).values('month')\ .annotate(total_z=Sum('sum_z'), total_pos=Sum('pos'), total_order=Sum('order_cost'), total_cash=Sum('cash'), total=Sum('logistic_value') ).order_by('month') total_z = incomes.aggregate( Sum('sum_z'))['sum_z__sum'] if incomes.exists() else 0 total_pos = incomes.aggregate( Sum('pos'))['pos__sum'] if incomes.exists() else 0 total_cash = total_z - total_pos total_order = incomes.aggregate( Sum('order_cost'))['order_cost__sum'] if incomes.exists() else 0 incomes_total = incomes.aggregate( Sum('value'))['value__sum'] if incomes.exists() else 0 # vendors data invoices = Invoice.filters_data(self.request, Invoice.objects.all()) invoices_per_month = invoices.annotate( month=TruncMonth('date')).values('month').annotate( total=Sum('final_value')).values('month', 'total').order_by('month') invoices_total = invoices.aggregate( Sum('final_value'))['final_value__sum'] if invoices.exists() else 0 vendors = invoices.values('vendor__title', 'vendor__balance').annotate( total=Sum('final_value')).order_by('-total')[:15] # payments payments = Payment.filters_data(self.request, Payment.objects.all()) payments_total = payments.aggregate( Sum('value'))['value__sum'] if payments.exists() else 0 vendors_remaining = invoices_total - payments_total # bills bills = Bill.filters_data(self.request, Bill.objects.all()) bills_per_month = bills.annotate( month=TruncMonth('date_expired')).values('month').annotate( total=Sum('final_value')).values('month', 'total').order_by('month') bills_total = bills.aggregate( Sum('final_value'))['final_value__sum'] if bills.exists() else 0 bills_paid_total = bills.filter(is_paid=True).aggregate( Sum('final_value'))['final_value__sum'] if bills.filter( is_paid=True).exists() else 0 bills_per_bill = bills.values('category__title').annotate(total_pay=Sum('final_value'), paid_value=Sum('paid_value'))\ .order_by('category__title') # payrolls payrolls = Payroll.filters_data(self.request, Payroll.objects.all()) payroll_per_month = payrolls.annotate( month=TruncMonth('date_expired')).values('month').annotate( total=Sum('final_value')).values('month', 'total').order_by('month') payrolls_total = payrolls.aggregate( Sum('final_value'))['final_value__sum'] if payrolls.exists() else 0 payrolls_paid_total = payrolls.filter(is_paid=True).aggregate( Sum('final_value'))['final_value__sum'] if payrolls.filter( is_paid=True).exists() else 0 payroll_per_person = payrolls.values('person__title').annotate(total_pay=Sum('final_value'), paid_value=Sum('paid_value'))\ .order_by('person__title') # general Expenses general_expenses = GeneralExpense.filters_data( self.request, GeneralExpense.objects.all()) general_per_month = general_expenses.annotate(month=TruncMonth('date')).values('month')\ .annotate(total=Sum('value')).values('month', 'total').order_by('month') general_total = general_expenses.aggregate( Sum('value'))['value__sum'] if general_expenses.exists() else 0 general_paid = general_expenses.filter(is_paid=True) general_paid_total = general_paid.aggregate( Sum('value'))['value__sum'] if general_paid.exists() else 0 expenses_per_category = general_expenses.values('category__title').annotate(total_pay=Sum('value'), paid_value=Sum('paid_value'))\ .order_by('category__title') # diffs totals = bills_total + payrolls_total + invoices_total + general_total paid_totals = bills_paid_total + payrolls_paid_total + payments_total + general_paid_total diff_paid = incomes_total - paid_totals diff_obligations = incomes_total - totals # chart analysis months = sort_months([ incomes_per_month, invoices_per_month, payroll_per_month, bills_per_month, general_per_month ]) result_per_months = [] for month in months: data = {'month': month, 'total': 0} for ele in incomes_per_month: if ele['month'] == month: data['income'] = ele['total'] data['total'] = data['total'] + ele['total'] for ele in invoices_per_month: if ele['month'] == month: data['invoice'] = ele['total'] data['total'] = data['total'] + ele['total'] for ele in bills_per_month: if ele['month'] == month: data['bills'] = ele['total'] data['total'] = data['total'] + ele['total'] for ele in payroll_per_month: if ele['month'] == month: data['payroll'] = ele['total'] data['total'] = data['total'] + ele['total'] for ele in general_per_month: if ele['month'] == month: data['generic'] = ele['total'] data['total'] = data['total'] + ele['total'] data['invoice'] = data['invoice'] if 'invoice' in data.keys( ) else 0 data['bills'] = data['bills'] if 'bills' in data.keys() else 0 data['payroll'] = data['payroll'] if 'payroll' in data.keys( ) else 0 data['generic'] = data['generic'] if 'generic' in data.keys( ) else 0 result_per_months.append(data) context.update(locals()) return context
def save_payroll(request): if request.user.is_authenticated() and request.user.admin: if request.is_ajax(): user_id = int(request.POST['id']) user_object = User.objects.all().filter(id=user_id) split_date = request.POST['date1'].split("/") correct_date =split_date[2] + "-" + split_date[0]+"-"+split_date[1] split_date2 = request.POST['date2'].split("/") correct_date2 =split_date2[2] + "-" + split_date2[0]+"-"+split_date2[1] worklog_time_list = Worklog.objects.filter(user=user_id ,time__range=[correct_date, correct_date2]) hours= float(request.POST['hours']) cheque_amount = float(request.POST['cheque_amount']) company_taxes = json.loads(request.POST.get('company_taxes')) employee_taxes = json.loads(request.POST.get('employee_taxes')) #company_taxes = request.POST.get('company_taxes') #print(company_taxes) #employee_taxes = request.POST.get('employee_taxes') #print(employee_taxes) new_Payroll = Payroll() new_Payroll.user = user_object[0] new_Payroll.from_time = correct_date new_Payroll.to_time = correct_date2 new_Payroll.hours = hours new_Payroll.amount_cheque = cheque_amount new_Payroll.employee_taxes = employee_taxes new_Payroll.company_taxes = company_taxes new_Payroll.save() payroll = [Payroll.objects.get(id=new_Payroll.id)] all_objects =list(user_object) + list(payroll) data = serializers.serialize('json', all_objects) return JsonResponse(data, safe=False, content_type='application/json') else: return redirect("/home/") return render(request, "payroll/information.html", {})