def generate_for_sales(self, sales_queryset): calculator = ProfitsLossCalculator(self.organization, start=self.period.start, end=self.period.end) for output in calculator.process_generator(sales_queryset): summary = self.tax_summaries[output.tax_rate.pk] summary.tax_rate = output.tax_rate if isinstance(output.sale, Invoice): summary.taxable_amount += output.amount_excl_tax elif isinstance(output.sale, Bill): summary.expenses_amount += output.amount_excl_tax else: raise ValueError("Unsupported type of sale {}".format( output.sale.__class__))
def generate_for_sales(self, sales_queryset): calculator = ProfitsLossCalculator(self.organization, start=self.period.start, end=self.period.end) for output in calculator.process_generator(sales_queryset): key_date = self.group_by_date(output.payment.date_paid) summary = self.summaries[key_date] if isinstance(output.sale, Invoice): summary.sales_amount += output.amount_excl_tax elif isinstance(output.sale, Bill): summary.expenses_amount += output.amount_excl_tax else: raise ValueError("Unsupported type of sale {}".format( output.sale.__class__))
def generate_for_employees(self, employee_queryset): total_payroll_taxes = D('0') calculator = ProfitsLossCalculator(self.organization, start=self.period.start, end=self.period.end) for emp in employee_queryset: summary = self.summaries[emp.composite_name] summary.employee = emp summary.payroll_tax_rate = emp.payroll_tax_rate if emp.salary_follows_profits: # TODO compute profits based on the period interval profits = calculator.profits() summary.total_excl_tax = profits * emp.shares_percentage else: raise ValueError("Salary not indexed on the profits " "are not supported yet") total_payroll_taxes += summary.payroll_taxes # Total payroll self.total_payroll_taxes = total_payroll_taxes