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

@@ -1158,14 +1158,22 @@ function sortTextVal(a, b) {
// Print DIV // Print DIV
//------------------------------------------ //------------------------------------------
function printDiv(div) { function printDiv(div) {
var divContents = document.getElementById(div).innerHTML; var divContents = document.getElementById(div).innerHTML;
var a = window.open('', '', ''); var printWindow = window.open('', '', 'height=600,width=800');
a.document.write('<html>'); printWindow.document.write('<html><head><title>Print</title>');
a.document.write('<body > '); printWindow.document.write('<style>');
a.document.write(divContents); printWindow.document.write('body { font-family: Arial, sans-serif; margin: 20px; }');
a.document.write('</body></html>'); printWindow.document.write('table { border-collapse: collapse; width: 100%; }');
a.document.close(); printWindow.document.write('th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }');
a.print(); 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,41 +129,42 @@ $view .='<div class="content-block order-details">
</div>'; </div>';
$view .= '</div>'; $view .= '</div>';
$view .= '<div class="content-block">
//Retrieve questions and awnsers
if ($version == 0){
$view .= '<div class="content-block">
<div class="block-header"> <div class="block-header">
<i class="fa-solid fa-bars fa-sm"></i>'.$cartest_questions_text.' <i class="fa-solid fa-bars fa-sm"></i>'.$cartest_questions_text.'
</div> </div>
<div class="table order-table"> <div class="table order-table">
<table>'; <table>';
//Retrieve questions and awnsers
if ($version == 0){
foreach ($cartest_questions as $key => $value){ foreach ($cartest_questions as $key => $value){
$view .= '<tr> $view .= '<tr>
<td style="width:25%;">'.$key.'</td> <td style="width:25%;">'.$key.'</td>
<td>'.((!empty($value)|| $value !='')?$value:$not_specified).'</td> <td>'.((!empty($value)|| $value !='')?$value:$not_specified).'</td>
</tr>'; </tr>';
} }
} else { $view .= '
</table>
</div>
</div>
';
} else {
//CREATE OUTPUT BASED ON ARRAY //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){ foreach($arrayQuestions_cartest as $group){
if ($group['Group_sequence'] == 1){ 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"> $view .= '<div class="content-block tab-content active">
<div class="form responsive-width-100">'; <div class="form responsive-width-100">';
} else { } else {
$view .= '<div class="tabs">
<a href="#">'.$group['Group'].'</a>
</div>';
$view .= '<div class="content-block tab-content"> $view .= '<div class="content-block tab-content">
<div class="form responsive-width-100">'; <div class="form responsive-width-100">';
} }
@@ -198,13 +199,7 @@ $view .= '<div class="content-block">
$view .= ' </div> $view .= ' </div>
</div>'; </div>';
} }
}
}
$view .= '
</table>
</div>
</div>
';
if (isset($cartest_datapoints) && $cartest_datapoints !=''){ if (isset($cartest_datapoints) && $cartest_datapoints !=''){
$view .= '<div class="content-block"> $view .= '<div class="content-block">

View File

@@ -242,17 +242,6 @@ $view .= '</div>';
//BUILD TO INPUT FORM BASED ON ARRAY //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){ foreach($arrayQuestions_cartest as $group){
if ($group['Group_sequence'] == 1){ 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 // Handle success messages
if (isset($_GET['success_msg'])) { if (isset($_GET['success_msg'])) {
if ($_GET['success_msg'] == 1) { if ($_GET['success_msg'] == 1) {
@@ -147,6 +168,12 @@ $view = '
<a href="index.php?page=equipments" class="btn alt mar-right-2">←</a> <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>'; $view .= '</div>';
if (isset($success_msg)){ if (isset($success_msg)){
@@ -157,7 +184,7 @@ if (isset($success_msg)){
</div>'; </div>';
} }
$view .= '<form action="" method="post"> $view .= '<form action="" method="post" id="mass_update_form">
<div class="content-block-wrapper"> <div class="content-block-wrapper">
'; ';
@@ -170,80 +197,72 @@ $soldto_dropdown = listPartner('soldto',$_SESSION['permission'],'','yes');
$shipto_dropdown = listPartner('shipto',$_SESSION['permission'],'',''); $shipto_dropdown = listPartner('shipto',$_SESSION['permission'],'','');
$location_dropdown = listPartner('location',$_SESSION['permission'],'',''); $location_dropdown = listPartner('location',$_SESSION['permission'],'','');
$view .='<div class="content-block order-details"> $view .='<div class="content-block">
<div class="block-header"> <div class="block-header">
<i class="fa-solid fa-user fa-sm"></i>'.$mass_update_partners.' <i class="fa-solid fa-user fa-sm"></i>
</div>'; </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 // SHOW SALESID and SOLDTO ONLY TO ADMIN
if ($_SESSION['permission'] == 3 || $_SESSION['permission'] == 4){ if ($_SESSION['permission'] == 3 || $_SESSION['permission'] == 4){
$view .='<div class="order-detail"> $view .='<div>
<h3>'.$general_salesid.'</h3> <label for="salesid">'.$general_salesid.'</label>
<p>'.$salesid_dropdown.'</p> '.$salesid_dropdown.'
</div> </div>
<div class="order-detail"> <div>
<h3>'.$general_soldto.'</h3> <label for="soldto">'.$general_soldto.'</label>
<p>'.$soldto_dropdown.'</p> '.$soldto_dropdown.'
</div>'; </div>';
} }
$view .=' <div class="order-detail"> $view .=' <div>
<h3>'.$general_shipto.'</h3> <label for="shipto">'.$general_shipto.'</label>
<p>'.$shipto_dropdown.'</p> '.$shipto_dropdown.'
</div> </div>
<div class="order-detail"> <div>
<h3>'.$general_location.'</h3> <label for="location">'.$general_location.'</label>
<p>'.$location_dropdown.'</p> '.$location_dropdown.'
</div> </div>
<input type="hidden" name="section" value=""> <div>
</div>'; <label for="order_ref">'.$equipment_label11.'</label>
<input id="order_ref" type="text" name="order_ref" required>
$view .= ' <div class="content-block order-details">
<div class="block-header">
<i class="fa-solid fa-circle-info"></i></i>'.$mass_update_input.'
</div> </div>
<div class="order-detail"> <div>
<h3><label for="status">'.$equipment_label11.'</label></h3> <label for="status">'.$equipment_label3.'</label>
</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">
<select id="status" name="status" required>'; <select id="status" name="status" required>';
if ($_SESSION['permission'] == 3 || $_SESSION['permission'] == 4){ if ($_SESSION['permission'] == 3 || $_SESSION['permission'] == 4){
$view .= '<option value="0">'.$status0_text .'</option> $view .= '<option value="0">'.$status0_text .'</option>
<option value="1">'.$status1_text .'</option> <option value="1">'.$status1_text .'</option>
<option value="2">'.$status2_text .'</option>'; <option value="2">'.$status2_text .'</option>';
} }
$view .= ' $view .= '
<option value="3" selected>'.$status3_text .'</option> <option value="3" selected>'.$status3_text .'</option>
<option value="4">'.$status4_text .'</option> <option value="4">'.$status4_text .'</option>
<option value="5">'.$status5_text .'</option> <option value="5">'.$status5_text .'</option>
</select> </select>
</div> </div>
<div class="order-detail">
<h3>'.$paste_excel_h3.'</h3><h3 id="count"><h3>
</div> </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> </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">
'; <div class="content-block">
$view .=' <div class="block-header">
<i class="fa-solid fa-circle-info"></i>
</div> </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 .= '</form>';
$view .= '</div></div>'; $view .= '</div></div>';
if ($update_allowed === 1){ if ($update_allowed === 1){
$view .= '<div class="content-block"> $view .= '<div class="tabs">
<div class="block-header" style="margin-bottom: 40px;border-bottom: 0px;"> <a href="#"><i class="fa-solid fa-bars fa-sm"></i>'.$tab3.' '.$total_summary.'</a>
<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>
</div> </div>
<div class="content-block tab-content" style="display: none;">
<div class="table order-table" id="excel_table"> <div class="table order-table" id="excel_table">
'.($order_header ?? '' ).' '.($order_header ?? '' ).'
'.$output_excel_display.' '.$output_excel_display.'
@@ -257,8 +276,26 @@ if ($update_allowed === 1){
//OUTPUT //OUTPUT
echo $view; echo $view;
// Output success modal if exists
echo $success_modal;
echo ' echo '
<script> <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(){ function countLines(){
let button = document.getElementById("mass_update_submit"); let button = document.getElementById("mass_update_submit");

35
rma.php
View File

@@ -158,15 +158,8 @@ $view .= '</div>';
//BUILD TO INPUT FORM BASED ON ARRAY //BUILD TO INPUT FORM BASED ON ARRAY
// ------------------------------ // ------------------------------
// //
$view .='<div class="tabs"> $view .= '<div class="tabs">
<a href="#" class="active">'.($rma_return_tab1 ?? 'Return reason').'</a>'; <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>
</div>'; </div>';
$view .= '<div class="content-block tab-content active"> $view .= '<div class="content-block tab-content active">
@@ -184,8 +177,9 @@ $view .= '<div class="content-block tab-content active">
</div> </div>
</div>'; </div>';
if($rma_header['servicereport_available'] == 0 ){ if($rma_header['servicereport_available'] == 0 ){ $view .= '<div class="tabs">
$view .= '<div class="content-block tab-content"> <a href="#">'.($rma_return_tab2 ?? 'Questions').'</a>
</div>'; $view .= '<div class="content-block tab-content">
<div class="form responsive-width-100">'; <div class="form responsive-width-100">';
foreach($arrayQuestions_rma as $group){ foreach($arrayQuestions_rma as $group){
@@ -221,18 +215,27 @@ $view .= '<div class="content-block tab-content active">
} }
} }
} }
}
$view .= ' </div> $view .= ' </div>
</div> </div>';
</form>'; }
$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 class="form responsive-width-100">
</div> </div>
</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 class="form responsive-width-100">
</div> </div>

View File

@@ -330,17 +330,8 @@ $view .= '</div>';
//BUILD TO INPUT FORM BASED ON ARRAY //BUILD TO INPUT FORM BASED ON ARRAY
// ------------------------------ // ------------------------------
// //
$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"> $view .= '<div class="tabs">
<a href="#" class="active">'.$tab1.'</a> <a href="#" class="active">'.($rma_return_tab1 ?? 'Return reason').'</a>
</div>'; </div>';
$view .= '<div class="content-block tab-content active"> $view .= '<div class="content-block tab-content active">
@@ -359,11 +350,10 @@ $view .= '<div class="content-block tab-content active">
</div> </div>
</div> </div>
</div>'; </div>';
if($rma['header']['servicereport_available'] == 0 ){
$view .= '<div class="tabs"> $view .= '<div class="tabs">
<a href="#">'.$tab2.'</a> <a href="#">'.($rma_return_tab2 ?? 'Questions').'</a>
</div>'; </div>';
$view .= '<div class="content-block tab-content"> $view .= '<div class="content-block tab-content">
<div class="form responsive-width-100">'; <div class="form responsive-width-100">';
if($rma['header']['servicereport_available'] == 0 ){ if($rma['header']['servicereport_available'] == 0 ){