Browse Source

Publish doc child table add

version2
venkataakhil 1 year ago
parent
commit
047e35d22e
  1. 104
      smart_service/phase_2/doctype/feature_finder/feature_finder.js
  2. 2
      smart_service/phase_2/doctype/feature_finder/feature_finder.json
  3. 41
      smart_service/phase_2/doctype/feature_finder/feature_finder.py
  4. 2
      smart_service/phase_2/doctype/feature_finder_category_master/feature_finder_category_master.js
  5. 28
      smart_service/phase_2/doctype/feature_finder_publish_data/feature_finder_publish_data.json
  6. 0
      smart_service/phase_2/doctype/feature_finder_publish_docs/__init__.py
  7. 119
      smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.json
  8. 8
      smart_service/phase_2/doctype/feature_finder_publish_docs/feature_finder_publish_docs.py
  9. 2
      smart_service/phase_2/doctype/feature_finder_specification_master/feature_finder_specification_master.js
  10. 13
      smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json
  11. 11
      smart_service/phase_2/doctype/mst_information_assets/mst_information_assets.json
  12. 0
      smart_service/phase_2/doctype/repair_check_publish_docs/__init__.py
  13. 90
      smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.json
  14. 8
      smart_service/phase_2/doctype/repair_check_publish_docs/repair_check_publish_docs.py
  15. 4
      smart_service/phase_2/doctype/repair_service_master/repair_service_master.js
  16. 31
      smart_service/phase_2/doctype/special_tool_information/special_tool_information.js
  17. 6
      smart_service/phase_2/doctype/training_information/training_information.json
  18. 2
      smart_service/phase_2/doctype/training_information_master/training_information_master.js
  19. 8
      smart_service/public/js/common_fun.js
  20. 346
      smart_service/transactions/doctype/publish/publish.js
  21. 30
      smart_service/transactions/doctype/publish/publish.json
  22. 295
      smart_service/transactions/doctype/publish/publish.py

104
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 += "<div style='height: 300px;overflow-y: auto;overflow-x: hidden;border:1px solid var(--table-border-color);margin: 5px 0px 10px 0px;'><div style='padding: 5px;' class='row'>"
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 += "<div class='col-3' style='padding-top:13px;'><img src=" + "'" + val.image + "'" + "></div>"
);
}
if (val.feature_type==frm.doc.tab_ref){
img_html += "<div class='col-3' style='padding-top:13px;'><img src=" + "'" + val.image + "'" + "></div>"
}
});
console.log(frm.doc.feature_finder_images,"---")
img_html += "</div></div>"
$(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) {
<th>Specification</th>
<th>Value</th>
<th>Active Status</th>
<th id='postvin1'>Post Vin CutOff Name</th>
<th><a><svg class="icon icon-sm" style="filter: opacity(0.5)">
<use class="" href="#icon-setting-gear"></use>
@ -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: {

2
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",

41
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
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()

2
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("<b>Feature Finder Category Master:</b> Only <b> 50 </b> characters are allowed")
frappe.throw("<b>Feature Finder Category Master:</b> Only <b> 100 </b> characters are allowed")
frappe.validated = false;
} else {
if (alphanum.test(field_name) === true) {

28
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",

0
smart_service/phase_2/doctype/feature_finder_publish_docs/__init__.py

119
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"
}

8
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

2
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("<b>Feature Finder Specification Master:</b> Only <b> 50 </b> characters are allowed")
frappe.throw("<b>Feature Finder Specification Master:</b> Only <b> 100 </b> characters are allowed")
frappe.validated = false;
} else {
if (alphanum.test(frm.doc.specification) === true) {

13
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",

11
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",

0
smart_service/phase_2/doctype/repair_check_publish_docs/__init__.py

90
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"
}

8
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

4
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(__("<b>Repair/ServiceName:</b> Only <b> 140 </b> characters are allowed"))
if (frm.doc.repairservicename.length > 100) {
frappe.throw(__("<b>Repair/ServiceName:</b> Only <b> 100 </b> characters are allowed"))
frappe.validated=false;
} else {

31
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");
}

6
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",

2
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("<b>Training Information Master:</b> Only <b> 50 </b> characters are allowed")
frappe.throw("<b>Training Information Master:</b> Only <b> 100 </b> characters are allowed")
frappe.validated = false;
} else {
if (alphanum.test(field_name) === true) {

8
smart_service/public/js/common_fun.js

@ -17,7 +17,7 @@ function dragovertFunction(evt){
var html = '<input id='+count+' type="checkbox" class="speccheck grid-row-check pull-left"><span class="spec_check">'+count+'</span>'
$(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 = '<input id='+count+' type="checkbox" class="imagecheck grid-row-check pull-left"><span class="image_check">'+count+'</span>'
$(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 = '<input id='+count+' type="checkbox" class="contentcheck grid-row-check pull-left"><span class="content_check">'+count+'</span>'
$(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

346
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;");
}
}
})

30
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",

295
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:

Loading…
Cancel
Save