Browse Source

Publish v2 verion and global custom button fix

version2
venkataakhil 1 year ago
parent
commit
023dbedd19
  1. 11
      smart_service/apis/master_api.py
  2. 33
      smart_service/apis/v2/master.py
  3. 33
      smart_service/phase_2/doctype/feature_finder/feature_finder.js
  4. 10
      smart_service/phase_2/doctype/feature_finder/feature_finder.json
  5. 19
      smart_service/phase_2/doctype/feature_finder/feature_finder.py
  6. 4
      smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json
  7. 9
      smart_service/transactions/doctype/publish/publish.js
  8. 60
      smart_service/transactions/doctype/publish/publish.py

11
smart_service/apis/master_api.py

@ -360,12 +360,13 @@ def variant(LSD, language):
case when active_status= 'Active' Then true else false end as active_status case when active_status= 'Active' Then true else false end as active_status
FROM `tabVariant Mapping` where modified >='{LSD}';''', as_dict=1) FROM `tabVariant Mapping` where modified >='{LSD}';''', as_dict=1)
for d in data: for d in data:
modules = frappe.db.sql(f''' select automotive_system as 'Automotive System',tsb as 'TSB',fsa as 'FSA',tekalert as 'TEKalert', modules = frappe.db.sql(f'''select automotive_system as 'Automotive System',tsb as 'TSB',fsa as 'FSA',tekalert as 'TEKalert',
feature_finder as 'Feature Finder',repairservice_check_sheet as 'Repair/Service Check Sheet', feature_finder as 'Feature Finder',repairservice_check_sheet as 'Repair/Service Check Sheet',
mahindra_special_tool_information as 'Mahindra Special Tool Information',training_information as 'Training Information', mahindra_special_tool_information as 'Mahindra Special Tool Information',training_information as
qwik_service as 'QWIK Service',pdi_inspection as 'PDI Inspection', 'Training Information',qwik_service as 'QWIK Service',pdi_inspection as 'PDI Inspection',
torque_information_nm as 'Torque Information NM' torque_information_nm as 'Torque Information NM'
FROM `tabModule Publish Mapping` where variant="{d['variant_name']}" ;''', as_dict=1) FROM `tabModule Publish Mapping` where vehicle= '{d['vehicle']}' and variant="{d['variant_name']}" ;''',
as_dict=1)
if modules: if modules:
d['modules'] = [{'title': k, 'active_status': v, 'app_menu_id': d['modules'] = [{'title': k, 'active_status': v, 'app_menu_id':
frappe.db.sql(f'''select app_menu_id from `tabModule Master` where module_name = '{k}' ;''', as_dict=1)[0]['app_menu_id']} frappe.db.sql(f'''select app_menu_id from `tabModule Master` where module_name = '{k}' ;''', as_dict=1)[0]['app_menu_id']}
@ -401,7 +402,7 @@ def app_modules(LSD):
@frappe.whitelist(methods=["POST"], allow_guest=1) @frappe.whitelist(methods=["POST"], allow_guest=1)
def role_mapping(): def role_mapping():
req = json.loads(frappe.request.data) req = json.loads(frappe.request.data)
try: try:
lsdt = req['LSD'] lsdt = req['LSD']

33
smart_service/apis/v2/master.py

@ -232,3 +232,36 @@ def get_special_tool_information(vehicle):
return True, special_tool_details return True, special_tool_details
except Exception as e: except Exception as e:
return False, e return False, e
@frappe.whitelist(allow_guest=1)
def update_publish_mapping(vehicle, variant, language, module):
frappe.set_user('Administrator')
pub_data = frappe.db.get_list('Module Publish Mapping', filters={
"vehicle": vehicle,
"variant": variant,
"language": language
}, fields=['name'])
if pub_data:
doc = frappe.get_doc('Module Publish Mapping', pub_data[0]['name'])
else:
doc = frappe.get_doc({
'doctype': 'Module Publish Mapping',
"vehicle": vehicle,
"variant": variant,
"language": language
})
if module == 'Automotive System':
doc.automotive_system = 1
doc.tsb = 1
doc.fsa = 1
doc.tekalert = 1
elif module == 'Feature Finder':
doc.feature_finder = 1
elif module == 'Repair service':
doc.repairservice_check_sheet = 1
doc.save()
return 1

33
smart_service/phase_2/doctype/feature_finder/feature_finder.js

@ -15,6 +15,7 @@ frappe.ui.form.on('Feature Finder', {
} }
set_display_order(frm) set_display_order(frm)
show_images(frm) show_images(frm)
}, },
onload: function (frm) { onload: function (frm) {
if (!frm.doc.feature_finder_images){ if (!frm.doc.feature_finder_images){
@ -192,16 +193,28 @@ function custom_tab_html(frm) {
res.append(`<style>.custom_tab{border:1px solid var(--table-border-color);}.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {background-color:lavender !important;}.nav-tabs { res.append(`<style>.custom_tab{border:1px solid var(--table-border-color);}.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active {background-color:lavender !important;}.nav-tabs {
border-bottom:none !important;}.feature_contbl{margin:10px;}.specification_bl{margin:10px;}.feature_imgbl{margin:10px;}.main{border: 1px solid var(--table-border-color);margin:15px 0px 15px 0px}.spec_custom_add{margin:10px 0px 0px 0px}</style>`) border-bottom:none !important;}.feature_contbl{margin:10px;}.specification_bl{margin:10px;}.feature_imgbl{margin:10px;}.main{border: 1px solid var(--table-border-color);margin:15px 0px 15px 0px}.spec_custom_add{margin:10px 0px 0px 0px}</style>`)
if(frm.doc.tab_ref){
$('.nav').find('.nav-link').removeClass('active')
$('.nav').find('#'+frm.doc.tab_ref).addClass('active')
}
var specification = "" var specification = ""
var feature_finder_images = "" var feature_finder_images = ""
var feature_finder_content = "" var feature_finder_content = ""
if (frm.doc.specification && frm.doc.feature_finder_images && frm.doc.feature_finder_content){ if (frm.doc.specification && frm.doc.feature_finder_images && frm.doc.feature_finder_content){
specification = frm.doc.specification.filter(o => o.feature_type == "SOP") specification = frm.doc.specification.filter(o => o.feature_type == "SOP")
feature_finder_images = frm.doc.feature_finder_images.filter(o => o.feature_type == "SOP") feature_finder_images = frm.doc.feature_finder_images.filter(o => o.feature_type == "SOP")
feature_finder_content = frm.doc.feature_finder_content.filter(o => o.feature_type == "SOP") feature_finder_content = frm.doc.feature_finder_content.filter(o => o.feature_type == "SOP")
if(frm.doc.tab_ref !='SOP'){
specification = frm.doc.specification.filter(o => o.post_vin_cutoff_name == frm.doc.tab_ref)
feature_finder_images = frm.doc.feature_finder_images.filter(o => o.post_vin_cutoff_name == frm.doc.tab_ref)
feature_finder_content = frm.doc.feature_finder_content.filter(o => o.post_vin_cutoff_name == frm.doc.tab_ref)
}
specification.sort((a, b) => a.display_order - b.display_order); specification.sort((a, b) => a.display_order - b.display_order);
feature_finder_images.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); feature_finder_content.sort((a, b) => a.display_order - b.display_order);
@ -213,11 +226,17 @@ function custom_tab_html(frm) {
var content_dialog_value = "" var content_dialog_value = ""
var nav_spec = {} var nav_spec = {}
nav_spec.feature_type = "SOP" nav_spec.feature_type = "SOP"
if(frm.doc.tab_ref !='SOP'){
nav_spec.feature_type = "Post Vin CutOff"
nav_spec.post_vin_cutoff_name = frm.doc.tab_ref
}
nav_spec.active_status = "Active" nav_spec.active_status = "Active"
all_tabs() all_tabs()
$('.main').find('.nav-link').click(function (event) { $('.main').find('.nav-link').click(function (event) {
if ($(this)[0].id == "SOP") { if ($(this)[0].id == "SOP") {
frm.doc.tab_ref = "SOP"
cur_frm.refresh_fields("tab_ref")
nav_spec.feature_type = "SOP" nav_spec.feature_type = "SOP"
nav_spec.post_vin_cutoff_name = "" nav_spec.post_vin_cutoff_name = ""
specification = frm.doc.specification.filter(o => o.feature_type == $(this)[0].id) specification = frm.doc.specification.filter(o => o.feature_type == $(this)[0].id)
@ -231,6 +250,8 @@ function custom_tab_html(frm) {
} }
else { else {
nav_spec.feature_type = "Post Vin CutOff" nav_spec.feature_type = "Post Vin CutOff"
frm.doc.tab_ref = $(this)[0].id
cur_frm.refresh_fields("tab_ref")
nav_spec.post_vin_cutoff_name = $(this)[0].id nav_spec.post_vin_cutoff_name = $(this)[0].id
specification = frm.doc.specification.filter(o => o.post_vin_cutoff_name == $(this)[0].id) specification = frm.doc.specification.filter(o => o.post_vin_cutoff_name == $(this)[0].id)
feature_finder_images = frm.doc.feature_finder_images.filter(o => o.post_vin_cutoff_name == $(this)[0].id) feature_finder_images = frm.doc.feature_finder_images.filter(o => o.post_vin_cutoff_name == $(this)[0].id)
@ -241,7 +262,7 @@ function custom_tab_html(frm) {
feature_finder_content.sort((a, b) => a.display_order - b.display_order); feature_finder_content.sort((a, b) => a.display_order - b.display_order);
} }
all_tabs() all_tabs()
}) })
@ -790,10 +811,12 @@ function custom_tab_html(frm) {
method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_spec_data", method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_spec_data",
args: { args: {
doc_name: frm.doc.name, doc_name: frm.doc.name,
values: values values: values,
tab_ref:frm.doc.tab_ref
}, },
callback: function (r) { callback: function (r) {
if (r.message.status == "success") { if (r.message.status == "success") {
cur_frm.reload_doc() cur_frm.reload_doc()
cur_frm.refresh() cur_frm.refresh()
} }
@ -858,7 +881,8 @@ function custom_tab_html(frm) {
method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_image_data", method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_image_data",
args: { args: {
doc_name: frm.doc.name, doc_name: frm.doc.name,
values: values values: values,
tab_ref:frm.doc.tab_ref
}, },
callback: function (r) { callback: function (r) {
if (r.message.status == "success") { if (r.message.status == "success") {
@ -927,7 +951,8 @@ function custom_tab_html(frm) {
method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_content_data", method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_content_data",
args: { args: {
doc_name: frm.doc.name, doc_name: frm.doc.name,
values: values values: values,
tab_ref:frm.doc.tab_ref
}, },
callback: function (r) { callback: function (r) {
if (r.message.status == "success") { if (r.message.status == "success") {

10
smart_service/phase_2/doctype/feature_finder/feature_finder.json

@ -28,7 +28,8 @@
"feature_finder_images", "feature_finder_images",
"feature_finder_content", "feature_finder_content",
"vehicle_id", "vehicle_id",
"variant_id" "variant_id",
"tab_ref"
], ],
"fields": [ "fields": [
{ {
@ -186,11 +187,16 @@
{ {
"fieldname": "section_break_o8kze", "fieldname": "section_break_o8kze",
"fieldtype": "Section Break" "fieldtype": "Section Break"
},
{
"fieldname": "tab_ref",
"fieldtype": "Data",
"label": "Tab Ref"
} }
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2023-08-16 18:15:43.233327", "modified": "2023-08-18 16:26:34.470582",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Phase-2", "module": "Phase-2",
"name": "Feature Finder", "name": "Feature Finder",

19
smart_service/phase_2/doctype/feature_finder/feature_finder.py

@ -97,12 +97,15 @@ def get_list_data(name, val):
@frappe.whitelist() @frappe.whitelist()
def insert_spec_data(doc_name, values): def insert_spec_data(doc_name, values,tab_ref):
try: try:
val = json.loads(values) val = json.loads(values)
get_count = frappe.db.sql(f"""select name from `tabFeature Finder Specification` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1) get_count = frappe.db.sql(f"""select name from `tabFeature Finder Specification` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1)
get_count = len(get_count)+1 get_count = len(get_count)+1
frappe.log_error("displayorder",str(get_count)) result = frappe.get_doc("Feature Finder", doc_name)
result.tab_ref = tab_ref
result.save()
frappe.db.commit()
if val.get('name') != None: if val.get('name') != None:
doc = frappe.get_doc("Feature Finder Specification", val['name']) doc = frappe.get_doc("Feature Finder Specification", val['name'])
doc.specification = val.get('specification') doc.specification = val.get('specification')
@ -139,11 +142,15 @@ def delete_spec_data(values):
@frappe.whitelist() @frappe.whitelist()
def insert_image_data(doc_name, values): def insert_image_data(doc_name, values,tab_ref):
try: try:
val = json.loads(values) val = json.loads(values)
get_count = frappe.db.sql(f"""select name from `tabFeature Finder Images` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1) get_count = frappe.db.sql(f"""select name from `tabFeature Finder Images` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1)
get_count = len(get_count)+1 get_count = len(get_count)+1
result = frappe.get_doc("Feature Finder", doc_name)
result.tab_ref = tab_ref
result.save()
frappe.db.commit()
if val.get('name') != None: if val.get('name') != None:
doc = frappe.get_doc("Feature Finder Images", val['name']) doc = frappe.get_doc("Feature Finder Images", val['name'])
doc.image = val.get('image') doc.image = val.get('image')
@ -180,11 +187,15 @@ def delete_image_data(values):
@frappe.whitelist() @frappe.whitelist()
def insert_content_data(doc_name, values): def insert_content_data(doc_name, values,tab_ref):
try: try:
val = json.loads(values) val = json.loads(values)
get_count = frappe.db.sql(f"""select name from `tabFeature Finder Content` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1) get_count = frappe.db.sql(f"""select name from `tabFeature Finder Content` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1)
get_count = len(get_count)+1 get_count = len(get_count)+1
result = frappe.get_doc("Feature Finder", doc_name)
result.tab_ref = tab_ref
result.save()
frappe.db.commit()
if val.get('name') != None: if val.get('name') != None:
doc = frappe.get_doc("Feature Finder Content", val['name']) doc = frappe.get_doc("Feature Finder Content", val['name'])
doc.content = val.get('content') doc.content = val.get('content')

4
smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json

@ -1,7 +1,7 @@
{ {
"actions": [], "actions": [],
"allow_rename": 1, "allow_rename": 1,
"autoname": "format:{variant}-{language}", "autoname": "format:{vehicle}-{variant}-{language}",
"creation": "2023-08-07 12:44:24.978007", "creation": "2023-08-07 12:44:24.978007",
"doctype": "DocType", "doctype": "DocType",
"editable_grid": 1, "editable_grid": 1,
@ -107,7 +107,7 @@
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2023-08-18 16:49:35.315359", "modified": "2023-08-18 18:04:39.185507",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Phase-2", "module": "Phase-2",
"name": "Module Publish Mapping", "name": "Module Publish Mapping",

9
smart_service/transactions/doctype/publish/publish.js

@ -342,7 +342,7 @@ frappe.ui.form.on('Publish', {
} }
if (frm.doc.docstatus == 1 && frm.doc.publish_status == 'To Publish' && !frm.is_new() && frm.doc.publish_type != "Global" && frm.doc.publish_module != 'Automotive System') { if (frm.doc.docstatus == 1 && frm.doc.publish_status == 'To Publish' && !frm.is_new() && frm.doc.publish_module != 'Automotive System') {
debugger debugger
frappe.call({ frappe.call({
method: "smart_service.transactions.doctype.publish.publish.cal_ver_new_module", method: "smart_service.transactions.doctype.publish.publish.cal_ver_new_module",
@ -357,6 +357,13 @@ frappe.ui.form.on('Publish', {
if (r.message) { if (r.message) {
frm.set_value('version', r.message); frm.set_value('version', r.message);
cur_frm.refresh_field('version') cur_frm.refresh_field('version')
frm.page.clear_primary_action("Global Publish");
// if(frm.doc.publish_type == 'Internal'){
// debugger
// frm.page.clear_primary_action("Global Publish");
// }
frm.set_value('actual_published_date', frappe.datetime.nowdate()); frm.set_value('actual_published_date', frappe.datetime.nowdate());
} }

60
smart_service/transactions/doctype/publish/publish.py

@ -80,6 +80,15 @@ class Publish(Document):
update_repair_published_docs(self) update_repair_published_docs(self)
update_publish_status = frappe.db.sql( update_publish_status = frappe.db.sql(
"""update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name)) """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))
# if v:
# update_publish_mapping(
# self.vehicle, v, self.language, self.publish_module)
def onload1(self): def onload1(self):
current_db_name = frappe.conf.get("db_name") current_db_name = frappe.conf.get("db_name")
@ -190,6 +199,37 @@ def update_procedure(vehicle, lang, publish_type, doc):
# Generate Publish versions # Generate Publish versions
def update_publish_mapping(vehicle, variant, language, module):
frappe.set_user('Administrator')
pub_data = frappe.db.get_list('Module Publish Mapping', filters={
"vehicle": vehicle,
"variant": variant,
"language": language
}, fields=['name'])
if pub_data:
doc = frappe.get_doc('Module Publish Mapping', pub_data[0]['name'])
else:
doc = frappe.get_doc({
'doctype': 'Module Publish Mapping',
"vehicle": vehicle,
"variant": variant,
"language": language
})
if module == 'Automotive System':
doc.automotive_system = 1
doc.tsb = 1
doc.fsa = 1
doc.tekalert = 1
elif module == 'Feature Finder':
doc.feature_finder = 1
elif module == 'Repair service':
doc.repairservice_check_sheet = 1
doc.save()
def update_publish_status(self): def update_publish_status(self):
try: try:
update_status = frappe.db.sql( update_status = frappe.db.sql(
@ -287,7 +327,7 @@ def generate_global_publish(name):
"vehicle": res.vehicle, "vehicle": res.vehicle,
"publish_type": "Global", "publish_type": "Global",
"language": res.language, "language": res.language,
"publish_status": "To Publish", "publish_status": 'To Publish',
"release_description": res.release_description, "release_description": res.release_description,
"publish_module": res.publish_module, "publish_module": res.publish_module,
"feature_finder_publish": res.feature_finder_publish, "feature_finder_publish": res.feature_finder_publish,
@ -651,8 +691,9 @@ def feature_finder_publish(vehicle=None, vehicle_id=None,
feature_finder_tmp.append( feature_finder_tmp.append(
feature_finder['data'][0]) feature_finder['data'][0])
repair_checksheet_tmp = get_latest_data( feature_finder_tmp = get_latest_data(
{'data': published_data['data']}, {'data': feature_finder_tmp}) {'data': published_data['data']}, {'data': feature_finder_tmp})
frappe.msgprint(str(feature_finder_tmp))
else: else:
@ -672,15 +713,16 @@ def feature_finder_publish(vehicle=None, vehicle_id=None,
{'data': feature_finder_tmp}, {'data': []}) {'data': feature_finder_tmp}, {'data': []})
# if publish_feature_finder == 1: # if publish_feature_finder == 1:
""" Save publish file """ """ Save publish file """
vehicle_data['data'] = feature_finder_tmp vehicle_data['data'] = feature_finder_tmp
frappe.msgprint(str(file_path))
with open(file_path, 'w') as outfile: with open(file_path, 'w') as outfile:
outfile.write(json.dumps(vehicle_data, indent=4, default=str)) outfile.write(json.dumps(vehicle_data, indent=4, default=str))
logger.info( logger.info(
f'Repair Checksheet Data Append Start::{vehicle}-{language}-{publish_type}') f'Repair Checksheet Data Append Start::{vehicle}-{language}-{publish_type}')
return 1, file_path return 1, file_path
except Exception as e: except Exception as e:
logger.info( logger.info(

Loading…
Cancel
Save