Аннотирование ошибочных расчетов

class Order():
    pass

class OrderItems():
    parent = models.ForiegnKey(Parent, related_name="items")

class OrderItemSalesTax():
    child = models.ForiegnKey(OrderItems, related_name="sales_tax")

Я использую этот запрос для вычисления общей суммы, а также вычитания скидки и добавления налога с продаж.

Но во второй аннотации я не получаю правильных результатов, как вы можете видеть, запрос прямолинеен для расчета налога с продаж (цена + цена * tax_percentage / 100).

После нескольких часов борьбы я не мог понять, делаю ли я что-то неправильно?

 Order.objects.annotate(trade_price= \
                                    ExpressionWrapper(
                                                   Sum(F('items__trade_price') * ExpressionWrapper(0.01 * (100 - F('items__discount__discount')), output_field=DecimalField()) * F('items__quantity')
                                            ) 
                                            , output_field=DecimalField()
                                        )
                                    ).annotate(total_price=F('trade_price') + F('trade_price') * Sum(F('items__sales_tax__percentage') / 100))

Вернуться на верх