feat: Enhance print functionality and add success modal for mass updates

This commit is contained in:
“VeLiTi”
2026-01-13 09:55:31 +01:00
parent 884d2a3366
commit 0d3724395a
6 changed files with 160 additions and 138 deletions

View File

@@ -1159,13 +1159,21 @@ function sortTextVal(a, b) {
//------------------------------------------
function printDiv(div) {
var divContents = document.getElementById(div).innerHTML;
var a = window.open('', '', '');
a.document.write('<html>');
a.document.write('<body > ');
a.document.write(divContents);
a.document.write('</body></html>');
a.document.close();
a.print();
var printWindow = window.open('', '', 'height=600,width=800');
printWindow.document.write('<html><head><title>Print</title>');
printWindow.document.write('<style>');
printWindow.document.write('body { font-family: Arial, sans-serif; margin: 20px; }');
printWindow.document.write('table { border-collapse: collapse; width: 100%; }');
printWindow.document.write('th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }');
printWindow.document.write('th { background-color: #f2f2f2; }');
printWindow.document.write('</style>');
printWindow.document.write('</head><body>');
printWindow.document.write(divContents);
printWindow.document.write('</body></html>');
printWindow.document.close();
printWindow.focus();
printWindow.print();
printWindow.close();
}
//------------------------------------------

View File

@@ -129,6 +129,9 @@ $view .='<div class="content-block order-details">
</div>';
$view .= '</div>';
//Retrieve questions and awnsers
if ($version == 0){
$view .= '<div class="content-block">
<div class="block-header">
<i class="fa-solid fa-bars fa-sm"></i>'.$cartest_questions_text.'
@@ -136,34 +139,32 @@ $view .= '<div class="content-block">
<div class="table order-table">
<table>';
//Retrieve questions and awnsers
if ($version == 0){
foreach ($cartest_questions as $key => $value){
$view .= '<tr>
<td style="width:25%;">'.$key.'</td>
<td>'.((!empty($value)|| $value !='')?$value:$not_specified).'</td>
</tr>';
}
$view .= '
</table>
</div>
</div>
';
} else {
//CREATE OUTPUT BASED ON ARRAY
$view .= '<div class="tabs">';
foreach($arrayQuestions_cartest as $group){
if ($group['Group_sequence'] == 1){
$view .= '<a href="#" class="active">'.$group['Group'].'</a>';
} else {
$view .= '<a href="#">'.$group['Group'].'</a>';
}
}
$view .= '</div>';
foreach($arrayQuestions_cartest as $group){
if ($group['Group_sequence'] == 1){
$view .= '<div class="tabs">
<a href="#" class="active">'.$group['Group'].'</a>
</div>';
$view .= '<div class="content-block tab-content active">
<div class="form responsive-width-100">';
} else {
$view .= '<div class="tabs">
<a href="#">'.$group['Group'].'</a>
</div>';
$view .= '<div class="content-block tab-content">
<div class="form responsive-width-100">';
}
@@ -198,13 +199,7 @@ $view .= '<div class="content-block">
$view .= ' </div>
</div>';
}
}
$view .= '
</table>
</div>
</div>
';
if (isset($cartest_datapoints) && $cartest_datapoints !=''){
$view .= '<div class="content-block">

View File

@@ -242,17 +242,6 @@ $view .= '</div>';
//BUILD TO INPUT FORM BASED ON ARRAY
// ------------------------------
$view .= '<div class="tabs">';
foreach($arrayQuestions_cartest as $group){
if ($group['Group_sequence'] == 1){
$view .= '<a href="#" class="active">'.$group['Group'].'</a>';
} else {
$view .= '<a href="#">'.$group['Group'].'</a>';
}
}
$view .= '</div>';
foreach($arrayQuestions_cartest as $group){
if ($group['Group_sequence'] == 1){

View File

@@ -127,6 +127,27 @@ if ($update_allowed === 1){
}
}
// Create success modal if update was completed
$success_modal = '';
if ($update_allowed === 1 && isset($_POST['excel_data']) && $output_excel_display != ''){
$success_modal = '
<div id="successModal" class="modal" style="display: flex; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 1000; align-items: center; justify-content: center;">
<div class="modal-content" style="background: white; border-radius: 12px; max-width: 500px; margin: 20px; box-shadow: 0 10px 40px rgba(0,0,0,0.3); position: relative;">
<span class="close" onclick="closeSuccessModal()" style="position: absolute; top: 15px; right: 20px; font-size: 28px; font-weight: bold; color: #999; cursor: pointer;">&times;</span>
<div style="text-align: center; padding: 40px 30px;">
<i class="fa-solid fa-check-circle" style="font-size: 64px; color: #28a745; margin-bottom: 20px;"></i>
<h2 style="color: #155724; margin-bottom: 15px;">Update Completed!</h2>
<p style="margin-bottom: 10px; color: #333;">Successfully updated '.$total_rowID.' items</p>
<p style="font-size: 12px; color: #666; margin-bottom: 25px;">Order: '.htmlspecialchars($_POST['order_ref']).'</p>
<div style="display: flex; gap: 10px; justify-content: center;">
<button onclick="printDiv(\'excel_table\')" class="btn alt" style="padding: 12px 30px;"><i class="fa-solid fa-print"></i></button>
<button onclick="closeSuccessModal()" class="btn" style="padding: 12px 30px;">✓</button>
</div>
</div>
</div>
</div>';
}
// Handle success messages
if (isset($_GET['success_msg'])) {
if ($_GET['success_msg'] == 1) {
@@ -147,6 +168,12 @@ $view = '
<a href="index.php?page=equipments" class="btn alt mar-right-2">←</a>
';
if ($update_allowed === 1){
$print_btn_class = ($output_excel_display != '') ? 'btn' : 'btn alt';
$view .= '<button class="'.$print_btn_class.' mar-right-2" onclick="printDiv(\'excel_table\')"><i class="fa-solid fa-print"></i></button>';
$view .= '<input type="submit" form="mass_update_form" id="mass_update_submit" value="💾+" onclick="return confirm(\'".$mass_update_confirm_message."\')" class="btn">';
}
$view .= '</div>';
if (isset($success_msg)){
@@ -157,7 +184,7 @@ if (isset($success_msg)){
</div>';
}
$view .= '<form action="" method="post">
$view .= '<form action="" method="post" id="mass_update_form">
<div class="content-block-wrapper">
';
@@ -170,47 +197,37 @@ $soldto_dropdown = listPartner('soldto',$_SESSION['permission'],'','yes');
$shipto_dropdown = listPartner('shipto',$_SESSION['permission'],'','');
$location_dropdown = listPartner('location',$_SESSION['permission'],'','');
$view .='<div class="content-block order-details">
$view .='<div class="content-block">
<div class="block-header">
<i class="fa-solid fa-user fa-sm"></i>'.$mass_update_partners.'
</div>';
<i class="fa-solid fa-user fa-sm"></i>
</div>
<div class="form responsive-width-100" style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px;">';
// SHOW SALESID and SOLDTO ONLY TO ADMIN
if ($_SESSION['permission'] == 3 || $_SESSION['permission'] == 4){
$view .='<div class="order-detail">
<h3>'.$general_salesid.'</h3>
<p>'.$salesid_dropdown.'</p>
$view .='<div>
<label for="salesid">'.$general_salesid.'</label>
'.$salesid_dropdown.'
</div>
<div class="order-detail">
<h3>'.$general_soldto.'</h3>
<p>'.$soldto_dropdown.'</p>
<div>
<label for="soldto">'.$general_soldto.'</label>
'.$soldto_dropdown.'
</div>';
}
$view .=' <div class="order-detail">
<h3>'.$general_shipto.'</h3>
<p>'.$shipto_dropdown.'</p>
$view .=' <div>
<label for="shipto">'.$general_shipto.'</label>
'.$shipto_dropdown.'
</div>
<div class="order-detail">
<h3>'.$general_location.'</h3>
<p>'.$location_dropdown.'</p>
<div>
<label for="location">'.$general_location.'</label>
'.$location_dropdown.'
</div>
<input type="hidden" name="section" value="">
</div>';
$view .= ' <div class="content-block order-details">
<div class="block-header">
<i class="fa-solid fa-circle-info"></i></i>'.$mass_update_input.'
<div>
<label for="order_ref">'.$equipment_label11.'</label>
<input id="order_ref" type="text" name="order_ref" required>
</div>
<div class="order-detail">
<h3><label for="status">'.$equipment_label11.'</label></h3>
</div>
<div class="order-detail">
<input id="name" type="text" name="order_ref" required>
</div>
<div class="order-detail">
<h3><label for="status">'.$equipment_label3.'</label></h3>
</div>
<div class="order-detail">
<div>
<label for="status">'.$equipment_label3.'</label>
<select id="status" name="status" required>';
if ($_SESSION['permission'] == 3 || $_SESSION['permission'] == 4){
$view .= '<option value="0">'.$status0_text .'</option>
@@ -223,27 +240,29 @@ if ($_SESSION['permission'] == 3 || $_SESSION['permission'] == 4){
<option value="5">'.$status5_text .'</option>
</select>
</div>
<div class="order-detail">
<h3>'.$paste_excel_h3.'</h3><h3 id="count"><h3>
</div>
<div class="order-detail">
<textarea id="excel_data" name="excel_data" onkeydown="countLines()" style="width:100%;height:150px;" placeholder="'.$paste_excel_1.'&#10;'.$paste_excel_2.'"></textarea>
</div>
<input type="submit" id="mass_update_submit" value="<i class="fas fa-level-down-alt fa-rotate-90"></i>" onclick="return confirm(\''.$mass_update_confirm_message.'\')" class="btn">
';
$view .='
<div class="content-block">
<div class="block-header">
<i class="fa-solid fa-circle-info"></i>
</div>
';
<div class="form responsive-width-100" style="margin-top: 20px;">
<label for="excel_data">'.$paste_excel_h3.' <span id="count" style="font-weight: normal; color: #666;"></span></label>
<textarea id="excel_data" name="excel_data" onkeydown="countLines()" style="width:100%;height:200px; font-family: monospace;" placeholder="'.$paste_excel_1.'&#10;'.$paste_excel_2.'"></textarea>
<input type="hidden" name="section" value="">
</div>
</div>';
$view .= '</form>';
$view .= '</div></div>';
if ($update_allowed === 1){
$view .= '<div class="content-block">
<div class="block-header" style="margin-bottom: 40px;border-bottom: 0px;">
<i class="fa-solid fa-bars fa-sm"></i>'.$tab3.' '.$total_summary.'
<button class="btn" style="float:inline-end;" onclick="printDiv(\'excel_table\')">Print</button>
$view .= '<div class="tabs">
<a href="#"><i class="fa-solid fa-bars fa-sm"></i>'.$tab3.' '.$total_summary.'</a>
</div>
<div class="content-block tab-content" style="display: none;">
<div class="table order-table" id="excel_table">
'.($order_header ?? '' ).'
'.$output_excel_display.'
@@ -257,8 +276,26 @@ if ($update_allowed === 1){
//OUTPUT
echo $view;
// Output success modal if exists
echo $success_modal;
echo '
<script>
function closeSuccessModal() {
document.getElementById("successModal").style.display = "none";
}
// Ensure log section starts closed
document.addEventListener("DOMContentLoaded", function() {
const tabs = document.querySelectorAll(".tabs a");
const tabContents = document.querySelectorAll(".tab-content");
tabs.forEach(tab => tab.classList.remove("active"));
tabContents.forEach(content => {
content.classList.remove("active");
content.style.display = "none";
});
});
function countLines(){
let button = document.getElementById("mass_update_submit");

33
rma.php
View File

@@ -159,14 +159,7 @@ $view .= '</div>';
// ------------------------------
//
$view .= '<div class="tabs">
<a href="#" class="active">'.($rma_return_tab1 ?? 'Return reason').'</a>';
if($rma_header['servicereport_available'] == 0 ){
$view .='<a href="#">'.($rma_return_tab2 ?? 'Questions').'</a>';
}
$view .= '<a href="#">'.($general_actions ?? 'Actions').'</a>
<a href="#">'.($tab3 ?? 'Log').'</a>
<a href="#" class="active">'.($rma_return_tab1 ?? 'Return reason').'</a>
</div>';
$view .= '<div class="content-block tab-content active">
@@ -184,8 +177,9 @@ $view .= '<div class="content-block tab-content active">
</div>
</div>';
if($rma_header['servicereport_available'] == 0 ){
$view .= '<div class="content-block tab-content">
if($rma_header['servicereport_available'] == 0 ){ $view .= '<div class="tabs">
<a href="#">'.($rma_return_tab2 ?? 'Questions').'</a>
</div>'; $view .= '<div class="content-block tab-content">
<div class="form responsive-width-100">';
foreach($arrayQuestions_rma as $group){
@@ -221,18 +215,27 @@ $view .= '<div class="content-block tab-content active">
}
}
}
}
$view .= ' </div>
</div>
</form>';
</div>';
}
$view .= '<div class="content-block tab-content active">
$view .= '</form>';
$view .= '<div class="tabs">
<a href="#">'.($general_actions ?? 'Actions').'</a>
</div>';
$view .= '<div class="content-block tab-content">
<div class="form responsive-width-100">
</div>
</div>';
$view .= '<div class="content-block tab-content active">
$view .= '<div class="tabs">
<a href="#">'.($tab3 ?? 'Log').'</a>
</div>';
$view .= '<div class="content-block tab-content">
<div class="form responsive-width-100">
</div>

View File

@@ -331,16 +331,7 @@ $view .= '</div>';
// ------------------------------
//
$view .= '<div class="tabs">
<a href="#" class="active">'.($rma_return_tab1 ?? 'Return reason').'</a>';
if($rma['header']['servicereport_available'] == 0 ){
$view .='<a href="#">'.($rma_return_tab2 ?? 'Questions').'</a>';
}
$view .= '</div>';
$view .= '<div class="tabs">
<a href="#" class="active">'.$tab1.'</a>
<a href="#" class="active">'.($rma_return_tab1 ?? 'Return reason').'</a>
</div>';
$view .= '<div class="content-block tab-content active">
@@ -359,11 +350,10 @@ $view .= '<div class="content-block tab-content active">
</div>
</div>
</div>';
if($rma['header']['servicereport_available'] == 0 ){
$view .= '<div class="tabs">
<a href="#">'.$tab2.'</a>
<a href="#">'.($rma_return_tab2 ?? 'Questions').'</a>
</div>';
$view .= '<div class="content-block tab-content">
<div class="form responsive-width-100">';
if($rma['header']['servicereport_available'] == 0 ){