From c4587d29450e30e2fe164f059e31fc46bbdfa854 Mon Sep 17 00:00:00 2001 From: superlack Date: Thu, 23 Feb 2017 17:39:05 -0800 Subject: [PATCH 1/6] Update project.py --- erpnext/projects/doctype/project/project.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index b5ef4bfd76..a7446a8dc8 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -176,6 +176,13 @@ class Project(Document): from `tabPurchase Invoice Item` where project = %s and docstatus=1""", self.name) self.total_purchase_cost = total_purchase_cost and total_purchase_cost[0][0] or 0 + + def update_sales_costing(self): + total_sales_cost = frappe.db.sql("""select sum(base_net_amount) + from `tabSales Order Item` where project = %s and docstatus=1""", self.name) + + self.total_sales_cost = total_sales_cost and total_sales_cost[0][0] or 0 + def send_welcome_email(self): url = get_url("/project/?name={0}".format(self.name)) From 23e5d403744c2a7b88f6c0257d8c9889ad3b35e8 Mon Sep 17 00:00:00 2001 From: superlack Date: Thu, 23 Feb 2017 17:43:50 -0800 Subject: [PATCH 2/6] Update sales_order.py --- erpnext/selling/doctype/sales_order/sales_order.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index fdaadd87e0..99351a75fc 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -157,7 +157,7 @@ class SalesOrder(SellingController): self.update_reserved_qty() frappe.get_doc('Authorization Control').validate_approving_authority(self.doctype, self.company, self.base_grand_total, self) - + self.update_project() self.update_prevdoc_status('submit') def on_cancel(self): @@ -167,10 +167,20 @@ class SalesOrder(SellingController): self.check_nextdoc_docstatus() self.update_reserved_qty() - + self.update_project() self.update_prevdoc_status('cancel') frappe.db.set(self, 'status', 'Cancelled') + + def update_project(self): + project_list = [] + for d in self.items: + if d.project and d.project not in project_list: + project = frappe.get_doc("Project", d.project) + project.flags.dont_sync_tasks = True + project.update_sales_costing() + project.save() + project_list.append(d.project) def check_credit_limit(self): from erpnext.selling.doctype.customer.customer import check_credit_limit From 868ef7738f8ece6fee44e4f3760536ccb48a500b Mon Sep 17 00:00:00 2001 From: superlack Date: Thu, 23 Feb 2017 17:46:07 -0800 Subject: [PATCH 3/6] Update project.json --- erpnext/projects/doctype/project/project.json | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/project/project.json b/erpnext/projects/doctype/project/project.json index dbdffdf1cd..e809328df9 100644 --- a/erpnext/projects/doctype/project/project.json +++ b/erpnext/projects/doctype/project/project.json @@ -1024,6 +1024,35 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "total_sales_cost", + "fieldtype": "Currency", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Total Sales Cost (via Sales Order)", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 1, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -1232,4 +1261,4 @@ "timeline_field": "customer", "track_changes": 0, "track_seen": 1 -} \ No newline at end of file +} From f800892ec3f92ebc58579e8ec5477358990c8fc9 Mon Sep 17 00:00:00 2001 From: superlack Date: Fri, 24 Feb 2017 12:33:59 -0800 Subject: [PATCH 4/6] Update project.py --- erpnext/projects/doctype/project/project.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index a7446a8dc8..918da46acd 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -178,8 +178,8 @@ class Project(Document): self.total_purchase_cost = total_purchase_cost and total_purchase_cost[0][0] or 0 def update_sales_costing(self): - total_sales_cost = frappe.db.sql("""select sum(base_net_amount) - from `tabSales Order Item` where project = %s and docstatus=1""", self.name) + total_sales_cost = frappe.db.sql("""select sum(total) + from `tabSales Order` where project = %s and docstatus=1""", self.name) self.total_sales_cost = total_sales_cost and total_sales_cost[0][0] or 0 From c95ebdb4e4d4149d469ec9c66054139efd49115a Mon Sep 17 00:00:00 2001 From: superlack Date: Fri, 24 Feb 2017 12:35:10 -0800 Subject: [PATCH 5/6] Update sales_order.py --- erpnext/selling/doctype/sales_order/sales_order.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py index 99351a75fc..7c5fb04bf2 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.py +++ b/erpnext/selling/doctype/sales_order/sales_order.py @@ -174,13 +174,12 @@ class SalesOrder(SellingController): def update_project(self): project_list = [] - for d in self.items: - if d.project and d.project not in project_list: - project = frappe.get_doc("Project", d.project) + if self.project: + project = frappe.get_doc("Project", self.project) project.flags.dont_sync_tasks = True project.update_sales_costing() project.save() - project_list.append(d.project) + project_list.append(self.project) def check_credit_limit(self): from erpnext.selling.doctype.customer.customer import check_credit_limit From 62d7ba0afd59d707545ee0caccc1faf78ca0aa36 Mon Sep 17 00:00:00 2001 From: superlack Date: Mon, 27 Feb 2017 07:00:30 -0800 Subject: [PATCH 6/6] Update project.py --- erpnext/projects/doctype/project/project.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py index 918da46acd..289b7dd185 100644 --- a/erpnext/projects/doctype/project/project.py +++ b/erpnext/projects/doctype/project/project.py @@ -178,7 +178,7 @@ class Project(Document): self.total_purchase_cost = total_purchase_cost and total_purchase_cost[0][0] or 0 def update_sales_costing(self): - total_sales_cost = frappe.db.sql("""select sum(total) + total_sales_cost = frappe.db.sql("""select sum(grand_total) from `tabSales Order` where project = %s and docstatus=1""", self.name) self.total_sales_cost = total_sales_cost and total_sales_cost[0][0] or 0