Пример #1
0
    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__))
Пример #2
0
    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__))
Пример #3
0
    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__))
Пример #4
0
    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__))
Пример #5
0
    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
Пример #6
0
    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