[fix][report] Buying amount for product bundle in Gross Profit report
This commit is contained in:
parent
c825575940
commit
c3ced9a0b5
@ -98,11 +98,17 @@ class GrossProfitGenerator(object):
|
|||||||
|
|
||||||
row.base_amount = flt(row.base_net_amount)
|
row.base_amount = flt(row.base_net_amount)
|
||||||
|
|
||||||
product_bundles = self.product_bundles.get(row.parenttype, {}).get(row.parent, frappe._dict())
|
if row.update_stock:
|
||||||
|
product_bundles = self.product_bundles.get(row.parenttype, {}).get(row.parent, frappe._dict())
|
||||||
|
elif row.dn_detail:
|
||||||
|
product_bundles = self.product_bundles.get("Delivery Note", {})\
|
||||||
|
.get(row.delivery_note, frappe._dict())
|
||||||
|
row.item_row = row.dn_detail
|
||||||
|
|
||||||
# get buying amount
|
# get buying amount
|
||||||
if row.item_code in product_bundles:
|
if row.item_code in product_bundles:
|
||||||
row.buying_amount = self.get_buying_amount_from_product_bundle(row, product_bundles[row.item_code])
|
row.buying_amount = self.get_buying_amount_from_product_bundle(row,
|
||||||
|
product_bundles[row.item_code])
|
||||||
else:
|
else:
|
||||||
row.buying_amount = self.get_buying_amount(row, row.item_code)
|
row.buying_amount = self.get_buying_amount(row, row.item_code)
|
||||||
|
|
||||||
@ -142,7 +148,6 @@ class GrossProfitGenerator(object):
|
|||||||
new_row.qty += row.qty
|
new_row.qty += row.qty
|
||||||
new_row.buying_amount += row.buying_amount
|
new_row.buying_amount += row.buying_amount
|
||||||
new_row.base_amount += row.base_amount
|
new_row.base_amount += row.base_amount
|
||||||
# new_row.allocated_amount += (row.allocated_amount or 0) if new_row.allocated_amount else 0
|
|
||||||
|
|
||||||
new_row.gross_profit = new_row.base_amount - new_row.buying_amount
|
new_row.gross_profit = new_row.base_amount - new_row.buying_amount
|
||||||
new_row.gross_profit_percent = ((new_row.gross_profit / new_row.base_amount) * 100.0) \
|
new_row.gross_profit_percent = ((new_row.gross_profit / new_row.base_amount) * 100.0) \
|
||||||
@ -158,9 +163,9 @@ class GrossProfitGenerator(object):
|
|||||||
|
|
||||||
def get_buying_amount_from_product_bundle(self, row, product_bundle):
|
def get_buying_amount_from_product_bundle(self, row, product_bundle):
|
||||||
buying_amount = 0.0
|
buying_amount = 0.0
|
||||||
for bom_item in product_bundle:
|
for packed_item in product_bundle:
|
||||||
if bom_item.get("parent_detail_docname")==row.item_row:
|
if packed_item.get("parent_detail_docname")==row.item_row:
|
||||||
buying_amount += self.get_buying_amount(row, bom_item.item_code)
|
buying_amount += self.get_buying_amount(row, packed_item.item_code)
|
||||||
|
|
||||||
return buying_amount
|
return buying_amount
|
||||||
|
|
||||||
@ -176,14 +181,14 @@ class GrossProfitGenerator(object):
|
|||||||
else:
|
else:
|
||||||
my_sle = self.sle.get((item_code, row.warehouse))
|
my_sle = self.sle.get((item_code, row.warehouse))
|
||||||
if (row.update_stock or row.dn_detail) and my_sle:
|
if (row.update_stock or row.dn_detail) and my_sle:
|
||||||
parenttype, parent, item_row = row.parenttype, row.parent, row.item_row
|
parenttype, parent = row.parenttype, row.parent
|
||||||
if row.dn_detail:
|
if row.dn_detail:
|
||||||
parenttype, parent, item_row = "Delivery Note", row.delivery_note, row.dn_detail
|
parenttype, parent = "Delivery Note", row.delivery_note
|
||||||
|
|
||||||
for i, sle in enumerate(my_sle):
|
for i, sle in enumerate(my_sle):
|
||||||
# find the stock valution rate from stock ledger entry
|
# find the stock valution rate from stock ledger entry
|
||||||
if sle.voucher_type == parenttype and parent == sle.voucher_no and \
|
if sle.voucher_type == parenttype and parent == sle.voucher_no and \
|
||||||
sle.voucher_detail_no == item_row:
|
sle.voucher_detail_no == row.item_row:
|
||||||
previous_stock_value = len(my_sle) > i+1 and \
|
previous_stock_value = len(my_sle) > i+1 and \
|
||||||
flt(my_sle[i+1].stock_value) or 0.0
|
flt(my_sle[i+1].stock_value) or 0.0
|
||||||
return previous_stock_value - flt(sle.stock_value)
|
return previous_stock_value - flt(sle.stock_value)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user