fix: Remove base_rate and buying_rate for Invoice rows
diff --git a/erpnext/accounts/report/gross_profit/gross_profit.py b/erpnext/accounts/report/gross_profit/gross_profit.py
index d095828..b70f908 100644
--- a/erpnext/accounts/report/gross_profit/gross_profit.py
+++ b/erpnext/accounts/report/gross_profit/gross_profit.py
@@ -196,7 +196,7 @@
row.buying_rate = flt(row.buying_amount / flt(row.qty), self.float_precision)
row.base_rate = flt(row.base_amount / flt(row.qty), self.float_precision)
else:
- if self.filters.get("group_by") != "Invoice":
+ if self.is_not_invoice_row(row):
row.buying_rate, row.base_rate = 0.0, 0.0
# calculate gross profit
@@ -233,11 +233,14 @@
for returned_item_row in returned_item_rows:
row.qty += flt(returned_item_row.qty)
row.base_amount += flt(returned_item_row.base_amount, self.currency_precision)
- row.buying_amount = flt(flt(row.qty) * row.buying_rate, self.currency_precision)
- if flt(row.qty) or row.base_amount:
+ row.buying_amount = flt(flt(row.qty) * flt(row.buying_rate), self.currency_precision)
+ if (flt(row.qty) or row.base_amount) and self.is_not_invoice_row(row):
row = self.set_average_rate(row)
self.grouped_data.append(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"
+
def set_average_rate(self, new_row):
new_row.gross_profit = flt(new_row.base_amount - new_row.buying_amount, self.currency_precision)
new_row.gross_profit_percent = flt(((new_row.gross_profit / new_row.base_amount) * 100.0), self.currency_precision) \
@@ -428,8 +431,7 @@
'item_row': None,
'is_return': row.is_return,
'cost_center': row.cost_center,
- 'base_net_amount': frappe.db.get_value('Sales Invoice', row.parent, 'base_net_total'),
- 'base_rate': None
+ 'base_net_amount': frappe.db.get_value('Sales Invoice', row.parent, 'base_net_total')
})
self.si_list.insert(index, invoice)