From 0a21ef91fc2619e574451e56fc492c85426e0bae Mon Sep 17 00:00:00 2001 From: Daizy Modi Date: Fri, 17 Feb 2023 12:30:34 +0530 Subject: [PATCH 1/2] fix: fetch item price and price list --- .../service_job_card/service_job_card.py | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/servicems/service_management/doctype/service_job_card/service_job_card.py b/servicems/service_management/doctype/service_job_card/service_job_card.py index 2ec4e67..8c8a764 100644 --- a/servicems/service_management/doctype/service_job_card/service_job_card.py +++ b/servicems/service_management/doctype/service_job_card/service_job_card.py @@ -56,10 +56,9 @@ def update_tables(self): { "item": part.item, "qty": part.qty, - "rate": get_item_price( + "rate": self.get_item_price( part.item, - self.get_price_list(service_template.price_list), - self.company, + service_template.price_list, ), "is_billable": part.is_billable, }, @@ -74,9 +73,7 @@ def set_totals(self): if self.services: for service in self.services: - service.rate = get_item_price( - service.item, self.get_price_list(service.price_list), self.company - ) + service.rate = self.get_item_price(service.item, service.price_list) if service.is_billable: self.service_charges += service.rate if self.parts: @@ -96,7 +93,7 @@ def set_parts_rate(self): if item.rate: continue - item.rate = get_item_price(item.item, price_list, self.company) + item.rate = self.get_item_price(item.item, price_list) @frappe.whitelist() def create_parts_entry(self, type): @@ -303,34 +300,40 @@ def vaildate_complete(self): if not task.completed: frappe.throw(_("Row #{0}: The Tasks is not Completed").format(task.idx)) - def get_price_list(self, template_price_list=None): - price_list = frappe.get_value("Customer", self.customer, "default_price_list") - - if not price_list and template_price_list: - price_list = template_price_list + def get_price_list(self, price_list=None): + if not price_list and self.customer: + price_list = frappe.get_value( + "Customer", self.customer, "default_price_list" + ) if not price_list: price_list = frappe.get_value( "Service Settings", "Service Settings", "price_list" ) - return price_list or "" - - -def get_item_price(item_code, price_list, company): - company_currency = frappe.get_value("Company", company, "default_currency") - item_prices_data = frappe.db.get_value( - "Item Price", - filters={ - "price_list": price_list, - "item_code": item_code, - "currency": company_currency, - }, - fieldname=["item_code", "price_list_rate", "currency"], - as_dict=True, - order_by="valid_from desc", - ) - return item_prices_data.price_list_rate if item_prices_data else 0 + return price_list + + def get_item_price(self, item_code, price_list, company=None): + if not price_list: + price_list = self.get_price_list() + + if not company: + company = self.company + + company_currency = frappe.get_value("Company", company, "default_currency") + item_prices_data = frappe.db.get_value( + "Item Price", + filters={ + "price_list": price_list, + "item_code": item_code, + "currency": company_currency, + }, + fieldname=["item_code", "price_list_rate", "currency"], + as_dict=True, + order_by="valid_from desc", + ) + + return item_prices_data.price_list_rate if item_prices_data else 0 @frappe.whitelist() From c4629b6c022b7665e310da0889220b217a9a914d Mon Sep 17 00:00:00 2001 From: Daizy Modi Date: Fri, 17 Feb 2023 12:32:32 +0530 Subject: [PATCH 2/2] fix: remove `type:call` argument --- .../doctype/service_job_card/service_job_card.js | 2 +- .../doctype/service_job_card/service_job_card.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/servicems/service_management/doctype/service_job_card/service_job_card.js b/servicems/service_management/doctype/service_job_card/service_job_card.js index ec5c156..e7538a4 100644 --- a/servicems/service_management/doctype/service_job_card/service_job_card.js +++ b/servicems/service_management/doctype/service_job_card/service_job_card.js @@ -150,7 +150,7 @@ frappe.ui.form.on('Service Job Card', { }, create_parts_entry: function (frm) { - frm.call('create_parts_entry', { type: "call" }).then(r => { + frm.call('create_parts_entry').then(r => { frm.reload_doc(); }); }, diff --git a/servicems/service_management/doctype/service_job_card/service_job_card.py b/servicems/service_management/doctype/service_job_card/service_job_card.py index 8c8a764..e4b5d37 100644 --- a/servicems/service_management/doctype/service_job_card/service_job_card.py +++ b/servicems/service_management/doctype/service_job_card/service_job_card.py @@ -148,9 +148,7 @@ def create_parts_entry(self, type): ) self.update_supplied_parts_details(supplied_items, service_parts_entry.name) - - if type == "call": - self.save() + self.save() def update_supplied_parts_details(self, supplied_items, parts_entry_no): for row in self.parts: