awsss 2 years ago
parent
commit
6b5c6d7018
  1. 237
      smart_service/masters/doctype/vehicle/vehicle.js
  2. 2
      smart_service/masters/doctype/vehicle_segment/vehicle_segment.js

237
smart_service/masters/doctype/vehicle/vehicle.js

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

2
smart_service/masters/doctype/vehicle_segment/vehicle_segment.js

@ -81,7 +81,7 @@ frappe.ui.form.on('Vehicle Segment', {
}, 5); }, 5);
}); });
} else { } else {
if (frm.doc.display_order > vehicle_count){ if (frm.doc.display_order >= vehicle_count){
let display_vehicle_count = vehicle_count - 1; let display_vehicle_count = vehicle_count - 1;
msgprint('There are only ' + display_vehicle_count + ' Vehicle Segment(s)'); msgprint('There are only ' + display_vehicle_count + ' Vehicle Segment(s)');
frappe.validated = false; frappe.validated = false;

Loading…
Cancel
Save