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 2ec4e67..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 @@ -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): @@ -151,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: @@ -303,34 +298,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()