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.
This commit is contained in:
400
ExportTable.php
400
ExportTable.php
@@ -1,129 +1,273 @@
|
||||
<?php
|
||||
|
||||
require_once 'include/utils/utils.php';
|
||||
|
||||
require_once 'includes/Loader.php';
|
||||
|
||||
vimport ('includes.runtime.EntryPoint');
|
||||
|
||||
require_once 'SUtiles.php';
|
||||
|
||||
@session_start();
|
||||
|
||||
|
||||
|
||||
if(isset($_GET['table'])){
|
||||
|
||||
$table = $_GET['table'];
|
||||
|
||||
$roleid = $_GET['roleid'];
|
||||
|
||||
$filename = "Data_".$table.".csv";
|
||||
|
||||
outputCsv($filename,$table,$roleid);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function outputCsv($fileName,$table,$roleid)
|
||||
|
||||
{
|
||||
|
||||
global $adb;
|
||||
|
||||
|
||||
|
||||
$filter = [];
|
||||
|
||||
$sub = reset(getSubordinateRoleAndUsers($roleid));
|
||||
|
||||
$flag = false;
|
||||
|
||||
foreach($sub as $key => $value){
|
||||
|
||||
array_push($filter,$value);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
$user_query = 'select * from '.$table;
|
||||
|
||||
$result =$adb->query($user_query);
|
||||
|
||||
|
||||
|
||||
ob_clean();
|
||||
|
||||
header('Pragma: public');
|
||||
|
||||
header('Expires: 0');
|
||||
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
|
||||
header('Cache-Control: private', false);
|
||||
|
||||
header('Content-Type: text/csv; charset=utf-8');
|
||||
|
||||
header('Content-Disposition: attachment;filename=' . $fileName);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$fp = fopen('php://output', 'w');
|
||||
|
||||
|
||||
|
||||
while ($row = $adb->fetchByAssoc($result)) {
|
||||
|
||||
if (!$flag) {
|
||||
|
||||
// display field/column names as first row
|
||||
|
||||
fputcsv($fp, array_keys($row),';');
|
||||
|
||||
$flag = true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(isMedicalSuperviseur($roleid)){
|
||||
|
||||
if(in_array($row['visiteur'],$filter)){
|
||||
|
||||
$csv_values = array_map('decode_html', array_values($row));
|
||||
|
||||
fputcsv($fp, $csv_values,';');
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else{
|
||||
|
||||
$csv_values = array_map('decode_html', array_values($row));
|
||||
|
||||
fputcsv($fp, $csv_values,';');
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
|
||||
ob_flush();
|
||||
|
||||
die;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ancien code lakheder ben
|
||||
|
||||
<?php
|
||||
|
||||
require_once 'include/utils/utils.php';
|
||||
|
||||
require_once 'includes/Loader.php';
|
||||
|
||||
vimport ('includes.runtime.EntryPoint');
|
||||
|
||||
require_once 'SUtiles.php';
|
||||
|
||||
@session_start();
|
||||
|
||||
// ✅ Securely initialize the current user (important for permission control)
|
||||
if (isset($_SESSION['authenticated_user_id'])) {
|
||||
$current_user = new Users();
|
||||
$current_user->retrieveCurrentUserInfoFromFile($_SESSION['authenticated_user_id']);
|
||||
$roleid = $current_user->roleid;
|
||||
} else {
|
||||
echo "Access denied. Not logged in.";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
if(isset($_GET['table'])){
|
||||
|
||||
$table = $_GET['table'];
|
||||
|
||||
$current_user = new Users();
|
||||
$current_user->retrieveCurrentUserInfoFromFile($_SESSION['authenticated_user_id']);
|
||||
$roleid = $current_user->roleid;
|
||||
|
||||
$filename = "Data_".$table.".csv";
|
||||
|
||||
outputCsv($filename,$table,$roleid);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function outputCsv($fileName,$table,$roleid)
|
||||
|
||||
{
|
||||
|
||||
global $adb;
|
||||
|
||||
|
||||
|
||||
$filter = [];
|
||||
|
||||
$sub = (getMySubordinates($roleid));
|
||||
|
||||
$flag = false;
|
||||
|
||||
foreach($sub as $key => $value){
|
||||
|
||||
array_push($filter,$value);
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
$user_query = 'select * from '.$table;
|
||||
|
||||
|
||||
if ($roleid == 'H34' || $roleid == 'H36' || $roleid == 'H38' || $roleid == 'H42' || $roleid == 'H44') {
|
||||
$user_query = "SELECT * FROM `$table` WHERE parentrole LIKE '%::$roleid::%' OR parentrole = '$roleid'";
|
||||
}
|
||||
|
||||
$result =$adb->query($user_query);
|
||||
|
||||
|
||||
|
||||
ob_clean();
|
||||
|
||||
header('Pragma: public');
|
||||
|
||||
header('Expires: 0');
|
||||
|
||||
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
|
||||
|
||||
header('Cache-Control: private', false);
|
||||
|
||||
header('Content-Type: text/csv; charset=utf-8');
|
||||
|
||||
header('Content-Disposition: attachment;filename=' . $fileName);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$fp = fopen('php://output', 'w');
|
||||
|
||||
|
||||
|
||||
while ($row = $adb->fetchByAssoc($result)) {
|
||||
|
||||
if (!$flag) {
|
||||
|
||||
// display field/column names as first row
|
||||
|
||||
fputcsv($fp, array_keys($row),';');
|
||||
|
||||
$flag = true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// if(isMedicalSuperviseur($roleid)){
|
||||
|
||||
// if (in_array($row['visiteur1'], $filter) || in_array($row['visiteur2'], $filter) || in_array($row['visiteur3'], $filter) || in_array($row['visiteur3'], $filter)) {
|
||||
|
||||
// $csv_values = array_map('decode_html', array_values($row));
|
||||
|
||||
// fputcsv($fp, $csv_values,';');
|
||||
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
// else{
|
||||
|
||||
$csv_values = array_map('decode_html', array_values($row));
|
||||
|
||||
fputcsv($fp, $csv_values,';');
|
||||
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
|
||||
ob_flush();
|
||||
|
||||
die;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ancien code lakheder ben
|
||||
|
||||
if(isset($_GET['table'])){
|
||||
|
||||
$table = $_GET['table'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
$extension = ".xls";//".csv";
|
||||
|
||||
if(isset($_GET['xls']) && $_GET['xls'] == true)
|
||||
|
||||
$extension = ".xls";
|
||||
|
||||
global $adb;
|
||||
|
||||
$filename = "Data_".$table.$extension; // File Name
|
||||
|
||||
// Download file
|
||||
|
||||
header("Content-Disposition: attachment; filename=\"$filename\"");
|
||||
|
||||
header("Content-Type: application/vnd.ms-excel");
|
||||
|
||||
$user_query = 'select * from '.$table;
|
||||
|
||||
$result =$adb->query($user_query);
|
||||
|
||||
// Write data to file
|
||||
|
||||
$flag = false;
|
||||
|
||||
ob_end_clean();
|
||||
|
||||
ob_start();
|
||||
|
||||
while ($row = $adb->fetch_array($result)) {
|
||||
|
||||
unset($row['0']);
|
||||
|
||||
unset($row['1']);
|
||||
|
||||
unset($row['2']);
|
||||
|
||||
unset($row['3']);
|
||||
|
||||
unset($row['4']);
|
||||
|
||||
unset($row['5']);
|
||||
|
||||
unset($row['6']);
|
||||
|
||||
unset($row['7']);
|
||||
|
||||
unset($row['8']);
|
||||
|
||||
unset($row['9']);
|
||||
|
||||
unset($row['10']);
|
||||
|
||||
unset($row['11']);
|
||||
|
||||
unset($row['12']);
|
||||
|
||||
unset($row['13']);
|
||||
|
||||
unset($row['14']);
|
||||
|
||||
unset($row['15']);
|
||||
|
||||
unset($row['16']);
|
||||
|
||||
unset($row['17']);
|
||||
|
||||
unset($row['18']);
|
||||
|
||||
unset($row['19']);
|
||||
|
||||
unset($row['20']);
|
||||
|
||||
unset($row['21']);
|
||||
|
||||
if (!$flag) {
|
||||
|
||||
// display field/column names as first row
|
||||
|
||||
echo implode("\t", array_keys($row)) . "\r\n";
|
||||
|
||||
$flag = true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
$temp = implode("\t", array_values($row));
|
||||
|
||||
$temp = str_replace("'", " ", $temp);
|
||||
|
||||
$temp = str_replace("’", " ", $temp);
|
||||
|
||||
$temp = str_replace("ç", "c", $temp);
|
||||
|
||||
$temp = str_replace("â", "a", $temp);
|
||||
|
||||
$temp = str_replace("è", "e", $temp);
|
||||
|
||||
$temp = str_replace('é', 'e', $temp);
|
||||
|
||||
$temp = str_replace('ï', 'e', $temp);
|
||||
|
||||
$temp = str_replace('Ï', 'i', $temp);
|
||||
|
||||
$temp = str_replace('É', 'E', $temp);
|
||||
|
||||
$temp = str_replace(' ', "", $temp);
|
||||
|
||||
$temp = str_replace('ô', "o", $temp);
|
||||
|
||||
$temp = str_replace(array("\r", "\n"), '', $temp);
|
||||
|
||||
//preg_replace( "/\r|\n/", "", $temp );
|
||||
|
||||
echo str_replace('.', ',', $temp)."\r\n";
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user