diff --git a/smart_service/masters/doctype/vehicle/vehicle.js b/smart_service/masters/doctype/vehicle/vehicle.js index 4b49623..f5c1973 100644 --- a/smart_service/masters/doctype/vehicle/vehicle.js +++ b/smart_service/masters/doctype/vehicle/vehicle.js @@ -1,10 +1,11 @@ // Copyright (c) 2021, Hard n Soft Technologies Pvt Ltd and contributors // For license information, please see license.txt -cur_frm.fields_dict['vehicle_segment'].get_query = function(doc, cdt, cdn) { - return {query:"smart_service.masters.doctype.vehicle.vehicle.vehicle_segment", - }; +cur_frm.fields_dict['vehicle_segment'].get_query = function (doc, cdt, cdn) { + return { + query: "smart_service.masters.doctype.vehicle.vehicle.vehicle_segment", }; +}; var original_display_order = 0; var vehicle_count = 0; @@ -12,116 +13,116 @@ var skm_array = []; var dusted = false; frappe.ui.form.on('Vehicle', { - onload: function(frm) { + onload: function (frm) { if (!frm.is_new()) fnLoad_skm_initial_values(frm); - }, + }, image: function (frm) { - var file = frm.doc.image; - if (frm.doc.image) { - frappe.call({ - method: "smart_service.masters.doctype.vehicle.vehicle.image_size", - args: { - "image": frm.doc.image, - "doc": frm.doc.name - }, - callback: function (r) { - if(r.message){ - if(r.message == frm.doc.image){ - frm.doc.image = ''; - cur_frm.refresh_field('image'); - frappe.show_alert({ - message: __('Max Dimesions are 2048*1080.'), - indicator: 'yellow' - }, 10); - }else{ - frm.doc.image = ''; - cur_frm.refresh_field('image'); - frappe.show_alert({ - message: __('Max Image Size is 10MB.'), - indicator: 'yellow' - }, 10); - } - } - } - }) - } - }, - refresh: function(frm) { - if (frm.is_new()){ - frm.set_df_property('display_order', 'read_only', 1); + var file = frm.doc.image; + if (frm.doc.image) { + frappe.call({ + method: "smart_service.masters.doctype.vehicle.vehicle.image_size", + args: { + "image": frm.doc.image, + "doc": frm.doc.name + }, + callback: function (r) { + if (r.message) { + if (r.message == frm.doc.image) { + frm.doc.image = ''; + cur_frm.refresh_field('image'); + frappe.show_alert({ + message: __('Max Dimesions are 2048*1080.'), + indicator: 'yellow' + }, 10); + } else { + frm.doc.image = ''; + cur_frm.refresh_field('image'); + frappe.show_alert({ + message: __('Max Image Size is 10MB.'), + indicator: 'yellow' + }, 10); + } + } + } + }) + } + }, + refresh: function (frm) { + if (frm.is_new()) { + frm.set_df_property('display_order', 'read_only', 1); } else { - frm.set_df_property('display_order', 'read_only', 0); + frm.set_df_property('display_order', 'read_only', 0); } if (!frm.is_new()) { frm.disable_save(); //*** Check Refresh for Save Function - - frm.add_custom_button(__('Save'), function(){ + + frm.add_custom_button(__('Save'), function () { fnSave(frm); - }).addClass("btn-warning").css({'background-color':'#e31a37', 'color':'white'}); + }).addClass("btn-warning").css({ 'background-color': '#e31a37', 'color': 'white' }); } - frappe.db.count('Vehicle') + frappe.db.count('Vehicle') .then(count => { vehicle_count = count + 1; - if (frm.is_new()){ - frm.set_value("display_order",vehicle_count); + if (frm.is_new()) { + frm.set_value("display_order", vehicle_count); } else { original_display_order = frm.doc.display_order; } - }); - }, - - validate: function(frm) { - if(frm.doc.vehicle){ - if (frm.doc.vehicle.length>50){ - frappe.msgprint("Vehicle: Only 50 characters are allowed") - - validated = false; - } - if (frm.doc.vehicle.length == 1){ - frappe.msgprint("Vehicle: Single character not allowed") - validated = false; - } - } - if (frm.doc.vehicle == "."){ - frappe.throw(__("Just a . is not prescribed!")); - frappe.validated = false; - } + }); + }, + + validate: function (frm) { + if (frm.doc.vehicle) { + if (frm.doc.vehicle.length > 50) { + frappe.msgprint("Vehicle: Only 50 characters are allowed") + + validated = false; + } + if (frm.doc.vehicle.length == 1) { + frappe.msgprint("Vehicle: Single character not allowed") + validated = false; + } + } + if (frm.doc.vehicle == ".") { + frappe.throw(__("Just a . is not prescribed!")); + frappe.validated = false; + } //var regex = /^[A-Za-z0-9&-()@/,.<>_ ]*$/; var regex = /[!@#$%^&*()_+\=\[\]{};'`~:"\\|.<>\/?]+/; - if(frm.doc.vehicle){ - if (regex.test(frm.doc.vehicle) === true){ - frappe.throw(__("Vehicle: Only letters, numbers and -, are allowed.")); - frappe.validated = false; - } else if(frm.doc.vehicle) { - if(frm.doc.vehicle.includes("'")) { + if (frm.doc.vehicle) { + if (regex.test(frm.doc.vehicle) === true) { frappe.throw(__("Vehicle: Only letters, numbers and -, are allowed.")); frappe.validated = false; + } else if (frm.doc.vehicle) { + if (frm.doc.vehicle.includes("'")) { + frappe.throw(__("Vehicle: Only letters, numbers and -, are allowed.")); + frappe.validated = false; + } } } - } - - if (frm.doc.display_order && frm.doc.vehicle && frm.doc.vehicle_segment){ + + if (frm.doc.display_order && frm.doc.vehicle && frm.doc.vehicle_segment) { //*** check if there is same display_order frappe.db.get_list('Vehicle', { fields: ['display_order', 'name'], filters: { display_order: frm.doc.display_order, - vehicle:["!=",frm.doc.vehicle] + vehicle: ["!=", frm.doc.vehicle] } }).then(records => { - if (records.length){ + if (records.length) { frappe.db.set_value('Vehicle', records[0].name, { display_order: original_display_order }).then(r => { let doc = r.message; frappe.show_alert({ - message:__('Swapped display order with: ' + records[0].name), - indicator:'green' + message: __('Swapped display order with: ' + records[0].name), + indicator: 'green' }, 5); }); } else { - if (frm.doc.display_order > vehicle_count){ + if (frm.doc.display_order >= vehicle_count) { let display_vehicle_count = vehicle_count - 1; msgprint('There are only ' + display_vehicle_count + ' vehicle(s)'); frappe.validated = false; @@ -129,23 +130,23 @@ frappe.ui.form.on('Vehicle', { } }); } - }, + }, - service_kilometers: function(frm) { + service_kilometers: function (frm) { //*** Check & add any KM got added in Service Kilometers dusted = true; frm.doc.service_kilometers.forEach(row => { let index = skm_array.findIndex(o => o.name === row.name); - if (index < 0){ + if (index < 0) { let index1 = skm_array.findIndex(o => o.skm_initial === row.service_kilometers); - if (index1 >= 0){ + if (index1 >= 0) { skm_array[index1].type = "Initial"; } else { var valueToPush = {}; valueToPush.type = "New"; valueToPush.name = row.name; - valueToPush.skm_initial = (row.service_kilometers === undefined ? null:row.service_kilometers); + valueToPush.skm_initial = (row.service_kilometers === undefined ? null : row.service_kilometers); skm_array.push(valueToPush); } } @@ -155,20 +156,20 @@ frappe.ui.form.on('Vehicle', { var valueToPush = {}; valueToPush.type = "Initial"; valueToPush.name = row.name; - valueToPush.skm_initial = (row.service_kilometers === undefined ? null:row.service_kilometers); + valueToPush.skm_initial = (row.service_kilometers === undefined ? null : row.service_kilometers); current_skm_array.push(valueToPush); }); //*** Check & remove any KM got Removed in Service Kilometers - var idx=0; + var idx = 0; skm_array.forEach(row => { idx++; let index = current_skm_array.findIndex(o => o.skm_initial === row.skm_initial); - if (index < 0){ + if (index < 0) { //row.type = row.type === "New" ? "No Action": "Deleted"; - if (row.type == "New"){ - skm_array.splice(idx-1, 1); - }else{ + if (row.type == "New") { + skm_array.splice(idx - 1, 1); + } else { row.type = "Deleted"; } } @@ -177,74 +178,74 @@ frappe.ui.form.on('Vehicle', { }); frappe.ui.form.on('Vehicle', { - after_save1: function(frm) { - frappe.call({ + after_save1: function (frm) { + frappe.call({ "method": "smart_service.masters.doctype.vehicle.vehicle.update_km_mapping", "args": { - "doc":frm.doc.name, + "doc": frm.doc.name, "skm_array": skm_array, "skm": frm.doc.service_kilometers - }, - freeze: true, - async:false, - callback:function(r){} + }, + freeze: true, + async: false, + callback: function (r) { } }); - - } - + + } + }); -function fnLoad_skm_initial_values(frm){ +function fnLoad_skm_initial_values(frm) { // ***Store the Initial Service Kilometer values skm_array.length = 0; frm.doc.service_kilometers.forEach(row => { var valueToPush = {}; valueToPush.type = "Initial"; valueToPush.name = row.name; - valueToPush.skm_initial = (row.service_kilometers === undefined ? null:row.service_kilometers); + valueToPush.skm_initial = (row.service_kilometers === undefined ? null : row.service_kilometers); skm_array.push(valueToPush); }); } -function fnSave(frm){ - if (dusted){ +function fnSave(frm) { + if (dusted) { frappe.confirm('Changes will impact KM Mapping associated with this vehicle: ' + frm.doc.vehicle + '', () => { //*** Change the State to Draft for KM frm.save(); skm_array.forEach((array_row) => { - + //*** Add Edit Delete the respective Kiolmeter with Updated/Deleted SKM - if (array_row.type !== "Initial"){ + if (array_row.type !== "Initial") { frappe.call({ "method": "smart_service.masters.doctype.vehicle.vehicle.update_km_mapping", "args": { "doc": frm.doc.name, - "vehicle":frm.doc.vehicle, - "type":array_row.type, - "skm_initial":array_row.skm_initial - }, - freeze: true, - async:false, - callback:function(r){} + "vehicle": frm.doc.vehicle, + "type": array_row.type, + "skm_initial": array_row.skm_initial + }, + freeze: true, + async: false, + callback: function (r) { } }); } }); frappe.show_alert({ - message:__('Inserted Rows in Respective KM Doc & made as Draft Mode!'), - indicator:'green' + message: __('Inserted Rows in Respective KM Doc & made as Draft Mode!'), + indicator: 'green' }, 5); fnLoad_skm_initial_values(frm); }, () => { // action to perform if No is selected - }); - } else if(frm.is_dirty()){ + }); + } else if (frm.is_dirty()) { frm.save(); fnLoad_skm_initial_values(frm); } else { frappe.show_alert({ - message:__('No updates for Kilometer Mapping... '), - indicator:'yellow' + message: __('No updates for Kilometer Mapping... '), + indicator: 'yellow' }, 5); } } \ No newline at end of file diff --git a/smart_service/masters/doctype/vehicle_segment/vehicle_segment.js b/smart_service/masters/doctype/vehicle_segment/vehicle_segment.js index 6cdf017..b04ef4c 100644 --- a/smart_service/masters/doctype/vehicle_segment/vehicle_segment.js +++ b/smart_service/masters/doctype/vehicle_segment/vehicle_segment.js @@ -81,7 +81,7 @@ frappe.ui.form.on('Vehicle Segment', { }, 5); }); } else { - if (frm.doc.display_order > vehicle_count){ + if (frm.doc.display_order >= vehicle_count){ let display_vehicle_count = vehicle_count - 1; msgprint('There are only ' + display_vehicle_count + ' Vehicle Segment(s)'); frappe.validated = false;