fix: Add totals row when Grouped By Invoice

This commit is contained in:
GangaManoj 2021-11-16 02:33:51 +05:30
parent 3aaf7cb408
commit 582a7ae964

View File

@ -245,19 +245,28 @@ class GrossProfitGenerator(object):
self.add_to_totals(new_row) self.add_to_totals(new_row)
else: else:
for i, row in enumerate(self.grouped[key]): for i, row in enumerate(self.grouped[key]):
if row.parent in self.returned_invoices \ if row.indent == 1.0:
and row.item_code in self.returned_invoices[row.parent]: if row.parent in self.returned_invoices \
returned_item_rows = self.returned_invoices[row.parent][row.item_code] and row.item_code in self.returned_invoices[row.parent]:
for returned_item_row in returned_item_rows: returned_item_rows = self.returned_invoices[row.parent][row.item_code]
row.qty += flt(returned_item_row.qty) for returned_item_row in returned_item_rows:
row.base_amount += flt(returned_item_row.base_amount, self.currency_precision) row.qty += flt(returned_item_row.qty)
row.buying_amount = flt(flt(row.qty) * flt(row.buying_rate), self.currency_precision) row.base_amount += flt(returned_item_row.base_amount, self.currency_precision)
if (flt(row.qty) or row.base_amount) and self.is_not_invoice_row(row): row.buying_amount = flt(flt(row.qty) * flt(row.buying_rate), self.currency_precision)
row = self.set_average_rate(row) if (flt(row.qty) or row.base_amount) and self.is_not_invoice_row(row):
self.grouped_data.append(row) row = self.set_average_rate(row)
self.add_to_totals(row) self.grouped_data.append(row)
self.add_to_totals(row)
self.set_average_gross_profit(self.totals) self.set_average_gross_profit(self.totals)
self.grouped_data.append(self.totals)
if self.filters.get("group_by") == "Invoice":
self.totals.indent = 0.0
self.totals.parent_invoice = ""
self.totals.parent = "Totals"
self.si_list.append(self.totals)
else:
self.grouped_data.append(self.totals)
def is_not_invoice_row(self, row): def is_not_invoice_row(self, row):
return (self.filters.get("group_by") == "Invoice" and row.indent != 0.0) or self.filters.get("group_by") != "Invoice" return (self.filters.get("group_by") == "Invoice" and row.indent != 0.0) or self.filters.get("group_by") != "Invoice"