Files
CRM/layouts/v7/modules/Settings/Vtiger/resources/OutgoingServer.js
BACHIR SOULDI 2a647b138a feat: Enhance email functionality and PDF generation for Sales Orders
- Enabled SMTP debugging in PHPMailer for better error tracking.
- Added a "Test send email" link in the Inventory Detail View for quick email testing.
- Implemented automatic PDF generation and email sending upon Sales Order creation.
- Created a new action for sending Sales Order emails with attached PDFs.
- Added a new AJAX action for testing outgoing email server configurations.
- Updated outgoing server settings to use new SMTP credentials.
- Improved email templates for better user experience.
- Added test scripts for validating PDF generation and email sending.
2026-02-17 15:59:31 +01:00

244 lines
7.8 KiB
JavaScript

/*+***********************************************************************************
* The contents of this file are subject to the vtiger CRM Public License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* The Original Code is: vtiger CRM Open Source
* The Initial Developer of the Original Code is vtiger.
* Portions created by vtiger are Copyright (C) vtiger.
* All Rights Reserved.
*************************************************************************************/
Vtiger.Class("Settings_Vtiger_OutgoingServer_Js",{},{
init : function() {
this.addComponents();
},
addComponents : function (){
this.addModuleSpecificComponent('Index',app.module(), app.getParentModuleName());
},
/*
* function to Save the Outgoing Server Details
*/
saveOutgoingDetails : function(form) {
var thisInstance = this;
var aDeferred = jQuery.Deferred();
var data = form.serializeFormData();
var params = {
'module' : app.getModuleName(),
'parent' : app.getParentModuleName(),
'action': 'OutgoingServerSaveAjax'
};
jQuery.extend(params,data);
app.request.post({'data' : params}).then(
function(err, data) {
app.helper.showProgress();
if(err === null){
var OutgoingServerDetailUrl = form.data('detailUrl');
thisInstance.loadContents(OutgoingServerDetailUrl).then(
function(data) {
jQuery('.settingsPageDiv').html(data);
thisInstance.registerDetailViewEvents();
app.helper.hideProgress();
}
);
aDeferred.resolve(data);
}else {
app.helper.hideProgress();
jQuery('.errorMessage', form).removeClass('hide');
aDeferred.reject();
}
}
);
return aDeferred.promise();
},
/*
* function to load the contents from the url through pjax
*/
registerFilters: function(){
var filters = jQuery('#outgoingServer');
filters.find('.cursorPointer').on('click',function(e){
var currentTarget = jQuery(e.currentTarget);
if(currentTarget.attr('data-toggletext')=== 'Show more') {
currentTarget.attr('data-toggletext','Show less');
currentTarget.html('Show less');
}else{
currentTarget.attr('data-toggletext','Show more');
currentTarget.html('Show more');
}
});
},
loadContents : function(url) {
var aDeferred = jQuery.Deferred();
app.request.pjax({"url" : url}).then(
function(err, data){
if(err === null){
jQuery('.settingsPageDiv ').html(data);
aDeferred.resolve(data);
}
},
function(error, err){
aDeferred.reject();
}
);
return aDeferred.promise();
},
/*
* function to register the events in editView
*/
registerEditViewEvents : function(e) {
var thisInstance = this;
var form = jQuery('#OutgoingServerForm');
var resetButton = jQuery('.resetButton', form);
var cancelLink = jQuery('.cancelLink', form);
//register validation engine
var params = {
submitHandler : function(form) {
app.helper.showProgress();
var form = jQuery(form);
thisInstance.saveOutgoingDetails(form);
}
};
if (form.length) {
form.vtValidate(params);
form.on('submit', function(e){
e.preventDefault();
return false;
});
}
//register click event for resetToDefault Button
resetButton.click(function(e) {
jQuery('[name="default"]', form).val('true');
var message = app.vtranslate('JS_CONFIRM_DEFAULT_SETTINGS');
app.helper.showConfirmationBox({'message' : message}).then(
function(e) {
app.helper.showProgress();
thisInstance.saveOutgoingDetails(form);
}
);
});
//register click event for cancelLink
cancelLink.click(function(e) {
var OutgoingServerDetailUrl = form.data('detailUrl');
thisInstance.loadContents(OutgoingServerDetailUrl).then(
function(data) {
jQuery('.editViewPageDiv').html(data);
//after loading contents, register the events
thisInstance.registerDetailViewEvents();
}
);
});
},
/*
* function to register the events in DetailView
*/
registerDetailViewEvents : function() {
var thisInstance = this;
//Detail view container
var container = jQuery('#OutgoingServerDetails');
var editButton = jQuery('.editButton', container);
//register click event for edit button
editButton.click(function(e) {
app.helper.showProgress();
var url = editButton.data('url');
thisInstance.loadContents(url).then(
function(data) {
jQuery('.settingsPageDiv ').html(data);
app.helper.hideProgress();
//after load the contents register the edit view events
thisInstance.registerEditViewEvents();
thisInstance.registerOnChangeEventOfserverType();
vtUtils.showSelect2ElementView(jQuery('select[name="serverType"]'));
}
);
});
},
registerOnChangeEventOfserverType:function(e){
var form = jQuery('#OutgoingServerForm');
form.find('[name="serverType"]').on('change',function(e){
var servertypevalue=form.find('[name="serverType"]').val();
form.find('[name="server"]').val(servertypevalue);
if(servertypevalue === "mail.od1.vtiger.com"){
var vtigerUser= form.find('[name="vtigerServer"]').data("username");
var vtigerpassword= form.find('[name="vtigerServer"]').data("password");
var vtigeremail= form.find('[name="vtigerServer"]').data("email");
form.find('[name="server_username"]').val(vtigerUser);
form.find('[name="server_password"]').val(vtigerpassword);
form.find('[name="from_email_field"]').val(vtigeremail);
}else{
form.find('[name="server_username"]').val("");
form.find('[name="server_password"]').val("");
form.find('[name="from_email_field"]').val("");
}
});
},
registerEvents: function() {
var thisInstance = this;
thisInstance.registerEditViewEvents();
thisInstance.registerOnChangeEventOfserverType();
thisInstance.registerDetailViewEvents();
this.registerFilters();
}
});
jQuery(document).ready(function () {
jQuery('#sendTestMail').on('click', function (e) {
e.preventDefault();
var params = {
module: 'Vtiger',
parent: 'Settings',
action: 'OutgoingServerAjax',
mode: 'sendTestMail'
};
app.helper.showProgress();
app.request.post({ data: params }).then(function (err, data) {
console.log("data",data);
console.log("err",err);
app.helper.hideProgress();
if (err === null) {
if (data && data.success) {
app.helper.showSuccessNotification({
message: data.message || '✅ Test mail sent successfully!'
});
} else if (data && data.error) {
app.helper.showErrorNotification({
message: data.error.message || '❌ Mailer Error.'
});
} else {
app.helper.showErrorNotification({
message: '❌ Unknown error. Check logs.'
});
}
} else {
app.helper.showErrorNotification({ message: '❌ ' + err.message });
}
});
});
});
Settings_Vtiger_OutgoingServer_Js("Settings_Vtiger_OutgoingServerEdit_Js",{},{});
Settings_Vtiger_OutgoingServer_Js("Settings_Vtiger_OutgoingServerDetail_Js",{},{});