Как использовать group by в django с TruncDay
Я пытаюсь показать прибыль и убытки компании, используя группировку по каждому дню, вот что я пробовал :
class InvoiceItem(models.Model):
item = models.ForeignKey(Item,on_delete=models.CASCADE)
invoice = models.ForeignKey(CustomerInvoice,on_delete=models.CASCADE)
quantity = models.IntegerField)
price = models.DecimalField(max_digits=20,decimal_places=2)
created_at = models.DateTimeField(auto_now_add=True)
class Item(models.Model):
item = models.ForeignKey(Information,on_delete=models.CASCADE)
quantity = models.IntegerField()
buying_price = models.DecimalField(max_digits=30,decimal_places=2)
cost = models.DecimalField(max_digits=30,decimal_places=2,blank=True,null=True)
Мне нужно показать дневную прибыль с дневным убытком, что-то вроде этого
общая_цена = 1000, общая_основная_цена = 900, прибыль = 100 но если мы продали что-то, например, основная_цена 100, но мы продаем это за 90, то наша прибыль изменится на 90, и у нас не будет убытка, потому что у нас все еще есть прибыль, но я хочу также показать убыток, даже если у нас есть прибыль в большинстве счетов, но в одном счете у нас есть убыток, я должен показать убыток этого счета!
я не хочу показывать среднее значение, я просто хочу показать суммирование счетов-фактур с прибылью и счетов-фактур с убытками отдельно
class DailyInvoiceIncomeView(LoginRequiredMixin,ListView):
template_name = 'invoiceapp/dmyincomes/dailyinvoice.html'
model = InvoiceItem
def get_queryset(self):
return InvoiceItem.objects.annotate(day=TruncDay('created_at')).values('day').annotate(
paid_price=Sum(
(F('price') * F('quantity')) - F('discount'),output_field=DecimalField(max_digits=20,decimal_places=3)),
storage_price=Sum(
(F('item__buying_price')+F('item__cost')) * F('quantity'),output_field=DecimalField(max_digits=20,decimal_places=3)),
income=Case(
When(paid_price__gte=F('storage_price'),then=F('paid_price')-F('storage_price')),default=0,output_field=DecimalField(max_digits=20,decimal_places=3)),
).annotate(
loss=Case(
When(
storage_price__gt=F('paid_price'),then=F('storage_price') - F('paid_price')),default=0,output_field=DecimalField(max_digits=20,decimal_places=3)),
).annotate(
total_quantity=(
Sum('quantity')
)
).order_by('-day')
пожалуйста, есть ли возможность узнать всю информацию, прибыль и убыток? Он показывает среднее количество продаж в течение дня, затем вычисляет все вместе, но я хочу показать прибыль по счетам, если у вас есть прибыль в счетах и показать убыток по счетам, которые мы имели отдельно. заранее спасибо