[Fix] Total materials consumed cost not consider in the calculation of Gross Margin in project (#15171)
This commit is contained in:
parent
5c5688b374
commit
ecc6af9d2a
@ -504,3 +504,4 @@ erpnext.patches.v10_0.show_leaves_of_all_department_members_in_calendar
|
|||||||
erpnext.patches.v10_0.update_status_in_purchase_receipt
|
erpnext.patches.v10_0.update_status_in_purchase_receipt
|
||||||
erpnext.patches.v10_0.update_address_template_for_india
|
erpnext.patches.v10_0.update_address_template_for_india
|
||||||
erpnext.patches.v10_0.set_discount_amount
|
erpnext.patches.v10_0.set_discount_amount
|
||||||
|
erpnext.patches.v10_0.recalculate_gross_margin_for_project
|
@ -0,0 +1,14 @@
|
|||||||
|
# Copyright (c) 2017, Frappe and Contributors
|
||||||
|
# License: GNU General Public License v3. See license.txt
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
import frappe
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
frappe.reload_doc('projects', 'doctype', 'project')
|
||||||
|
for d in frappe.db.sql(""" select name from `tabProject` where
|
||||||
|
ifnull(total_consumed_material_cost, 0 ) > 0 and ifnull(total_billed_amount, 0) > 0""", as_dict=1):
|
||||||
|
doc = frappe.get_doc("Project", d.name)
|
||||||
|
doc.calculate_gross_margin()
|
||||||
|
doc.db_set('gross_margin', doc.gross_margin)
|
||||||
|
doc.db_set('per_gross_margin', doc.per_gross_margin)
|
@ -236,9 +236,13 @@ class Project(Document):
|
|||||||
self.update_purchase_costing()
|
self.update_purchase_costing()
|
||||||
self.update_sales_amount()
|
self.update_sales_amount()
|
||||||
self.update_billed_amount()
|
self.update_billed_amount()
|
||||||
|
self.calculate_gross_margin()
|
||||||
|
|
||||||
self.gross_margin = flt(self.total_billed_amount) - (flt(self.total_costing_amount) + flt(self.total_expense_claim) + flt(self.total_purchase_cost))
|
def calculate_gross_margin(self):
|
||||||
|
expense_amount = (flt(self.total_costing_amount) + flt(self.total_expense_claim)
|
||||||
|
+ flt(self.total_purchase_cost) + flt(self.get('total_consumed_material_cost', 0)))
|
||||||
|
|
||||||
|
self.gross_margin = flt(self.total_billed_amount) - expense_amount
|
||||||
if self.total_billed_amount:
|
if self.total_billed_amount:
|
||||||
self.per_gross_margin = (self.gross_margin / flt(self.total_billed_amount)) *100
|
self.per_gross_margin = (self.gross_margin / flt(self.total_billed_amount)) *100
|
||||||
|
|
||||||
|
@ -82,6 +82,7 @@ class StockEntry(StockController):
|
|||||||
if self.purchase_order and self.purpose == "Subcontract":
|
if self.purchase_order and self.purpose == "Subcontract":
|
||||||
self.update_purchase_order_supplied_items()
|
self.update_purchase_order_supplied_items()
|
||||||
self.make_gl_entries_on_cancel()
|
self.make_gl_entries_on_cancel()
|
||||||
|
self.update_cost_in_project()
|
||||||
|
|
||||||
def validate_purpose(self):
|
def validate_purpose(self):
|
||||||
valid_purposes = ["Material Issue", "Material Receipt", "Material Transfer", "Material Transfer for Manufacture",
|
valid_purposes = ["Material Issue", "Material Receipt", "Material Transfer", "Material Transfer for Manufacture",
|
||||||
@ -107,8 +108,8 @@ class StockEntry(StockController):
|
|||||||
se.docstatus = 1 and se.project = %s and sed.parent = se.name
|
se.docstatus = 1 and se.project = %s and sed.parent = se.name
|
||||||
and (sed.t_warehouse is null or sed.t_warehouse = '')""", self.project, as_list=1)
|
and (sed.t_warehouse is null or sed.t_warehouse = '')""", self.project, as_list=1)
|
||||||
|
|
||||||
if amount:
|
amount = amount[0][0] if amount else 0
|
||||||
frappe.db.set_value('Project', self.project, 'total_consumed_material_cost', amount[0][0])
|
frappe.db.set_value('Project', self.project, 'total_consumed_material_cost', amount)
|
||||||
|
|
||||||
def validate_item(self):
|
def validate_item(self):
|
||||||
stock_items = self.get_stock_items()
|
stock_items = self.get_stock_items()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user