From a5ff116caa8b43fc1ae41d1dab926ca2c65f3ad0 Mon Sep 17 00:00:00 2001 From: venkataakhil Date: Tue, 16 May 2023 17:57:19 +0530 Subject: [PATCH] variant mapping and system mapping published status updated --- .../transactions/doctype/publish/publish.js | 18 ++- .../transactions/doctype/publish/publish.json | 11 +- .../transactions/doctype/publish/publish.py | 113 +++++++++++++----- 3 files changed, 97 insertions(+), 45 deletions(-) diff --git a/smart_service/transactions/doctype/publish/publish.js b/smart_service/transactions/doctype/publish/publish.js index 4d24ae4..6accd17 100644 --- a/smart_service/transactions/doctype/publish/publish.js +++ b/smart_service/transactions/doctype/publish/publish.js @@ -123,16 +123,28 @@ frappe.ui.form.on('Publish', { "version": frm.doc.version }, callback: function (r) { + frm.set_value('publish_status', 'Published'); + frm.set_value('actual_published_date', frappe.datetime.nowdate()); if (r.message != "Failed to save file") { - frm.set_value('publish_status', 'Published'); - frm.set_value('actual_published_date', frappe.datetime.nowdate()); - frm.set_value('child_table_updated', '1'); + frappe.call({ + method: "smart_service.transactions.doctype.publish.publish.update_procedure_value", + args: { + "name": frm.doc.name, + }, + callback: (r) => { + // frm.save('Update'); + } + }) + + // frm.set_value('publish_status', 'Published'); + // frm.set_value('actual_published_date', frappe.datetime.nowdate()); frappe.msgprint({ title: __('Notification'), message: __('Successfully Published' + r.message), primary_action: { action(values) { frm.save('Update'); + } } diff --git a/smart_service/transactions/doctype/publish/publish.json b/smart_service/transactions/doctype/publish/publish.json index de6a38d..af874a1 100644 --- a/smart_service/transactions/doctype/publish/publish.json +++ b/smart_service/transactions/doctype/publish/publish.json @@ -10,7 +10,6 @@ "planned_publish_date", "actual_published_date", "publish_type", - "child_table_updated", "publish_status", "column_break_3", "release_description", @@ -297,20 +296,12 @@ "fieldtype": "Small Text", "label": "Kilometer Mapping List", "read_only": 1 - }, - { - "allow_on_submit": 1, - "fieldname": "child_table_updated", - "fieldtype": "Select", - "hidden": 1, - "label": "Child Table Updated", - "options": "0\n1" } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-05-16 14:43:27.233080", + "modified": "2023-05-16 16:59:45.341061", "modified_by": "Administrator", "module": "Transactions", "name": "Publish", diff --git a/smart_service/transactions/doctype/publish/publish.py b/smart_service/transactions/doctype/publish/publish.py index d19e338..912aa29 100644 --- a/smart_service/transactions/doctype/publish/publish.py +++ b/smart_service/transactions/doctype/publish/publish.py @@ -32,38 +32,35 @@ class Publish(Document): self.kilometer_mapping_details = self.kilometer_mapping_details + \ str(km_mapping.name) + '\n' - def onload(self): - current_db_name = frappe.conf.get("db_name") - if self.child_table_updated == "1": - - # To validate updated procedure status - procedure_status = frappe.db.sql("""select p.name,p.update_procedure_status,pro.name,p.variant_mapping,p.system,p.sub_system,p.asset_category,p.item_category,p.variant,p.procedure_link,p.procedure_status,pro.name,pro.workflow_state - from {0}.`tabPublish_Docs` as p,{0}.`tabProcedure` as pro - where p.parent = '{1}' and p.procedure_link = pro.name and p.procedure_link is not null""".format(current_db_name, self.name), as_dict=True) - l = len(procedure_status) - - if procedure_status and self.publish_status == "Published": - for x in procedure_status: - for y in self.get("publish_documents"): - if y.procedure_link: - if x.procedure_link == y.procedure_link and y.update_procedure_status != y.procedure_status: - y.update_procedure_status = x.workflow_state - frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s ; """, ( - x.workflow_state, self.name, x.procedure_link)) - frappe.db.commit() - if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status: - y.update_procedure_status = x.workflow_state - frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s""", ( - x.workflow_state, self.name, x.procedure_link)) - frappe.db.commit() - if y.procedure_status == "Publish Ready": - if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and not y.excluded_global: - y.excluded_global = "1" - if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and x.workflow_state == "Draft" and y.procedure_status != "Publish Ready": - y.excluded_internal = "1" - self.child_table_updated = '0' - y.save() - frappe.db.commit() + def onload1(self): + current_db_name = frappe.conf.get("db_name") + # To validate updated procedure status + procedure_status = frappe.db.sql("""select p.name,p.update_procedure_status,pro.name,p.variant_mapping,p.system,p.sub_system,p.asset_category,p.item_category,p.variant,p.procedure_link,p.procedure_status,pro.name,pro.workflow_state + from {0}.`tabPublish_Docs` as p,{0}.`tabProcedure` as pro + where p.parent = '{1}' and p.procedure_link = pro.name and p.procedure_link is not null""".format(current_db_name, self.name), as_dict=True) + l = len(procedure_status) + + if procedure_status and self.publish_status == "Published": + for x in procedure_status: + for y in self.get("publish_documents"): + if y.procedure_link: + if x.procedure_link == y.procedure_link and y.update_procedure_status != y.procedure_status: + y.update_procedure_status = x.workflow_state + frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s ; """, ( + x.workflow_state, self.name, x.procedure_link)) + frappe.db.commit() + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status: + y.update_procedure_status = x.workflow_state + frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s""", ( + x.workflow_state, self.name, x.procedure_link)) + frappe.db.commit() + if y.procedure_status == "Publish Ready": + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and not y.excluded_global: + y.excluded_global = "1" + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and x.workflow_state == "Draft" and y.procedure_status != "Publish Ready": + y.excluded_internal = "1" + y.save() + frappe.db.commit() # Update system and variant mapping ststus if self.publish_status == "Published" and self.publish_type == "Global": @@ -316,3 +313,55 @@ def variant(doctype, txt, searchfield, start, page_len, filters): return frappe.db.sql(""" select name,family_code,fuel,transmission,vehicle_segment,active_status FROM {0}.`tabVariant Mapping` where vehicle = '{1}' and (active_status like "%%%(txt)s%%" or vehicle_segment like "%%%(txt)s%%" or name like "%%%(txt)s%%" or variant like "%%%(txt)s%%" or family_code like "%%%(txt)s%%" or fuel like "%%%(txt)s%%" or transmission like "%%%(txt)s%%") order by modified desc limit %(start)s, %(page_len)s """.format(current_db_name, vehicle) % {'txt': txt, 'start': start, 'page_len': page_len}) + + +@frappe.whitelist() +def update_procedure_value(name): + self = frappe.get_doc("Publish",name) + current_db_name = frappe.conf.get("db_name") + # To validate updated procedure status + procedure_status = frappe.db.sql("""select p.name,p.update_procedure_status,pro.name,p.variant_mapping,p.system,p.sub_system,p.asset_category,p.item_category,p.variant,p.procedure_link,p.procedure_status,pro.name,pro.workflow_state + from {0}.`tabPublish_Docs` as p,{0}.`tabProcedure` as pro + where p.parent = '{1}' and p.procedure_link = pro.name and p.procedure_link is not null""".format(current_db_name, self.name), as_dict=True) + l = len(procedure_status) + + if procedure_status: + for x in procedure_status: + for y in self.get("publish_documents"): + if y.procedure_link: + if x.procedure_link == y.procedure_link and y.update_procedure_status != y.procedure_status: + y.update_procedure_status = x.workflow_state + frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s ; """, ( + x.workflow_state, self.name, x.procedure_link)) + frappe.db.commit() + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status: + y.update_procedure_status = x.workflow_state + frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s""", ( + x.workflow_state, self.name, x.procedure_link)) + frappe.db.commit() + if y.procedure_status == "Publish Ready": + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and not y.excluded_global: + y.excluded_global = "1" + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and x.workflow_state == "Draft" and y.procedure_status != "Publish Ready": + y.excluded_internal = "1" + y.save() + frappe.db.commit() + + # Update system and variant mapping ststus + if self.publish_type == "Global": + current_db_name = frappe.conf.get("db_name") + global_publish = frappe.db.sql("""select name from {0}.`tabPublish` where global_publish = '{1}'""".format( + current_db_name, self.name), as_dict=True) + for global_name in global_publish: + update_mapping(self.variant_mapping, global_name.name) + + u_id = frappe.get_all( + "User", filters={"name": frappe.session.user}, fields=["username"]) + if u_id: + for i in u_id: + name = i.username + if not self.published_by: + self.published_by = str(name) + frappe.db.set_value( + "Publish", self.name, "published_by", str(name)) + frappe.db.commit()