mirror of
https://github.com/frappe/erpnext.git
synced 2026-02-12 17:23:38 +00:00
fix: handle gross profit and percentage for return invoices
(cherry picked from commit 51709f032f)
This commit is contained in:
@@ -204,7 +204,11 @@ def get_data_when_grouped_by_invoice(columns, gross_profit_data, filters, group_
|
|||||||
|
|
||||||
data.append(row)
|
data.append(row)
|
||||||
|
|
||||||
total_gross_profit = total_base_amount - total_buying_amount
|
total_gross_profit = flt(
|
||||||
|
total_base_amount + abs(total_buying_amount)
|
||||||
|
if total_buying_amount < 0
|
||||||
|
else total_base_amount - total_buying_amount,
|
||||||
|
)
|
||||||
data.append(
|
data.append(
|
||||||
frappe._dict(
|
frappe._dict(
|
||||||
{
|
{
|
||||||
@@ -216,7 +220,7 @@ def get_data_when_grouped_by_invoice(columns, gross_profit_data, filters, group_
|
|||||||
"buying_amount": total_buying_amount,
|
"buying_amount": total_buying_amount,
|
||||||
"gross_profit": total_gross_profit,
|
"gross_profit": total_gross_profit,
|
||||||
"gross_profit_%": flt(
|
"gross_profit_%": flt(
|
||||||
(total_gross_profit / total_base_amount) * 100.0,
|
(total_gross_profit / abs(total_base_amount)) * 100.0,
|
||||||
cint(frappe.db.get_default("currency_precision")) or 3,
|
cint(frappe.db.get_default("currency_precision")) or 3,
|
||||||
)
|
)
|
||||||
if total_base_amount
|
if total_base_amount
|
||||||
@@ -249,9 +253,13 @@ def get_data_when_not_grouped_by_invoice(gross_profit_data, filters, group_wise_
|
|||||||
|
|
||||||
data.append(row)
|
data.append(row)
|
||||||
|
|
||||||
total_gross_profit = total_base_amount - total_buying_amount
|
total_gross_profit = flt(
|
||||||
|
total_base_amount + abs(total_buying_amount)
|
||||||
|
if total_buying_amount < 0
|
||||||
|
else total_base_amount - total_buying_amount,
|
||||||
|
)
|
||||||
currency_precision = cint(frappe.db.get_default("currency_precision")) or 3
|
currency_precision = cint(frappe.db.get_default("currency_precision")) or 3
|
||||||
gross_profit_percent = (total_gross_profit / total_base_amount * 100.0) if total_base_amount else 0
|
gross_profit_percent = (total_gross_profit / abs(total_base_amount) * 100.0) if total_base_amount else 0
|
||||||
|
|
||||||
total_row = {
|
total_row = {
|
||||||
group_columns[0]: "Total",
|
group_columns[0]: "Total",
|
||||||
@@ -582,10 +590,15 @@ class GrossProfitGenerator:
|
|||||||
base_amount += row.base_amount
|
base_amount += row.base_amount
|
||||||
|
|
||||||
# calculate gross profit
|
# calculate gross profit
|
||||||
row.gross_profit = flt(row.base_amount - row.buying_amount, self.currency_precision)
|
row.gross_profit = flt(
|
||||||
|
row.base_amount + abs(row.buying_amount)
|
||||||
|
if row.buying_amount < 0
|
||||||
|
else row.base_amount - row.buying_amount,
|
||||||
|
self.currency_precision,
|
||||||
|
)
|
||||||
if row.base_amount:
|
if row.base_amount:
|
||||||
row.gross_profit_percent = flt(
|
row.gross_profit_percent = flt(
|
||||||
(row.gross_profit / row.base_amount) * 100.0,
|
(row.gross_profit / abs(row.base_amount)) * 100.0,
|
||||||
self.currency_precision,
|
self.currency_precision,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -674,9 +687,14 @@ class GrossProfitGenerator:
|
|||||||
return new_row
|
return new_row
|
||||||
|
|
||||||
def set_average_gross_profit(self, new_row):
|
def set_average_gross_profit(self, new_row):
|
||||||
new_row.gross_profit = flt(new_row.base_amount - new_row.buying_amount, self.currency_precision)
|
new_row.gross_profit = flt(
|
||||||
|
new_row.base_amount + abs(new_row.buying_amount)
|
||||||
|
if new_row.buying_amount < 0
|
||||||
|
else new_row.base_amount - new_row.buying_amount,
|
||||||
|
self.currency_precision,
|
||||||
|
)
|
||||||
new_row.gross_profit_percent = (
|
new_row.gross_profit_percent = (
|
||||||
flt(((new_row.gross_profit / new_row.base_amount) * 100.0), self.currency_precision)
|
flt(((new_row.gross_profit / abs(new_row.base_amount)) * 100.0), self.currency_precision)
|
||||||
if new_row.base_amount
|
if new_row.base_amount
|
||||||
else 0
|
else 0
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user