From 047e35d22eb72b3c5045e0f702a2cfb4d75a7683 Mon Sep 17 00:00:00 2001 From: venkataakhil Date: Tue, 22 Aug 2023 14:01:00 +0530 Subject: [PATCH] Publish doc child table add --- .../doctype/feature_finder/feature_finder.js | 104 +++++- .../feature_finder/feature_finder.json | 2 +- .../doctype/feature_finder/feature_finder.py | 41 ++- .../feature_finder_category_master.js | 2 +- .../feature_finder_publish_data.json | 28 +- .../feature_finder_publish_docs/__init__.py | 0 .../feature_finder_publish_docs.json | 119 ++++++ .../feature_finder_publish_docs.py | 8 + .../feature_finder_specification_master.js | 2 +- .../module_publish_mapping.json | 13 +- .../mst_information_assets.json | 11 +- .../repair_check_publish_docs/__init__.py | 0 .../repair_check_publish_docs.json | 90 +++++ .../repair_check_publish_docs.py | 8 + .../repair_service_master.js | 4 +- .../special_tool_information.js | 31 +- .../training_information.json | 6 +- .../training_information_master.js | 2 +- smart_service/public/js/common_fun.js | 8 +- .../transactions/doctype/publish/publish.js | 346 ++++++++++++++++-- .../transactions/doctype/publish/publish.json | 30 +- .../transactions/doctype/publish/publish.py | 295 +++++++++------ 22 files changed, 943 insertions(+), 207 deletions(-) create mode 100644 smart_service/phase_2/doctype/feature_finder_publish_docs/__init__.py create mode 100644 smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.json create mode 100644 smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.py create mode 100644 smart_service/phase_2/doctype/repair_check_publish_docs/__init__.py create mode 100644 smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.json create mode 100644 smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.py diff --git a/smart_service/phase_2/doctype/feature_finder/feature_finder.js b/smart_service/phase_2/doctype/feature_finder/feature_finder.js index 0586867..8c42f81 100644 --- a/smart_service/phase_2/doctype/feature_finder/feature_finder.js +++ b/smart_service/phase_2/doctype/feature_finder/feature_finder.js @@ -105,6 +105,40 @@ frappe.ui.form.on('Feature Finder', { validate: function (frm) { + //save swap child table + var spec_id_dis = [] + var image_id_dis = [] + var cont_id_dis = [] + $(document).ready(function () { + $('.specification_bl').find('table > tbody > tr').each(function (index, tr) { + spec_id_dis.push(this.id); + }); + if(spec_id_dis && spec_id_dis.length>0){ + console.log(spec_id_dis,"----spec_id_dis") + set_display_order_child("Feature Finder Specification", spec_id_dis) + } + + }) + $(document).ready(function () { + $('.feature_imgbl').find('table > tbody > tr').each(function (index, tr) { + image_id_dis.push(this.id); + }); + if(image_id_dis && image_id_dis.length>0){ + console.log(image_id_dis,"----image_id_dis") + set_display_order_child("Feature Finder Images", image_id_dis) + } + }) + $(document).ready(function () { + $('.feature_contbl').find('table > tbody > tr').each(function (index, tr) { + cont_id_dis.push(this.id); + }); + if(cont_id_dis && cont_id_dis.length>0){ + console.log(cont_id_dis,"----cont_id_dis") + set_display_order_child("Feature Finder Content", cont_id_dis) + } + }) + //end swap child table + if (frm.doc.language == "en") { frm.doc.translated_feature_name = "" cur_frm.refresh_fields("translated_feature_name") @@ -152,15 +186,39 @@ frappe.ui.form.on('Feature Finder', { frm.reload_doc() } }); +function set_display_order_child(doctype_name, values) { + console.log(doctype_name,values) + if (values.length>0){ + frappe.call({ + method: "smart_service.phase_2.doctype.feature_finder.feature_finder.set_display_order", + args: { + doctype_name: doctype_name, + values: values + }, + callback: function (r) { + console.log(r.message,"r.message") + if (r.message.status == "success") { + cur_frm.reload_doc() + } + } + }) + } + +} function show_images(frm) { var res = $(cur_frm.fields_dict.image_html.wrapper).empty(); if (cur_frm.doc.feature_finder_images && cur_frm.doc.feature_finder_images.length > 0) { var img_html = "" img_html += "
" - cur_frm.doc.feature_finder_images.forEach((val) => + cur_frm.doc.feature_finder_images.map(val =>{ + if(val.post_vin_cutoff_name==frm.doc.tab_ref){ img_html += "
" - - ); + } + if (val.feature_type==frm.doc.tab_ref){ + img_html += "
" + } + }); + console.log(frm.doc.feature_finder_images,"---") img_html += "
" $(res).append(img_html) } @@ -246,6 +304,18 @@ function custom_tab_html(frm) { specification.sort((a, b) => a.display_order - b.display_order); feature_finder_images.sort((a, b) => a.display_order - b.display_order); feature_finder_content.sort((a, b) => a.display_order - b.display_order); + + frappe.call({ + method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_tab_ref", + args: { + docname: frm.doc.name, + tab_ref: "SOP" + }, + callback: function (r) { + frm.refresh_field('tab_ref') + } + }) + show_images(frm) } else { @@ -261,8 +331,23 @@ function custom_tab_html(frm) { feature_finder_images.sort((a, b) => a.display_order - b.display_order); feature_finder_content.sort((a, b) => a.display_order - b.display_order); + + frappe.call({ + method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_tab_ref", + args: { + docname: frm.doc.name, + tab_ref: $(this)[0].id + }, + callback: function (r) { + frm.refresh_field('tab_ref') + } + }) + show_images(frm) + + } + all_tabs() }) @@ -279,7 +364,7 @@ function custom_tab_html(frm) { Specification Value Active Status - + Post Vin CutOff Name @@ -486,6 +571,13 @@ function custom_tab_html(frm) { //save function + // $(res).find('.specification_bl').click(function (event) { + // frm.doc.__unsaved = 0 + // }) + // $(res).find('.feature_imgbl').click(function (event) { + // frm.doc.__unsaved = 0 + // }) + $(res).find('.specification_bl').find('.spec_custom_save').click(function (event) { var spec_id_dis = [] $(document).ready(function () { @@ -806,7 +898,7 @@ function custom_tab_html(frm) { // size: 'small', // small, large, extra-large primary_action_label: 'Submit', primary_action(values) { - if (values) { + if (values && values.specification && values.value) { frappe.call({ method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_spec_data", args: { @@ -946,7 +1038,7 @@ function custom_tab_html(frm) { // size: 'small', // small, large, extra-large primary_action_label: 'Submit', primary_action(values) { - if (values) { + if (values && values.content) { frappe.call({ method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_content_data", args: { diff --git a/smart_service/phase_2/doctype/feature_finder/feature_finder.json b/smart_service/phase_2/doctype/feature_finder/feature_finder.json index b4a10cc..043f513 100644 --- a/smart_service/phase_2/doctype/feature_finder/feature_finder.json +++ b/smart_service/phase_2/doctype/feature_finder/feature_finder.json @@ -196,7 +196,7 @@ ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-08-18 16:26:34.470582", + "modified": "2023-08-22 11:07:57.233280", "modified_by": "Administrator", "module": "Phase-2", "name": "Feature Finder", diff --git a/smart_service/phase_2/doctype/feature_finder/feature_finder.py b/smart_service/phase_2/doctype/feature_finder/feature_finder.py index e69f9cf..e3ee423 100644 --- a/smart_service/phase_2/doctype/feature_finder/feature_finder.py +++ b/smart_service/phase_2/doctype/feature_finder/feature_finder.py @@ -25,6 +25,7 @@ class FeatureFinder(Document): def validate(self): try: if self.is_new(): + self.tab_ref = "SOP" if self.variant and self.language and self.feature_name: # check_exe = frappe.db.get_list("Feature Finder", # filters={"variant": self.variant, "language": "en", @@ -32,8 +33,8 @@ class FeatureFinder(Document): # "name": ["!=", self.name]}, # fields={"name", "language", "display_order", "active_status"}) check_exe = frappe.db.sql(f''' select * from `tabFeature Finder` where variant='{self.variant}' and features_names='{self.features_names}' - and language='en' and name != '{self.name}' ; - ''', as_dict=1) + and language='en' and name != '{self.name}' ; + ''', as_dict=1) if check_exe: if self.language != "en": for d in check_exe: @@ -242,17 +243,21 @@ def delete_content_data(values): @frappe.whitelist() def set_display_order(doctype_name, values): try: - val = json.loads(values) - if len(val) > 0: - count_val = 0 - for k in val: - count_val += 1 - res = frappe.get_doc(doctype_name, k) - # frappe.msgprint(str(k)+"-"+str(count_val)) - res.display_order = count_val - res.save() - frappe.db.commit() - return {"status": "success"} + if len(values)>0: + val = json.loads(values) + if len(val) > 0: + count_val = 0 + for k in val: + count_val += 1 + frappe.msprint(str(k)+"--"+str(doctype_name)) + res = frappe.get_doc(doctype_name, k) + # frappe.msgprint(str(k)+"-"+str(count_val)) + res.display_order = count_val + res.save() + frappe.db.commit() + return {"status": "success"} + else: + return{"status":"fail"} except Exception as e: frappe.log_error("set_display_order", str(e)) @@ -261,4 +266,12 @@ def set_display_order(doctype_name, values): @frappe.whitelist() def get_specification_list(): res = frappe.db.sql("""select name from `tabFeature Finder Specification Master`""",as_dict=1) - return res \ No newline at end of file + return res + + + +@frappe.whitelist() +def insert_tab_ref(docname,tab_ref): + if docname and tab_ref: + frappe.db.sql(f"""UPDATE `tabFeature Finder` set tab_ref='{tab_ref}' WHERE name ='{docname}'""") + frappe.db.commit() \ No newline at end of file diff --git a/smart_service/phase_2/doctype/feature_finder_category_master/feature_finder_category_master.js b/smart_service/phase_2/doctype/feature_finder_category_master/feature_finder_category_master.js index d3eafe2..d71dec9 100644 --- a/smart_service/phase_2/doctype/feature_finder_category_master/feature_finder_category_master.js +++ b/smart_service/phase_2/doctype/feature_finder_category_master/feature_finder_category_master.js @@ -12,7 +12,7 @@ function check_field_character(field_name) { var alphanum = /^[a-zA-Z]+/; if (field_name.length > 1) { if (field_name.length > 50) { - frappe.throw("Feature Finder Category Master: Only 50 characters are allowed") + frappe.throw("Feature Finder Category Master: Only 100 characters are allowed") frappe.validated = false; } else { if (alphanum.test(field_name) === true) { diff --git a/smart_service/phase_2/doctype/feature_finder_publish_data/feature_finder_publish_data.json b/smart_service/phase_2/doctype/feature_finder_publish_data/feature_finder_publish_data.json index e6a7285..0efd162 100644 --- a/smart_service/phase_2/doctype/feature_finder_publish_data/feature_finder_publish_data.json +++ b/smart_service/phase_2/doctype/feature_finder_publish_data/feature_finder_publish_data.json @@ -18,7 +18,8 @@ "feature_category", "vehicle_id", "variant_id", - "parent1" + "parent1", + "data_9xkxt" ], "fields": [ { @@ -35,6 +36,7 @@ "in_standard_filter": 1, "label": "Variant", "options": "Variant Mapping", + "read_only": 1, "set_only_once": 1 }, { @@ -44,12 +46,14 @@ "in_standard_filter": 1, "label": "Language", "options": "Custom Languages", + "read_only": 1, "set_only_once": 1 }, { "fieldname": "display_order", "fieldtype": "Int", "label": "Display Order", + "read_only": 1, "read_only_depends_on": "eval:doc.language!=\"en\"" }, { @@ -57,7 +61,8 @@ "fieldtype": "Select", "in_list_view": 1, "label": "Active Status", - "options": "Active\nIn Active" + "options": "Active\nIn Active", + "read_only": 1 }, { "fieldname": "column_break_mmuuc", @@ -87,6 +92,7 @@ "fieldname": "features_names", "fieldtype": "Data", "label": "Feature Name", + "read_only": 1, "set_only_once": 1 }, { @@ -94,34 +100,42 @@ "fetch_from": "feature_name.feature_category", "fieldname": "feature_category", "fieldtype": "Data", - "label": "Feature Category" + "label": "Feature Category", + "read_only": 1 }, { "fetch_from": "variant.vehicle_id", "fieldname": "vehicle_id", "fieldtype": "Int", "hidden": 1, - "label": "Vehicle Id" + "label": "Vehicle Id", + "read_only": 1 }, { "fetch_from": "variant.name", "fieldname": "variant_id", "fieldtype": "Data", "hidden": 1, - "label": "Variant Id" + "label": "Variant Id", + "read_only": 1 }, { "fieldname": "parent1", "fieldtype": "Link", "in_list_view": 1, "label": "Parent", - "options": "Feature Finder" + "options": "Feature Finder", + "read_only": 1 + }, + { + "fieldname": "data_9xkxt", + "fieldtype": "Data" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-08-16 11:16:08.697524", + "modified": "2023-08-22 10:45:25.154430", "modified_by": "Administrator", "module": "Phase-2", "name": "Feature Finder Publish Data", diff --git a/smart_service/phase_2/doctype/feature_finder_publish_docs/__init__.py b/smart_service/phase_2/doctype/feature_finder_publish_docs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.json b/smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.json new file mode 100644 index 0000000..5e180f7 --- /dev/null +++ b/smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.json @@ -0,0 +1,119 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2023-08-21 15:04:22.054266", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "vehicle", + "variant", + "language", + "display_order", + "active_status", + "feature_name", + "features_names", + "feature_category", + "vehicle_id", + "variant_id", + "parent1" + ], + "fields": [ + { + "fieldname": "variant", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Variant", + "options": "Variant Mapping", + "set_only_once": 1 + }, + { + "fieldname": "language", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Language", + "options": "Custom Languages", + "set_only_once": 1 + }, + { + "fieldname": "display_order", + "fieldtype": "Int", + "label": "Display Order", + "read_only_depends_on": "eval:doc.language!=\"en\"" + }, + { + "fieldname": "active_status", + "fieldtype": "Select", + "in_list_view": 1, + "label": "Active Status", + "options": "Active\nIn Active" + }, + { + "fetch_from": "variant.vehicle", + "fieldname": "vehicle", + "fieldtype": "Data", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Vehicle", + "read_only": 1 + }, + { + "depends_on": "eval:doc.variant!=\"\"", + "fieldname": "feature_name", + "fieldtype": "Link", + "hidden": 1, + "label": "Feature Name1", + "options": "Feature Finder Master", + "read_only": 1, + "set_only_once": 1 + }, + { + "depends_on": "eval:doc.variant", + "fieldname": "features_names", + "fieldtype": "Data", + "label": "Feature Name", + "set_only_once": 1 + }, + { + "depends_on": "eval:doc.feature_name", + "fetch_from": "feature_name.feature_category", + "fieldname": "feature_category", + "fieldtype": "Data", + "label": "Feature Category" + }, + { + "fetch_from": "variant.vehicle_id", + "fieldname": "vehicle_id", + "fieldtype": "Int", + "hidden": 1, + "label": "Vehicle Id" + }, + { + "fetch_from": "variant.name", + "fieldname": "variant_id", + "fieldtype": "Data", + "hidden": 1, + "label": "Variant Id" + }, + { + "fieldname": "parent1", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Parent", + "options": "Feature Finder" + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2023-08-22 11:39:51.208775", + "modified_by": "Administrator", + "module": "Phase-2", + "name": "Feature Finder Publish Docs", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", + "sort_order": "DESC" +} \ No newline at end of file diff --git a/smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.py b/smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.py new file mode 100644 index 0000000..9f865d5 --- /dev/null +++ b/smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.py @@ -0,0 +1,8 @@ +# Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + +class FeatureFinderPublishDocs(Document): + pass diff --git a/smart_service/phase_2/doctype/feature_finder_specification_master/feature_finder_specification_master.js b/smart_service/phase_2/doctype/feature_finder_specification_master/feature_finder_specification_master.js index a622d97..d0ea15e 100644 --- a/smart_service/phase_2/doctype/feature_finder_specification_master/feature_finder_specification_master.js +++ b/smart_service/phase_2/doctype/feature_finder_specification_master/feature_finder_specification_master.js @@ -14,7 +14,7 @@ function check_field_character(frm) { var alphanum = /^[a-zA-Z]+/; if (frm.doc.specification.length > 1) { if (frm.doc.specification.length > 50) { - frappe.throw("Feature Finder Specification Master: Only 50 characters are allowed") + frappe.throw("Feature Finder Specification Master: Only 100 characters are allowed") frappe.validated = false; } else { if (alphanum.test(frm.doc.specification) === true) { diff --git a/smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json b/smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json index 74c8639..d0fe2a6 100644 --- a/smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json +++ b/smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json @@ -1,7 +1,7 @@ { "actions": [], "allow_rename": 1, - "autoname": "format:{vehicle}-{variant}-{language}", + "autoname": "format:{vehicle}-{variant}-{language}-{publish_type}", "creation": "2023-08-07 12:44:24.978007", "doctype": "DocType", "editable_grid": 1, @@ -20,7 +20,8 @@ "training_information", "qwik_service", "pdi_inspection", - "torque_information_nm" + "torque_information_nm", + "publish_type" ], "fields": [ { @@ -103,11 +104,17 @@ "fieldname": "torque_information_nm", "fieldtype": "Check", "label": "Torque Information NM" + }, + { + "fieldname": "publish_type", + "fieldtype": "Select", + "label": "Publish Type", + "options": "\nInternal\nGlobal" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-08-18 18:04:39.185507", + "modified": "2023-08-22 13:37:59.088802", "modified_by": "Administrator", "module": "Phase-2", "name": "Module Publish Mapping", diff --git a/smart_service/phase_2/doctype/mst_information_assets/mst_information_assets.json b/smart_service/phase_2/doctype/mst_information_assets/mst_information_assets.json index 4e4b5fe..7b2b4be 100644 --- a/smart_service/phase_2/doctype/mst_information_assets/mst_information_assets.json +++ b/smart_service/phase_2/doctype/mst_information_assets/mst_information_assets.json @@ -13,26 +13,23 @@ ], "fields": [ { - "depends_on": "eval:doc.asset_type==\"Image\"\n", "fieldname": "image", "fieldtype": "Attach", "in_list_view": 1, - "label": "Image/Video", - "read_only_depends_on": "eval:doc.asset_type==\"\"" + "label": "Image/Video" }, { "fieldname": "content", "fieldtype": "Data", "in_list_view": 1, - "label": "Content", - "read_only_depends_on": "eval:doc.asset_type==\"Image\"\n" + "label": "Content" }, { "fieldname": "asset_type", "fieldtype": "Select", "in_list_view": 1, "label": "Asset Type", - "options": "\nImage\nVideo" + "options": "Content\nImage\nVideo" }, { "fieldname": "active_status", @@ -45,7 +42,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-08-04 16:19:50.891867", + "modified": "2023-08-22 13:06:58.987728", "modified_by": "Administrator", "module": "Phase-2", "name": "MST Information Assets", diff --git a/smart_service/phase_2/doctype/repair_check_publish_docs/__init__.py b/smart_service/phase_2/doctype/repair_check_publish_docs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.json b/smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.json new file mode 100644 index 0000000..da2914f --- /dev/null +++ b/smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.json @@ -0,0 +1,90 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2023-08-21 13:15:55.147432", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "vehicle", + "check_list_name", + "language", + "active_status", + "parent_name", + "display_order", + "my_id", + "lang_myid" + ], + "fields": [ + { + "fieldname": "vehicle", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Vehicle", + "options": "Vehicle", + "read_only": 1 + }, + { + "fieldname": "parent_name", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Parent Name", + "options": "Repair Service Mapping", + "read_only": 1 + }, + { + "fieldname": "language", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Language", + "options": "Custom Languages", + "read_only": 1 + }, + { + "fieldname": "check_list_name", + "fieldtype": "Link", + "in_list_view": 1, + "label": "Check List Name", + "options": "Repair Service Master", + "read_only": 1 + }, + { + "fieldname": "active_status", + "fieldtype": "Select", + "in_list_view": 1, + "label": "Active Status", + "options": "Active\nInactive", + "read_only": 1 + }, + { + "fieldname": "display_order", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Display Order", + "read_only": 1 + }, + { + "fieldname": "my_id", + "fieldtype": "Int", + "label": "My Id", + "read_only": 1 + }, + { + "fieldname": "lang_myid", + "fieldtype": "Int", + "label": "Lang MyId", + "read_only": 1 + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2023-08-22 11:37:24.248180", + "modified_by": "Administrator", + "module": "Phase-2", + "name": "Repair Check Publish Docs", + "owner": "Administrator", + "permissions": [], + "sort_field": "modified", + "sort_order": "DESC" +} \ No newline at end of file diff --git a/smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.py b/smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.py new file mode 100644 index 0000000..8f1bb37 --- /dev/null +++ b/smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.py @@ -0,0 +1,8 @@ +# Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + +class RepairCheckPublishDocs(Document): + pass diff --git a/smart_service/phase_2/doctype/repair_service_master/repair_service_master.js b/smart_service/phase_2/doctype/repair_service_master/repair_service_master.js index 992f104..5586e8d 100644 --- a/smart_service/phase_2/doctype/repair_service_master/repair_service_master.js +++ b/smart_service/phase_2/doctype/repair_service_master/repair_service_master.js @@ -52,8 +52,8 @@ frappe.ui.form.on('Repair Service Master', { let alphanum = /^[a-zA-Z]+/; if (frm.doc.repairservicename.length > 1) { - if (frm.doc.repairservicename.length > 140) { - frappe.throw(__("Repair/ServiceName: Only 140 characters are allowed")) + if (frm.doc.repairservicename.length > 100) { + frappe.throw(__("Repair/ServiceName: Only 100 characters are allowed")) frappe.validated=false; } else { diff --git a/smart_service/phase_2/doctype/special_tool_information/special_tool_information.js b/smart_service/phase_2/doctype/special_tool_information/special_tool_information.js index 7d3eae7..e06f74e 100644 --- a/smart_service/phase_2/doctype/special_tool_information/special_tool_information.js +++ b/smart_service/phase_2/doctype/special_tool_information/special_tool_information.js @@ -48,11 +48,20 @@ frappe.ui.form.on('Special Tool Information', { } }); } + + $.each(frm.doc.tool_usage_content, function (index, row) { + let my_row = frm.fields_dict.tool_usage_content.grid.grid_rows[index]; + + set_row_read_only(my_row, index + 1); + }); }, - after_save: function (frm) { - cur_frm.refresh_fields("display_order") - frm.reload_doc() + videos_on_form_rendered: function (frm) { + $.each(frm.doc.tool_usage_content, function (index, row) { + let my_row = frm.fields_dict.tool_usage_content.grid.grid_rows[index]; + set_row_read_only(my_row, index + 1); + }); }, + }); @@ -76,4 +85,20 @@ function set_display_order(frm){ } }); } +function set_row_read_only(row, index) { + let task_index = row.docfields.findIndex(x => x.fieldname === "image"); + let task1_index = row.docfields.findIndex(x => x.fieldname === "content"); + if (row.doc.asset_type == 'Content') { + row.docfields[task_index].read_only = 0; + } else { + row.docfields[task_index].read_only = 1; + } + if (row.doc.asset_type == 'Image' && row.doc.asset_type == 'Video' ){ + row.docfields[task1_index].read_only = 0; + }else{ + row.docfields[task1_index].read_only=1; + } + row.toggle_editable_row(false); + refresh_field("Tool Usage Content"); +} diff --git a/smart_service/phase_2/doctype/training_information/training_information.json b/smart_service/phase_2/doctype/training_information/training_information.json index 877b746..fc7af51 100644 --- a/smart_service/phase_2/doctype/training_information/training_information.json +++ b/smart_service/phase_2/doctype/training_information/training_information.json @@ -25,12 +25,14 @@ { "fieldname": "vehicle", "fieldtype": "Link", + "in_list_view": 1, "label": "Vehicle", "options": "Vehicle" }, { "fieldname": "category", "fieldtype": "Link", + "in_list_view": 1, "label": "Category", "options": "Training Information Master" }, @@ -53,6 +55,7 @@ { "fieldname": "active_status", "fieldtype": "Select", + "in_list_view": 1, "label": "Active Status", "options": "Active\nInactive" }, @@ -81,6 +84,7 @@ { "fieldname": "display_order", "fieldtype": "Int", + "in_list_view": 1, "label": "Display Order" }, { @@ -97,7 +101,7 @@ ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-08-17 12:29:42.814356", + "modified": "2023-08-22 11:44:03.286240", "modified_by": "Administrator", "module": "Phase-2", "name": "Training Information", diff --git a/smart_service/phase_2/doctype/training_information_master/training_information_master.js b/smart_service/phase_2/doctype/training_information_master/training_information_master.js index 3f16299..36ac496 100644 --- a/smart_service/phase_2/doctype/training_information_master/training_information_master.js +++ b/smart_service/phase_2/doctype/training_information_master/training_information_master.js @@ -15,7 +15,7 @@ function check_field_character(field_name) { var alphanum = /^[a-zA-Z]+/; if (field_name.length > 1) { if (field_name.length > 50) { - frappe.throw("Training Information Master: Only 50 characters are allowed") + frappe.throw("Training Information Master: Only 100 characters are allowed") frappe.validated = false; } else { if (alphanum.test(field_name) === true) { diff --git a/smart_service/public/js/common_fun.js b/smart_service/public/js/common_fun.js index 6eaca8a..3a03339 100644 --- a/smart_service/public/js/common_fun.js +++ b/smart_service/public/js/common_fun.js @@ -17,7 +17,7 @@ function dragovertFunction(evt){ var html = ''+count+'' $(h).find('#spec_count').html(html) $( document ).ready(function() { - $('.specification_bl').find('.spec_custom_save').css("display","inline-block") + // $('.specification_bl').find('.spec_custom_save').css("display","inline-block") }) count +=1 @@ -48,7 +48,7 @@ function dragovertFunction_1(evt){ var html = ''+count+'' $(h).find('#image_count').html(html) $( document ).ready(function() { - $('.feature_imgbl').find('.image_custom_save').css("display","inline-block") + // $('.feature_imgbl').find('.image_custom_save').css("display","inline-block") }) count +=1 @@ -80,9 +80,9 @@ function dragovertFunction_2(evt){ var html = ''+count+'' $(h).find('#cont_count').html(html) $( document ).ready(function() { - $('.feature_contbl').find('.content_custom_save').css("display","inline-block") + // $('.feature_contbl').find('.content_custom_save').css("display","inline-block") }) - + count +=1 }) //end diff --git a/smart_service/transactions/doctype/publish/publish.js b/smart_service/transactions/doctype/publish/publish.js index d73ba68..169020f 100644 --- a/smart_service/transactions/doctype/publish/publish.js +++ b/smart_service/transactions/doctype/publish/publish.js @@ -19,6 +19,69 @@ let lang_set_first_time = true; frappe.ui.form.on('Publish', { onload: function (frm) { + + if(frm.doc.repiar_checksheet_publish_docs.length>0){ + frm.set_df_property('repiar_checksheet_publish_docs','hidden',0) + frm.refresh_field('repiar_checksheet_publish_docs') + cur_frm.set_df_property('repiar_checksheet_publish_docs','read_only',1) + + } + if(frm.doc.feature_finder_publish_docs.length>0){ + frm.set_df_property('feature_finder_publish_docs','hidden',0) + cur_frm.set_df_property('feature_finder_publish_docs','read_only',1) + frm.refresh_field('feature_finder_publish_docs') + + } + if(frm.doc.docstatus==1 && frm.doc.publish_module=='Feature Finder' ){ + debugger + cur_frm.set_df_property('kilometer_mapping_details','hidden',1) + cur_frm.set_df_property('feature_finder_publish_docs','read_only',1) + cur_frm.refresh_field('feature_finder_publish_docs') + cur_frm.refresh_field('kilometer_mapping_details') + cur_frm.remove_custom_button('Add To Publish'); + if(frm.doc.feature_finder_publish.length>0){ + frm.set_df_property('feature_finder_publish','hidden',1) + frm.refresh_field('feature_finder_publish') + cur_frm.set_df_property('feature_finder_publish','read_only',1) + + } + } + if(frm.doc.docstatus==1 && frm.doc.publish_module=='Repair service' ){ + + cur_frm.set_df_property('repiar_checksheet_publish_docs','read_only',1) + cur_frm.refresh_field('repiar_checksheet_publish_docs') + cur_frm.set_df_property('feature_finder_publish_docs','hidden',1) + cur_frm.remove_custom_button('Add To Publish'); + if(frm.doc.repiar_checksheet_publish_docs.length>0){ + frm.set_df_property('repiar_checksheet_publish_docs','hidden',0) + frm.refresh_field('repiar_checksheet_publish_docs') + cur_frm.set_df_property('repiar_checksheet_publish_docs','read_only',1) + + } + // cur_frm.set_df_property('repiar_checksheet_publish_docs','hidden',0) + // cur_frm.refresh_field('repiar_checksheet_publish_docs') + } + if(frm.doc.publish_module=='Feature Finder' || frm.doc.publish_type=='Internal' || frm.doc.publish_type=='Global' || frm.doc.docstatus!=1){ + debugger + cur_frm.set_df_property('kilometer_mapping_details','hidden',1) + + cur_frm.refresh_field('feature_finder_publish_docs') + cur_frm.refresh_field('kilometer_mapping_details') + cur_frm.remove_custom_button('Add To Publish'); + + cur_frm.set_df_property('feature_finder_publish_docs','hidden',0) + cur_frm.refresh_field('feature_finder_publish_docs') + } + if(frm.doc.publish_module=='Repair service' || frm.doc.publish_type=='Internal' || frm.doc.publish_type=='Global' || frm.doc.docstatus!=1){ + cur_frm.refresh_field('repiar_checksheet_publish_docs') + cur_frm.refresh_field('kilometer_mapping_details') + cur_frm.remove_custom_button('Add To Publish'); + + cur_frm.set_df_property('repiar_checksheet_publish_docs','hidden',0) + cur_frm.refresh_field('repiar_checksheet_publish_docs') + } + + // $('[data-route="Form/Publish/' + frm.doc.name + '"]').find('.primary-action').html("Internal Publish") if (frm.doc.docstatus == 0 && !frm.is_new() && frm.doc.publish_type != "Global" && frm.doc.publish_module != 'Automotive System') { $('[data-route="Form/Publish/' + frm.doc.name + '"]').find('.primary-action').html("Internal Publish") @@ -27,12 +90,6 @@ frappe.ui.form.on('Publish', { $('[data-route="Form/Publish/' + frm.doc.name + '"]').find('.primary-action').html("Global Publish") } - // if (frm.doc.status = "Published" && frm.doc.publish_module != 'Automotive System') { - // frm.set_df_property('repair_checksheet_publish', 'hidden', 0) - // frm.refresh_field('repair_checksheet_publish') - - - // } $(document).on('mouseover', function (events) { $("a:contains(Copy to Clipboard)").css({ 'pointer-events': 'none' }), $("a:contains(Duplicate)").css({ 'pointer-events': 'none' }); @@ -53,6 +110,7 @@ frappe.ui.form.on('Publish', { }, refresh: function (frm) { + if (frm.doc.docstatus == 0 && !frm.is_new() && frm.doc.publish_type != "Global" && frm.doc.publish_module!="Automotive System") { $('[data-route="Form/Publish/' + frm.doc.name + '"]').find('.primary-action').html("Internal Publish") @@ -72,17 +130,26 @@ frappe.ui.form.on('Publish', { if (r.message==frm.doc.version) { if (r.message == frm.doc.version) { + frm.add_custom_button(__('Global Publish'), function () { - frappe.call({ - method: "smart_service.transactions.doctype.publish.publish.generate_global_publish", - args: { - "name": frm.doc.name, - }, - callback: function (r) { - - window.location.href = r.message.url + "/app/publish" + "/" + r.message.message - } - }); + frappe.confirm('Are you sure you want to Publish?', + () => { + frappe.call({ + method: "smart_service.transactions.doctype.publish.publish.generate_global_publish", + args: { + "name": frm.doc.name, + "module_name":frm.doc.publish_module + }, + callback: function (r) { + + debugger + window.location.href = r.message.url + "/app/publish" + "/" + r.message.message + + } + }); + + }) + }).addClass("btn-warning").css({ 'background-color': '#f5b0cd', 'color': 'black' }); } } @@ -333,6 +400,7 @@ frappe.ui.form.on('Publish', { frm.fields_dict.variant_mapping_assets.grid.grid_buttons.find('.btn-custom').removeClass('btn-default').addClass('btn-primary'); } + if (frm.doc.docstatus == 1) { $(".grid-buttons").hide(); @@ -355,23 +423,18 @@ frappe.ui.form.on('Publish', { callback: function (r) { if (r.message) { + frm.set_value('version', r.message); cur_frm.refresh_field('version') - - // if(frm.doc.publish_type == 'Internal'){ - // - // frm.page.clear_primary_action("Global Publish"); - - // } - frm.set_value('actual_published_date', frappe.datetime.nowdate()); + window.location.reload(); } } }) } - + }, @@ -412,6 +475,51 @@ frappe.ui.form.on('Publish', { add_feature_finder(frm) } + // if (frm.doc.docstatus === 0 && frm.doc.publish_status == 'To Publish' && frm.doc.publish_module=='Feature Finder') { + + // frm.get_field('feature_finder_publish').grid.add_custom_button(__('Add to Publish'), function () { + // let added = 0; + // frm.doc.feature_finder_publish.forEach(row => { + // if (row.active_status == "Active" || row.active_status == "Inactive") { + // let dulicate = false; + // if (frm.doc.feature_finder_publish_docs) { + // frm.doc.feature_finder_publish_docs.forEach(publishrow => { + // if (row.parent1 == publishrow.parent1) { + + // dulicate = true; + // } + // }); + // } + // if (dulicate === false) { + // let child = cur_frm.add_child("feature_finder_publish_docs"); + // child.vehicle = frm.doc.vehicle; + // child.parent1 = row.parent1; + // child.language = row.language; + // child.variant = row.variant; + // child.active_status = row.active_status; + // added += 1; + // frm.set_df_property('feature_finder_publish_docs','hidden',0) + // cur_frm.refresh_field("feature_finder_publish",'read_only',1); + // refresh_field("feature_finder_publish_docs"); + // cur_frm.set_df_property("feature_finder_publish",'read_only',1); + // document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[4] .setAttribute("style","display:none;"); + // document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[5] .setAttribute("style","display:none;"); + // } + // else{ + // frappe.msgprint(__(row.parent1 + 'Alraeady Added')) + // } + // cur_frm.refresh_field("feature_finder_publish_docs",'read_only',1); + // } + // }); + // if (added) { frappe.msgprint(__(added + " Doc(s) Added")); + // cur_frm.set_df_property('feature_finder_publish','read_only',1) + // cur_frm.set_df_property("feature_finder_publish_docs",'read_only',1); + // cur_frm.refresh_field("feature_finder_publish"); } + // else if(added==0) { frappe.msgprint(__("No Doc Added")); } + // }); + + // frm.fields_dict.repair_checksheet_publish.grid.grid_buttons.find('.btn-custom').removeClass('btn-default').addClass('btn-primary'); + // } if (frm.doc.publish_module=='Automotive System') { let km_name = frm.doc.variant_mapping + "-" + frm.doc.language + "-KM"; frappe.db.get_value('Kilometer Mapping', { name: km_name }, 'workflow_state', (r) => { @@ -553,6 +661,30 @@ frappe.ui.form.on('Publish', { refresh_field("publish_documents"); frappe.msgprint(__(frm.doc.variant_mapping + " Added")); } + // if(frm.doc.feature_finder_publish_docs && frm.doc.publish_module=='Feature Finder'){ + // frm.doc.publish_documents.forEach(publishrow => { + // if (frm.doc.variant_mapping == publishrow.variant_mapping) { + // dulicate = true; + // } + // }); + // frappe.msgprint("Variant Mapping already added"); + + // } + // if (dulicate === false && frm.doc.publish_module == 'Feature Finder') { + // let child = cur_frm.add_child("feature_finder_publish_docs"); + // child.variant_mapping = frm.doc.variant_mapping; + // child.vehicle = frm.doc.vehicle; + // child.parent1 = row.parent1; + // child.language = row.language; + // child.variant = row.variant; + // child.active_status = row.active_status; + // refresh_field("feature_finder_publish_docs"); + // frappe.msgprint(__(frm.doc.variant_mapping + " Added")); + // } + // else{ + // frappe.msgprint(__(row.parent1 + 'Alraeady Added')) + + // } }, km_report: function (frm, cdt, cdn) { if (frm.doc.publish_module=='Automotive System') { @@ -561,12 +693,15 @@ frappe.ui.form.on('Publish', { }, after_save: function (frm) { + frm.set_df_property('repair_checksheet_publish', 'hidden', 0) frm.refresh_field('repair_checksheet_publish') }, vehicle: function (frm) { + frm.set_df_property('vehicle','set_only_once','1') + frm.refresh_fields('vehicle') if (frm.doc.publish_module=='Automotive System') { frappe.call({ @@ -594,9 +729,9 @@ frappe.ui.form.on('Publish', { } if (frm.doc.vehicle === undefined || frm.doc.vehicle === null && frm.doc.publish_module == 'Automotive System') { return; } $("[data-fieldname=variant_mapping]").focus(); - if (frm.doc.vehicle) { - frm.set_df_property('vehicle', 'read_only', 1); - } + // if (frm.doc.vehicle) { + // frm.set_df_property('vehicle', 'read_only', 1); + // } //other modules-Repair Checksheet if (frm.doc.publish_module == 'Repair service') { if (frm.doc.repair_checksheet_publish && frm.doc.repair_checksheet_publish.length > 0) { @@ -612,19 +747,26 @@ frappe.ui.form.on('Publish', { }, language: function (frm) { - if (frm.doc.publish_module == 'Repair service') { - - if (frm.doc.repair_checksheet_publish && frm.doc.repair_checksheet_publish.length > 0) { - - cur_frm.clear_table("repair_checksheet_publish"); - cur_frm.refresh_fields('repair_checksheet_publish'); + frm.doc.vehicle='' + frm.refresh_field('vehicle') + frm.set_value('repair_checksheet_publish','') + frm.set_value('feature_finder_publish','') + frm.set_value('repiar_checksheet_publish_docs','') + frm.set_value('feature_finder_publish_docs','') - } - + if (frm.doc.publish_module == 'Repair service' && frm.doc.vehicle) { add_to_publish(frm) + if (frm.doc.repair_checksheet_publish && frm.doc.repair_checksheet_publish.length > 0) { + + cur_frm.clear_table("repair_checksheet_publish"); + cur_frm.refresh_fields('repair_checksheet_publish'); + + } + + } - if (frm.doc.publish_module == 'Feature Finder') { + if (frm.doc.publish_module == 'Feature Finder' && frm.doc.vehicle && frm.doc.variant_mapping) { if (frm.doc.feature_finder_publish && frm.doc.feature_finder_publish.length > 0) { @@ -633,7 +775,7 @@ frappe.ui.form.on('Publish', { } - add_feature_finder(frm) + } if (!lang_set_first_time && frm.doc.publish_module=='Automotive System') { @@ -700,7 +842,30 @@ frappe.ui.form.on('Publish', { } + }, + publish_module:function(frm){ + frm.doc.vehicle='' + frm.doc.variant_mapping='' + frm.doc.repair_checksheet_publish='' + frm.doc.feature_finder_publish='' + frm.set_value('feature_finder_publish_docs','') + frm.set_value('repiar_checksheet_publish_docs','') + frm.refresh_fields() + if(frm.doc.publish_module=='Repair service'){ + add_to_publish(frm) + } + if(frm.doc.publish_module=='Automotive System'){ + + + } + + if(frm.doc.publish_module=='Feature Finder'){ + add_feature_finder(frm) + } + + } + }); frappe.ui.form.on('Publish_Temp Doc', { @@ -717,6 +882,7 @@ frappe.ui.form.on('Publish_Temp Doc', { function add_to_publish(frm) { cur_frm.clear_table("repair_checksheet_publish") cur_frm.refresh_fields(); + document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[4] .setAttribute("style","display:none;"); if(frm.doc.vehicle){ frappe.call({ method: "smart_service.transactions.doctype.publish.publish.get_service_repair", @@ -739,8 +905,59 @@ function add_to_publish(frm) { childTable.my_id = v['my_id']; childTable.lang_myid = v['lang_myid']; }) + //add to repair service published doc table + if (frm.doc.docstatus === 0 && frm.doc.publish_status == 'To Publish' && frm.doc.publish_module=='Repair service') { + + frm.get_field('repair_checksheet_publish').grid.add_custom_button(__('Add to Publish'), function () { + let added = 0; + frm.doc.repair_checksheet_publish.forEach(row => { + if (row.active_status == "Active" || row.active_status == "Inactive") { + let dulicate = false; + if (frm.doc.repiar_checksheet_publish_docs) { + frm.doc.repiar_checksheet_publish_docs.forEach(publishrow => { + if (row.parent_name == publishrow.parent_name) { + + dulicate = true; + } + }); + } + if (dulicate === false) { + let child = cur_frm.add_child("repiar_checksheet_publish_docs"); + child.vehicle = frm.doc.vehicle; + child.parent_name = row.parent_name; + child.language = row.language; + child.check_list_name = row.check_list_name; + child.active_status = row.active_status; + // refresh_field("repiar_checksheet_publish_docs"); + added += 1; + frm.set_df_property('repiar_checksheet_publish_docs','hidden',0) + refresh_field("repiar_checksheet_publish_docs"); + document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[4] .setAttribute("style","display:none;"); + document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[5] .setAttribute("style","display:none;"); + } + else{ + frappe.msgprint(__(row.parent_name + 'Alraeady Added')) + } + + } + }); + if (added) { frappe.msgprint(__(added + " Doc(s) Added")); + cur_frm.set_df_property('repair_checksheet_publish','read_only',1) + cur_frm.refresh_field("repair_checksheet_publish"); } + else if(added==0) { frappe.msgprint(__("No Doc Added")); } + }); + + frm.fields_dict.repair_checksheet_publish.grid.grid_buttons.find('.btn-custom').removeClass('btn-default').addClass('btn-primary'); + } cur_frm.set_df_property('repair_checksheet_publish', 'hidden', 0) cur_frm.refresh_field("repair_checksheet_publish"); + cur_frm.set_df_property('repiar_checksheet_publish_docs', 'read_only', 1) + cur_frm.refresh_field("repiar_checksheet_publish_docs",'read_only',1); + + document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[4] .setAttribute("style","display:none;"); + document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[5] .setAttribute("style","display:none;"); + + } } }) @@ -750,8 +967,11 @@ function add_to_publish(frm) { } function add_feature_finder(frm){ + cur_frm.clear_table("feature_finder_publish") cur_frm.refresh_fields(); + var fin_add_btn=document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[3].setAttribute("style","display:none;") + frappe.call({ method: "smart_service.transactions.doctype.publish.publish.get_feature_finder", args: { vehicle: frm.doc.vehicle,variant:frm.doc.variant_mapping, language_label: frm.doc.language, publish_type: frm.doc.publish_type }, @@ -769,8 +989,58 @@ function add_feature_finder(frm){ childTable.active_status = v['active_status']; }) - + //add to repair service published doc table + if (frm.doc.docstatus === 0 && frm.doc.publish_status == 'To Publish' && frm.doc.publish_module=='Feature Finder') { + + frm.get_field('feature_finder_publish').grid.add_custom_button(__('Add to Publish'), function () { + let added = 0; + frm.doc.feature_finder_publish.forEach(row => { + if (row.active_status == "Active" || row.active_status == "Inactive") { + let dulicate = false; + if (frm.doc.feature_finder_publish_docs) { + frm.doc.feature_finder_publish_docs.forEach(publishrow => { + if (row.parent1 == publishrow.parent1) { + + dulicate = true; + } + }); + } + if (dulicate === false) { + let child = cur_frm.add_child("feature_finder_publish_docs"); + child.vehicle = frm.doc.vehicle; + child.parent1 = row.parent1; + child.language = row.language; + child.variant = row.variant; + child.active_status = row.active_status; + added += 1; + frm.set_df_property('feature_finder_publish_docs','hidden',0) + cur_frm.refresh_field("feature_finder_publish",'read_only',1); + refresh_field("feature_finder_publish_docs"); + cur_frm.set_df_property("feature_finder_publish",'read_only',1); + document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[4] .setAttribute("style","display:none;"); + document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[5] .setAttribute("style","display:none;"); + } + else{ + frappe.msgprint(__(row.parent1 + 'Alraeady Added')) + } + cur_frm.refresh_field("feature_finder_publish_docs",'read_only',1); + } + }); + if (added) { frappe.msgprint(__(added + " Doc(s) Added")); + cur_frm.set_df_property('feature_finder_publish','read_only',1) + cur_frm.set_df_property("feature_finder_publish_docs",'read_only',1); + cur_frm.refresh_field("feature_finder_publish"); } + else if(added==0) { frappe.msgprint(__("No Doc Added")); } + }); + + frm.fields_dict.repair_checksheet_publish.grid.grid_buttons.find('.btn-custom').removeClass('btn-default').addClass('btn-primary'); + } + + + cur_frm.set_df_property('feature_finder_publish', 'hidden', 0) cur_frm.refresh_field("feature_finder_publish"); + let find_add_btn=document.getElementsByClassName('btn btn-xs btn-secondary grid-add-row')[3].setAttribute("style","display:none;"); + } } }) diff --git a/smart_service/transactions/doctype/publish/publish.json b/smart_service/transactions/doctype/publish/publish.json index ea4f663..bb06b7e 100644 --- a/smart_service/transactions/doctype/publish/publish.json +++ b/smart_service/transactions/doctype/publish/publish.json @@ -45,7 +45,9 @@ "publish_documents", "amended_from", "feature_finder_publish", - "repair_checksheet_publish" + "feature_finder_publish_docs", + "repair_checksheet_publish", + "repiar_checksheet_publish_docs" ], "fields": [ { @@ -96,8 +98,7 @@ "in_standard_filter": 1, "label": "Vehicle", "options": "Vehicle", - "reqd": 1, - "set_only_once": 1 + "reqd": 1 }, { "depends_on": "eval:doc.vehicle && doc.docstatus == 0 && doc.publish_module=='Automotive System' || doc.publish_module=='Feature Finder'", @@ -180,6 +181,7 @@ "read_only": 1 }, { + "depends_on": "eval:doc.vehicle", "fetch_from": "vehicle.active_status", "fieldname": "vehicle_status", "fieldtype": "Data", @@ -232,7 +234,7 @@ "fieldname": "version", "fieldtype": "Float", "in_standard_filter": 1, - "label": "Others", + "label": "Version", "read_only": 1 }, { @@ -309,6 +311,7 @@ "allow_on_submit": 1, "fieldname": "file_path", "fieldtype": "Data", + "hidden": 1, "label": "File Path" }, { @@ -319,6 +322,7 @@ "reqd": 1 }, { + "depends_on": "eval:doc.publish_module=='Feature Finder'", "fieldname": "feature_finder_publish", "fieldtype": "Table", "hidden": 1, @@ -326,17 +330,33 @@ "options": "Feature Finder Publish Data" }, { + "depends_on": "eval:doc.publish_module=='Repair service';", "fieldname": "repair_checksheet_publish", "fieldtype": "Table", "hidden": 1, "label": "Repair Checksheet Publish", "options": "Repair Service Publish Data" + }, + { + "depends_on": "eval:doc.publish_module=='Repair service'", + "fieldname": "repiar_checksheet_publish_docs", + "fieldtype": "Table", + "hidden": 1, + "label": "Repiar Checksheet Publish Docs", + "options": "Repair Check Publish Docs" + }, + { + "fieldname": "feature_finder_publish_docs", + "fieldtype": "Table", + "hidden": 1, + "label": "Feature Finder Publish Docs", + "options": "Feature Finder Publish Docs" } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-08-18 13:01:25.808160", + "modified": "2023-08-22 11:01:05.537725", "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 c211757..2464d5c 100644 --- a/smart_service/transactions/doctype/publish/publish.py +++ b/smart_service/transactions/doctype/publish/publish.py @@ -10,6 +10,7 @@ import json from datetime import date from frappe.utils import cstr from frappe.utils import logger + current_db_name = frappe.conf.get("db_name") sys.tracebacklimit = 0 site_name = cstr(frappe.local.site) @@ -26,7 +27,7 @@ module_name = 'feature_finder' class Publish(Document): def validate(self): self.published_date = str(date.today()) - self.published_by = frappe.session.user + self.published_by = frappe.session.email # Selected variant and kilometer mapping details list variant = [] for vm in self.get('publish_documents'): @@ -36,53 +37,60 @@ class Publish(Document): # variant.append(vm.variant_mapping) if vm.variant_mapping not in variant: variant.append(vm.variant_mapping) + if self.publish_module == 'Feature Finder' and self.feature_finder_publish_docs: + for vm in self.get('feature_finder_publish_docs'): + if vm.variant not in variant: + variant.append(vm.variant) self.variant_mapping_details = '' self.kilometer_mapping_details = '' for v in variant: self.variant_mapping_details = self.variant_mapping_details + \ str(v) + '\n' - km_mapping_record = frappe.db.sql("""select name from {0}.`tabKilometer Mapping` where variant_mapping = "{1}" and - language = '{2}'""".format(current_db_name, str(v), self.language), as_dict=1) + km_mapping_record = frappe.db.sql("""select name from {0}.`tabKilometer Mapping` where variant_mapping = "{1}" + and language = '{2}'""".format(current_db_name, str(v), self.language), + as_dict=1) for km_mapping in km_mapping_record: self.kilometer_mapping_details = self.kilometer_mapping_details + \ str(km_mapping.name) + '\n' def on_submit(self): - if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Repair service' and self.publish_type == 'Internal': + if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Repair service' and \ + self.publish_type == 'Internal': repair_checksheet_publish(self.vehicle, self.vehicle_id, self.language, self.publish_type, self.release_description, self.variant, - self.repair_checksheet_publish) + self.repiar_checksheet_publish_docs) update_publish_status = frappe.db.sql( """update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name)) - if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Feature Finder' and self.publish_type == 'Internal' and self.feature_finder_publish: + if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Feature Finder' \ + and self.publish_type == 'Internal' and self.feature_finder_publish_docs: feature_finder_publish(self.vehicle, self.vehicle_id, self.language, self.publish_type, - self.release_description, self.feature_finder_publish, self.variant) + self.release_description, self.feature_finder_publish_docs, self.variant) update_publish_status = frappe.db.sql( """update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name)) if self.docstatus == 1 and self.publish_module == 'Feature Finder' and self.publish_type == 'Global': feature_finder_publish(self.vehicle, self.vehicle_id, self.language, self.publish_type, - self.release_description, self.feature_finder_publish, + self.release_description, self.feature_finder_publish_docs, self.variant) update_feature_published_docs(self) update_publish_status = frappe.db.sql( """update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name)) - if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Repair service' and self.publish_type == 'Global' and self.repair_checksheet_publish: + if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Repair service' \ + and self.publish_type == 'Global' and self.repiar_checksheet_publish_docs: repair_checksheet_publish(self.vehicle, self.vehicle_id, self.language, self.publish_type, self.release_description, self.variant, - self.repair_checksheet_publish) + self.repiar_checksheet_publish_docs) + update_repair_published_docs(self) update_publish_status = frappe.db.sql( """update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name)) - frappe.log_error(str(self.variant_mapping_details)) variant = self.variant_mapping_details.split('/n') - frappe.log_error('variant', str(variant)) # for v in variant: # frappe.log_error('v', str(v)) @@ -93,10 +101,12 @@ class Publish(Document): 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=1) + 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=1) l = len(procedure_status) if procedure_status and self.publish_status == "Published": @@ -105,18 +115,24 @@ class Publish(Document): 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.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.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: + 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": + 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() @@ -124,8 +140,9 @@ class Publish(Document): # Update system and variant mapping ststus if self.publish_status == "Published" and 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) + 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) @@ -150,11 +167,13 @@ def update_procedure(vehicle, lang, publish_type, doc): # To validate updated procedure status doc = frappe.get_doc("Publish", doc) current_db_name = frappe.conf.get("db_name") - 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 pro.workflow_state != p.update_procedure_status - and p.procedure_link is not null""".format(current_db_name, doc.name), as_dict=1) + 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 pro.workflow_state != p.update_procedure_status + and p.procedure_link is not null""".format(current_db_name, doc.name), + as_dict=1) l = len(procedure_status) if procedure_status: for x in procedure_status: @@ -162,13 +181,16 @@ def update_procedure(vehicle, lang, publish_type, doc): if y.procedure_link: if x.procedure_link == y.procedure_link and x.workflow_state != y.update_procedure_status: y.update_procedure_status = x.workflow_state - frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where procedure_link = %s""", ( - x.workflow_state, x.procedure_link)) + frappe.db.sql( + """update `tabPublish_Docs` set update_procedure_status = %s where procedure_link = %s""", ( + x.workflow_state, 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: + 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": + 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() @@ -196,6 +218,7 @@ def update_procedure(vehicle, lang, publish_type, doc): if str(table_len) == str(len_publish): frappe.throw("There is no item for global publish") + # Generate Publish versions @@ -233,7 +256,7 @@ def update_publish_mapping(vehicle, variant, language, module): def update_publish_status(self): try: update_status = frappe.db.sql( - """update `tabPublish Test` set publish_status="Published" where name='{0}' """.format(self.name)) + """update `tabPublish` set publish_status="Published" where name='{0}' """.format(self.name)) except Exception as e: return e @@ -264,6 +287,7 @@ def cal_ver(vehicle, lang, publish_type, doc): frappe.db.commit() return v + # Create global publish document for publish ready procedures @@ -272,10 +296,10 @@ def global_publish(doc): doc = frappe.get_doc("Publish", doc) current_db_name = frappe.conf.get("db_name") procedure = frappe.db.sql( - """select parent,name from {0}.`tabPublish_Docs` where parent = "{1}" and update_procedure_status='Publish Ready' and - procedure_link is not null; """.format(current_db_name, doc.name)) - asset = frappe.db.sql("""select parent,name from {0}.`tabPublish_Docs` where parent = "{1}" and variant_mapping is not null - and procedure_link is null""".format(current_db_name, doc.name)) + """select parent,name from {0}.`tabPublish_Docs` where parent = "{1}" and update_procedure_status='Publish Ready' + and procedure_link is not null; """.format(current_db_name, doc.name)) + asset = frappe.db.sql("""select parent,name from {0}.`tabPublish_Docs` where parent = "{1}" and variant_mapping is + not null and procedure_link is null""".format(current_db_name, doc.name)) if not procedure and not asset: frappe.throw("There is no item for global publish") @@ -318,21 +342,34 @@ def global_publish(doc): @frappe.whitelist() -def generate_global_publish(name): +def generate_global_publish(name, module_name): try: res = frappe.get_doc("Publish", name) + if module_name == 'Feature Finder': + ret = frappe.get_doc({ + "doctype": "Publish", + "vehicle": res.vehicle, + "publish_type": "Global", + "language": res.language, + "variant_mapping_details": res.variant_mapping_details, + "publish_status": 'To Publish', + "release_description": res.release_description, + "publish_module": res.publish_module, + "feature_finder_publish_docs": res.feature_finder_publish_docs + }) + elif module_name == 'Repair service': + ret = frappe.get_doc({ + "doctype": "Publish", + "vehicle": res.vehicle, + "publish_type": "Global", + "language": res.language, + "variant_mapping_details": res.variant_mapping, + "publish_status": 'To Publish', + "release_description": res.release_description, + "publish_module": res.publish_module, + "repiar_checksheet_publish_docs": res.repiar_checksheet_publish_docs + }) - ret = frappe.get_doc({ - "doctype": "Publish", - "vehicle": res.vehicle, - "publish_type": "Global", - "language": res.language, - "publish_status": 'To Publish', - "release_description": res.release_description, - "publish_module": res.publish_module, - "feature_finder_publish": res.feature_finder_publish, - "repair_checksheet_publish": res.repair_checksheet_publish - }) ret.save() return {"status": "success", "message": ret.name, "url": frappe.utils.get_url()} except Exception as e: @@ -353,6 +390,7 @@ def old_publish(vehicle, language): if global_publish_record: return global_publish_record + # Update System and Variant Mapping and its called from publish client script @@ -367,31 +405,37 @@ def update_mapping(variant_mapping, doc): for v in vm.get('assets'): if v.category == variant.asset_category: v.published = '1' - frappe.db.sql("""update {0}.`tabVariant Mapping_Assets` set published = '1' where parent = "{1}" and category = "{2}";""".format( - current_db_name, variant.variant_mapping, variant.asset_category)) + frappe.db.sql( + """update {0}.`tabVariant Mapping_Assets` set published = '1' where parent = "{1}" and + category = "{2}";""".format(current_db_name, variant.variant_mapping, variant.asset_category)) frappe.db.commit() if variant.item_category == "System Mapping": - system_mapping = frappe.db.sql("""select name from {0}.`tabSystem Mapping` where variant_mapping = "{1}" and language = "{2}";""".format( - current_db_name, variant.variant_mapping, doc.language), as_dict=1) + system_mapping = frappe.db.sql( + """select name from {0}.`tabSystem Mapping` where variant_mapping = "{1}" and language = "{2}";""".format( + current_db_name, variant.variant_mapping, doc.language), as_dict=1) if system_mapping: for system_map in system_mapping: sm = frappe.get_doc("System Mapping", system_map.name) for sys_asset in sm.get('systems_assets'): if sys_asset.systems == variant.system: sys_asset.published = '1' - frappe.db.sql("""update {0}.`tabSystem Mapping_System Assets` set published = '1' where parent = "{1}" and systems = "{2}";""".format( - current_db_name, sm.name, variant.system)) + frappe.db.sql( + """update {0}.`tabSystem Mapping_System Assets` set published = '1' where + parent = "{1}" and systems = "{2}";""".format( + current_db_name, sm.name, variant.system)) frappe.db.commit() for sm_item in sm.get("system_sub_systems"): - if sm_item.systems == variant.system and sm_item.sub_systems == variant.sub_system and sm_item.procedure == variant.procedure_link: + if sm_item.systems == variant.system and sm_item.sub_systems == variant.sub_system and \ + sm_item.procedure == variant.procedure_link: sm_item.procedure_is_published = '1' - frappe.db.sql("""update {0}.`tabSystem Mapping_Sub System` set procedure_is_published = '1' where parent = "{1}" - and systems = "{2}" and sub_systems = "{3}";""".format( + frappe.db.sql("""update {0}.`tabSystem Mapping_Sub System` set procedure_is_published = + '1' where parent = "{1}" and systems = "{2}" and sub_systems = "{3}";""".format( current_db_name, sm.name, variant.system, variant.sub_system)) frappe.db.commit() + # Set filter for latest modified document @@ -399,31 +443,37 @@ def update_mapping(variant_mapping, doc): def get_vm_asset(doc, lang): doc = frappe.get_doc("Variant Mapping", doc) vm_assets = frappe.db.sql("""select category,language,attach_file,active_status from {0}.`tabVariant Mapping_Assets` - where parent = "{1}" and language ='{2}' and published = 0; """.format(current_db_name, doc.name, lang), as_dict=1) + where parent = "{1}" and language ='{2}' and published = 0; """.format(current_db_name, + doc.name, lang), + as_dict=1) return vm_assets @frappe.whitelist() def get_sm_asset(doc, name, lang): - system_map = frappe.db.sql("""select name from {0}.`tabSystem Mapping` where variant_mapping="{1}" and name = "{2}" and language = '{3}'; """.format( - current_db_name, doc, name, lang), as_dict=1) + system_map = frappe.db.sql( + """select name from {0}.`tabSystem Mapping` where variant_mapping="{1}" and name = "{2}" and language = '{3}'; """.format( + current_db_name, doc, name, lang), as_dict=1) if system_map: for s in system_map: doc = frappe.get_doc("System Mapping", s.name) system_asset = frappe.db.sql("""select systems,language,active_status,system_asset from {0}.`tabSystem Mapping_System Assets` - where parent = "{1}" and language = "{2}" and published = '0'; """.format(current_db_name, s.name, lang), as_dict=1) + where parent = "{1}" and language = "{2}" and published = '0'; """.format(current_db_name, s.name, + lang), as_dict=1) return system_asset @frappe.whitelist() def get_system(doc, name, lang): - system_map = frappe.db.sql("""select name from {0}.`tabSystem Mapping` where variant_mapping="{1}" and name = "{2}" and language = "{3}";""".format( - current_db_name, doc, name, lang), as_dict=1) + system_map = frappe.db.sql( + """select name from {0}.`tabSystem Mapping` where variant_mapping="{1}" and name = "{2}" and language = "{3}";""".format( + current_db_name, doc, name, lang), as_dict=1) if system_map: for s in system_map: doc = frappe.get_doc("System Mapping", s.name) - system = frappe.db.sql("""select systems,sub_systems,active_status,symptom,component,estimate_time,rts,component,mat, - procedure_status,`procedure` from {0}.`tabSystem Mapping_Sub System` where parent = "{1}" and procedure_status != "Draft" and + system = frappe.db.sql("""select systems,sub_systems,active_status,symptom,component,estimate_time,rts, + component,mat,procedure_status,`procedure` from {0}.`tabSystem Mapping_Sub System` + where parent = "{1}" and procedure_status != "Draft" and procedure_is_published = "0";""".format(current_db_name, s.name), as_dict=1) return system @@ -431,8 +481,9 @@ def get_system(doc, name, lang): @frappe.whitelist() def max_publish(doc): doc = frappe.get_doc("Publish", doc) - ver = frappe.db.sql("""select max(version) from {0}.tabPublish where vehicle = "{1}" and language = "{2}";""".format( - current_db_name, doc.vehicle, doc.language)) + ver = frappe.db.sql( + """select max(version) from {0}.tabPublish where vehicle = "{1}" and language = "{2}";""".format( + current_db_name, doc.vehicle, doc.language)) if ver: return ver @@ -441,9 +492,11 @@ def max_publish(doc): def variant(doctype, txt, searchfield, start, page_len, filters): vehicle = filters.get('vehicle') 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}) + 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() @@ -455,10 +508,12 @@ def update_procedure_value(name, file_path): frappe.db.commit() 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 + 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=1) + p.procedure_link = pro.name and p.procedure_link is not null""".format( + current_db_name, self.name), as_dict=1) # l = len(procedure_status) if procedure_status: @@ -467,18 +522,23 @@ def update_procedure_value(name, file_path): 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.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.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": + 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() @@ -495,7 +555,7 @@ def update_procedure_value(name, file_path): "User", filters={"name": frappe.session.user}, fields=["username"]) if u_id: for i in u_id: - name = i.username + name = i.full_name if not self.published_by: self.published_by = str(name) frappe.db.set_value( @@ -506,8 +566,7 @@ def update_procedure_value(name, file_path): def update_feature_published_docs(self): try: - for d in self.feature_finder_publish: - + for d in self.feature_finder_publish_docs: frappe.db.sql( """UPDATE `tabFeature Finder` set is_published=1 where name='{0}'""".format(d.parent1)) frappe.db.commit() @@ -520,7 +579,6 @@ def update_repair_published_docs(self): try: for d in self.repair_checksheet_publish: - frappe.db.sql( """UPDATE `tabRepair Service Mapping` set published=1 where name='{0}'""".format(d.parent_name)) frappe.db.commit() @@ -557,10 +615,11 @@ def get_service_repair(vehicle, @frappe.whitelist() -def get_feature_finder(vehicle, variant, language_label): +def get_feature_finder(vehicle=None, variant=None, language_label=None): try: data = frappe.db.sql( - f"""select * from `tabFeature Finder` where vehicle='{vehicle}' and variant_id='{variant}' and language='{language_label}' and is_published=0""", as_dict=1) + f"""select * from `tabFeature Finder` where vehicle='{vehicle}' and variant_id='{variant}' and language='{language_label}' + and is_published=0""", as_dict=1) return data except Exception as e: return str(e) @@ -575,7 +634,8 @@ def repair_checksheet_publish(vehicle, vehicle_id, logger.info( f'Repair Checksheet Started-{vehicle}-{language}-{publish_type}-{parent}') - folder_url = base_url+"/"+vehicle.replace(' ', '-') + "/"+language + folder_url = base_url + "/" + \ + vehicle.replace(' ', '-') + "/" + language logger.info(f'Created Folder-{vehicle}-{language}-{publish_type}') '''Publish Ready Flags''' @@ -612,7 +672,7 @@ def repair_checksheet_publish(vehicle, vehicle_id, repair_checksheet['data'][0]) repair_checksheet_tmp = get_latest_data({'data': published_data['data']}, { - 'data': repair_checksheet_tmp}) + 'data': repair_checksheet_tmp}) else: for i in parent: @@ -654,7 +714,8 @@ def feature_finder_publish(vehicle=None, vehicle_id=None, logger.info( f"start of fetching repair checksheet data - {vehicle} - {language} - {module_name} - {variant}") - folder_url = base_url+"/"+vehicle.replace(' ', '-') + "/"+language + folder_url = base_url + "/" + \ + vehicle.replace(' ', '-') + "/" + language logger.info(f'Created Folder-{vehicle}-{language}-{publish_type}') '''Final Json''' @@ -693,7 +754,6 @@ def feature_finder_publish(vehicle=None, vehicle_id=None, feature_finder_tmp = get_latest_data( {'data': published_data['data']}, {'data': feature_finder_tmp}) - else: @@ -807,52 +867,59 @@ def feature_finder_data(vehicle=None, language=None, f"start of fetching feature finder checksheet data - {vehicle} - {language} - {variant} - {module_name}") feature_finder_details = [] if language == 'en': - feature_finder_details = frappe.db.sql(f"""select ff.name,ff.vehicle,ff.vehicle_id,ff.variant,ff.variant_id,ff.language, - ff.features_names as feature_name,ff.feature_category,ff.display_order,ff.active_status, - ffm.feature_pdf as pdf from `tabFeature Finder` ff left join `tabFeature Finder Master` ffm on - ff.features_names = ffm.feature_name + feature_finder_details = frappe.db.sql(f"""select ff.name,ff.vehicle,ff.vehicle_id,ff.variant,ff.variant_id, + ff.language,ff.features_names as feature_name,ff.feature_category, + ff.display_order,ff.active_status,ffm.feature_pdf as pdf from `tabFeature Finder` ff + left join `tabFeature Finder Master` ffm on ff.features_names = ffm.feature_name where ff.vehicle = "THAR" and ffm.vehicle = "{vehicle}" - and ff.variant = "{variant}" - and ff.language = "{language}" and ffm.language = "{language}" and ff.name="{parent}"; + and ff.variant = "{variant}" and ff.language = "{language}" and + ffm.language = "{language}" and ff.name="{parent}"; """, as_dict=1) logger.info(feature_finder_details) else: - feature_finder_details = frappe.db.sql(f"""select ff.name,ff.vehicle,ff.vehicle_id,ff.variant,ff.variant_id,ff.language, - ff.translated_feature_name as feature_name,ff.feature_category, - ff.display_order,ff.active_status,ffm.feature_pdf as pdf from `tabFeature Finder` ff + feature_finder_details = frappe.db.sql(f"""select ff.name,ff.vehicle,ff.vehicle_id,ff.variant,ff.variant_id, + ff.language,ff.translated_feature_name as feature_name, + ff.feature_category,ff.display_order,ff.active_status, + ffm.feature_pdf as pdf from `tabFeature Finder` ff left join `tabFeature Finder Master` ffm on ff.features_names = ffm.feature_name - where ff.vehicle = "{vehicle}" and ffm.vehicle = "{vehicle}" and ff.variant = "{variant}" - and ff.language = "{language}" and ff.name="{parent}" ; """, as_dict=1) + where ff.vehicle = "{vehicle}" and ffm.vehicle = "{vehicle}" + and ff.variant = "{variant}" and ff.language = "{language}" + and ff.name="{parent}" ; """, as_dict=1) for f in feature_finder_details: f['disclaimer'] = frappe.db.sql(f''' SELECT name,content,active_status,idx as display_order FROM `tabFeature Finder Disclaimer` - where parent = '{str(f['vehicle'])+ str('-')+ str(f['feature_name']) +str('-')+str(f['language'])}'; + where parent = '{str(f['vehicle']) + str('-') + str(f['feature_name']) + str('-') + str(f['language'])}'; ''', as_dict=1) sop_images = frappe.db.sql(f""" select image,display_order,active_status from `tabFeature Finder Images` where - parent = '{f['name']}' and feature_type ='SOP' order by display_order desc;""", as_dict=1) + parent = '{f['name']}' and feature_type ='SOP' order by display_order desc;""", + as_dict=1) sop_content = frappe.db.sql(f"""select content,display_order, active_status from `tabFeature Finder Content` - where parent = '{f['name']}' and feature_type ='SOP' order by display_order desc;""", as_dict=1) + where parent = '{f['name']}' and feature_type ='SOP' order by display_order desc;""", + as_dict=1) sop_specification = frappe.db.sql(f"""select specification,value,display_order,active_status from `tabFeature Finder Specification` - where parent = '{f['name']}' and feature_type ='SOP' order by display_order desc;""", as_dict=1) + where parent = '{f['name']}' and feature_type ='SOP' order by display_order desc;""", + as_dict=1) f['sop'] = {'content': sop_content, 'images': sop_images, 'specificaton': sop_specification} post_vin_data = frappe.db.sql(f'''select name,idx as display_order,post_vin_cutoff_name,post_vin_cutoff_id from `tabPost Vin Cutoff ID` where parent = '{f['name']}';''', as_dict=1) for p in post_vin_data: - vin_content = frappe.db.sql(f"""select content,display_order, active_status from `tabFeature Finder Content` - where parent = '{f['name']}' and post_vin_cutoff_name ='{p['post_vin_cutoff_name']}' order by display_order desc;""", as_dict=1) + where parent = '{f['name']}' and post_vin_cutoff_name ='{p['post_vin_cutoff_name']}' order by display_order desc;""", + as_dict=1) vin_images = frappe.db.sql(f""" select image,display_order,active_status from `tabFeature Finder Images` where - parent = '{f['name']}' and post_vin_cutoff_name ='{p['post_vin_cutoff_name']}' order by display_order desc;""", as_dict=1) + parent = '{f['name']}' and post_vin_cutoff_name ='{p['post_vin_cutoff_name']}' order by display_order desc;""", + as_dict=1) vin_specification = frappe.db.sql(f"""select specification,value,display_order,active_status from `tabFeature Finder Specification` - where parent = '{f['name']}' and post_vin_cutoff_name ='{p['post_vin_cutoff_name']}' order by display_order desc;""", as_dict=1) + where parent = '{f['name']}' and post_vin_cutoff_name ='{p['post_vin_cutoff_name']}' order by display_order desc;""", + as_dict=1) p['content'] = vin_content p['images'] = vin_images p['specificaton'] = vin_specification @@ -876,8 +943,9 @@ def feature_finder_data(vehicle=None, language=None, @frappe.whitelist() def max_publish_new_module(doc): doc = frappe.get_doc("Publish", doc) - ver = frappe.db.sql("""select max(version) from {0}.tabPublish where vehicle = "{1}" and language = "{2}" and publish_module!="Automotive System";""".format( - current_db_name, doc.vehicle, doc.language)) + ver = frappe.db.sql( + """select max(version) from {0}.tabPublish where vehicle = "{1}" and language = "{2}" and publish_module!="Automotive System";""".format( + current_db_name, doc.vehicle, doc.language)) if ver: return ver @@ -886,8 +954,9 @@ def max_publish_new_module(doc): def cal_ver_new_module(vehicle, lang, publish_type, doc): current_db_name = frappe.conf.get("db_name") doc = frappe.get_doc("Publish", doc) - ver = frappe.db.sql("""select max(version) from `tabPublish` where vehicle = "{vehi}" and language = "{lang}" and publish_module!="Automotive System";""" - .format(vehi=vehicle, lang=lang)) + ver = frappe.db.sql( + """select max(version) from `tabPublish` where vehicle = "{vehi}" and language = "{lang}" and publish_module!="Automotive System";""" + .format(vehi=vehicle, lang=lang)) v = 0.0 if publish_type == 'Global': if ver[0][0] == None: