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
// 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("<b>Vehicle:</b> Only <b> 50 </b> characters are allowed")
validated = false;
}
if (frm.doc.vehicle.length == 1){
frappe.msgprint("<b>Vehicle:</b> Single character not allowed")
validated = false;
}
}
if (frm.doc.vehicle == "."){
frappe.throw(__("Just a <b>.</b> is not prescribed!"));
frappe.validated = false;
}
});
},
validate: function (frm) {
if (frm.doc.vehicle) {
if (frm.doc.vehicle.length > 50) {
frappe.msgprint("<b>Vehicle:</b> Only <b> 50 </b> characters are allowed")
validated = false;
}
if (frm.doc.vehicle.length == 1) {
frappe.msgprint("<b>Vehicle:</b> Single character not allowed")
validated = false;
}
}
if (frm.doc.vehicle == ".") {
frappe.throw(__("Just a <b>.</b> 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(__("<b>Vehicle:</b> Only letters, numbers and <b> -,</b> 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(__("<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.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: <b>' + frm.doc.vehicle + '</b>',
() => {
//*** 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);
}
}

2
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;

Loading…
Cancel
Save