477 lines
19 KiB
PHP
477 lines
19 KiB
PHP
<?php
|
|
|
|
if (!defined('STAY_ALIVE')) {
|
|
header('Content-Type: application/json');
|
|
}
|
|
|
|
use Carbon\Carbon;
|
|
|
|
if (isset($_POST['paint']) || isset($_REQUEST['paint'])) {
|
|
$paint_release_number_pattern = setting("paint_release_number_pattern");
|
|
$checkNo = str_replace("{number}", get_counter($paint_release_number_pattern), $paint_release_number_pattern);
|
|
|
|
// Check if ISO+SPL pairs are provided (new format)
|
|
if (isset($_POST['iso_spool_pairs']) && !empty($_POST['iso_spool_pairs'])) {
|
|
$pairs = explode(",", $_POST['iso_spool_pairs']);
|
|
$count = 0;
|
|
|
|
foreach ($pairs as $pair) {
|
|
$pairParts = explode("|", trim($pair));
|
|
if (count($pairParts) == 2) {
|
|
$isoNumber = trim($pairParts[0]);
|
|
$spoolNumber = trim($pairParts[1]);
|
|
|
|
if (!empty($isoNumber) && !empty($spoolNumber)) {
|
|
$result = db("weld_logs")
|
|
->where("iso_number", $isoNumber)
|
|
->where("spool_number", $spoolNumber)
|
|
->whereNotIn("spool_status", ['Completed'])
|
|
->whereIn("spool_status", ['Paint', 'Spool Release', 'NDT Release', 'QC', 'Manufacturing'])
|
|
->update([
|
|
"spool_paint_check" => u() ? (u() ? u()->id : 0) : 0,
|
|
"paint_release_no" => $checkNo,
|
|
"paint_release_date" => simdi(),
|
|
"spool_status" => "Completed"
|
|
]);
|
|
$count += $result;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Include paint follow-up updater
|
|
ob_start();
|
|
// echo view('admin.type.spool-release.paint-follow-up-updater')->render();
|
|
ob_end_clean();
|
|
|
|
// Dispatch cache blade views
|
|
dispatchCacheBladeViews();
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'message' => $count . ' row sign check affected',
|
|
'count' => $count
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
}
|
|
// Fallback to old format for backward compatibility
|
|
elseif (isset($_POST['iso_number']) && !empty($_POST['iso_number'])) {
|
|
$spoolNumbers = explode(",", $_POST['spool_number']);
|
|
$isoNumbers = explode(",", $_POST['iso_number']);
|
|
$count = 0;
|
|
foreach ($isoNumbers as $isoNumber) {
|
|
|
|
$maxAttempts = 5;
|
|
$attempt = 0;
|
|
$result = db("weld_logs")
|
|
->where("iso_number", $isoNumber)
|
|
->where("spool_number", $spoolNumbers[$count])
|
|
->whereNotIn("spool_status", ['Completed'])
|
|
->whereIn("spool_status", ['Paint', 'Spool Release', 'NDT Release', 'QC', 'Manufacturing', 'Weld Complete'])
|
|
->update([
|
|
"spool_paint_check" => u() ? (u() ? u()->id : 0) : 0,
|
|
"paint_release_no" => $checkNo,
|
|
"paint_release_date" => simdi(),
|
|
"spool_status" => "Completed"
|
|
]);
|
|
|
|
$count++;
|
|
}
|
|
|
|
// Include paint follow-up updater
|
|
ob_start();
|
|
echo view('admin.type.spool-release.paint-follow-up-updater')->render();
|
|
ob_end_clean();
|
|
|
|
// Dispatch cache blade views
|
|
dispatchCacheBladeViews();
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'message' => $count . ' row sign check affected',
|
|
'count' => $count
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
} else {
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => 'ISO number is required in POST data'
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
}
|
|
|
|
} else {
|
|
// Handle NDT Release
|
|
if (isset($_POST['ndt_release']) && !empty($_POST['ndt_release'])) {
|
|
$ndt_release_number_pattern = setting("ndt_release_number_pattern");
|
|
$newReleaseNo = str_replace("{number}", get_counter($ndt_release_number_pattern), $ndt_release_number_pattern);
|
|
|
|
// Check if ISO+SPL pairs are provided (new format)
|
|
if (isset($_POST['iso_spool_pairs']) && !empty($_POST['iso_spool_pairs'])) {
|
|
$pairs = explode(",", $_POST['iso_spool_pairs']);
|
|
$totalAffectedRows = 0;
|
|
|
|
foreach ($pairs as $pair) {
|
|
$pairParts = explode("|", trim($pair));
|
|
if (count($pairParts) == 2) {
|
|
$isoNumber = trim($pairParts[0]);
|
|
$spoolNumber = trim($pairParts[1]);
|
|
|
|
if (!empty($isoNumber) && !empty($spoolNumber)) {
|
|
$weldInfos = db("weld_logs");
|
|
$weldInfos = $weldInfos->where("iso_number", $isoNumber);
|
|
$weldInfos = $weldInfos->where("spool_number", $spoolNumber);
|
|
$weldInfos = $weldInfos->whereNotNull("spool_ndt_check_no");
|
|
$weldInfos = $weldInfos->whereNull("ndt_release_no");
|
|
|
|
$affectedRows = $weldInfos->update([
|
|
"ndt_release_no" => $newReleaseNo,
|
|
"ndt_release_check" => u() ? (u() ? u()->id : 0) : 0,
|
|
"ndt_release_date" => Carbon::now(),
|
|
'spool_status' => "Paint",
|
|
]);
|
|
|
|
$totalAffectedRows += $affectedRows;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Dispatch cache blade views
|
|
dispatchCacheBladeViews();
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'message' => $totalAffectedRows . ' row affected',
|
|
'count' => $totalAffectedRows
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
}
|
|
// Fallback to old format for backward compatibility
|
|
else {
|
|
$weldInfos = db("weld_logs");
|
|
|
|
// Apply filters from POST data
|
|
$get = $_POST;
|
|
unset($get['ndt_release'], $get['ndt_paint_release'], $get['page'], $get['rollback'], $get['_token'], $get['checklist-ok'], $get['iso_spool_pairs']);
|
|
|
|
foreach ($get as $col => $value) {
|
|
if ($col == "iso_number") {
|
|
$value = explode(",", $value);
|
|
}
|
|
if ($col == "spool_number") {
|
|
$value = explode(",", $value);
|
|
}
|
|
|
|
if ($value != "") {
|
|
if (is_array($value)) {
|
|
$weldInfos = $weldInfos->whereIn($col, $value);
|
|
} else {
|
|
$weldInfos = $weldInfos->where($col, trim($value));
|
|
}
|
|
}
|
|
}
|
|
|
|
$ndtReleaseUpdate = $weldInfos;
|
|
$ndtReleaseUpdate = $ndtReleaseUpdate->whereNotNull("spool_ndt_check_no");
|
|
$ndtReleaseUpdate = $ndtReleaseUpdate->whereNull("ndt_release_no");
|
|
$affectedRows = $ndtReleaseUpdate->update([
|
|
"ndt_release_no" => $newReleaseNo,
|
|
"ndt_release_check" => u() ? (u() ? u()->id : 0) : 0,
|
|
"ndt_release_date" => Carbon::now(),
|
|
'spool_status' => "Paint",
|
|
]);
|
|
|
|
// Dispatch cache blade views
|
|
dispatchCacheBladeViews();
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'message' => $affectedRows . ' row affected',
|
|
'count' => $affectedRows
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
}
|
|
}
|
|
|
|
// Handle NDT & Paint Release
|
|
if (isset($_POST['ndt_paint_release']) && !empty($_POST['ndt_paint_release'])) {
|
|
$paint_release_number_pattern = setting("paint_release_number_pattern");
|
|
$totalAffectedRows = 0;
|
|
|
|
// Check if ISO+SPL pairs are provided (new format)
|
|
if (isset($_POST['iso_spool_pairs']) && !empty($_POST['iso_spool_pairs'])) {
|
|
$pairs = explode(",", $_POST['iso_spool_pairs']);
|
|
|
|
foreach ($pairs as $pair) {
|
|
$pairParts = explode("|", trim($pair));
|
|
if (count($pairParts) == 2) {
|
|
$isoNumber = trim($pairParts[0]);
|
|
$spoolNumber = trim($pairParts[1]);
|
|
|
|
if (!empty($isoNumber) && !empty($spoolNumber)) {
|
|
$newRequestNo = $paint_release_number_pattern;
|
|
$newRequestNo = str_replace("{number}", get_counter($newRequestNo), $newRequestNo);
|
|
|
|
$whereData = [
|
|
'iso_number' => $isoNumber,
|
|
'spool_number' => $spoolNumber
|
|
];
|
|
|
|
$checkPaintingCycle = db("weld_logs")
|
|
->where($whereData)
|
|
->select("painting_cycle")
|
|
->first();
|
|
|
|
$spoolStatus = (!empty($checkPaintingCycle) && !empty($checkPaintingCycle->painting_cycle)) ? "Paint" : "Completed";
|
|
|
|
$updateData = [
|
|
"ndt_release_no" => $newRequestNo,
|
|
"ndt_release_check" => u() ? (u() ? u()->id : 0) : 0,
|
|
"ndt_release_date" => Carbon::now(),
|
|
'spool_status' => $spoolStatus,
|
|
];
|
|
|
|
$ndtReleaseUpdate = db("weld_logs");
|
|
$ndtReleaseUpdate = $ndtReleaseUpdate->where($whereData);
|
|
$ndtReleaseUpdate = $ndtReleaseUpdate->whereNotNull("spool_ndt_check_no");
|
|
$ndtReleaseUpdate = $ndtReleaseUpdate->whereNull("ndt_release_date");
|
|
$affectedRows = $ndtReleaseUpdate->update($updateData);
|
|
$totalAffectedRows += $affectedRows;
|
|
|
|
// Include paint follow-up updater (capture ALL output to prevent HTML output)
|
|
if ($affectedRows > 0) {
|
|
try {
|
|
// Start output buffering to capture any HTML output (including from bilgi() function)
|
|
// Use multiple levels to ensure we catch everything
|
|
ob_start();
|
|
ob_start();
|
|
// Render the view - this will execute bilgi() and capture its output
|
|
$rendered = view('admin.type.spool-release.paint-follow-up-updater')->render();
|
|
// Clean all output buffers
|
|
ob_end_clean();
|
|
ob_end_clean();
|
|
} catch (\Exception $e) {
|
|
// Silently catch any errors and clean all output buffers
|
|
while (ob_get_level() > 0) {
|
|
ob_end_clean();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// Fallback to old format for backward compatibility
|
|
elseif (isset($_POST['iso_number']) && !empty($_POST['iso_number'])) {
|
|
$isoNumbers = explode(",", $_POST['iso_number']);
|
|
$spoolNumbers = [];
|
|
if (isset($_POST['spool_number']) && !empty($_POST['spool_number'])) {
|
|
$spoolNumbers = explode(",", $_POST['spool_number']);
|
|
}
|
|
|
|
// Calculate total updates - if spool_numbers exist, use min, otherwise use iso_numbers count
|
|
$totalUpdates = count($isoNumbers);
|
|
if (count($spoolNumbers) > 0) {
|
|
$totalUpdates = min(count($isoNumbers), count($spoolNumbers));
|
|
}
|
|
|
|
for ($i = 0; $i < $totalUpdates; $i++) {
|
|
$newRequestNo = $paint_release_number_pattern;
|
|
$newRequestNo = str_replace("{number}", get_counter($newRequestNo), $newRequestNo);
|
|
$whereData = [
|
|
'iso_number' => trim($isoNumbers[$i]),
|
|
];
|
|
|
|
if (isset($spoolNumbers[$i]) && !empty($spoolNumbers[$i])) {
|
|
$whereData['spool_number'] = trim($spoolNumbers[$i]);
|
|
}
|
|
|
|
$checkPaintingCycle = db("weld_logs")
|
|
->where($whereData)
|
|
->select("painting_cycle")
|
|
->first();
|
|
|
|
$spoolStatus = (!empty($checkPaintingCycle) && !empty($checkPaintingCycle->painting_cycle)) ? "Paint" : "Completed";
|
|
|
|
$updateData = [
|
|
"ndt_release_no" => $newRequestNo,
|
|
"ndt_release_check" => u() ? (u() ? u()->id : 0) : 0,
|
|
"ndt_release_date" => Carbon::now(),
|
|
'spool_status' => $spoolStatus,
|
|
];
|
|
|
|
$ndtReleaseUpdate = db("weld_logs");
|
|
$ndtReleaseUpdate = $ndtReleaseUpdate->where($whereData);
|
|
$ndtReleaseUpdate = $ndtReleaseUpdate->whereNotNull("spool_ndt_check_no");
|
|
$ndtReleaseUpdate = $ndtReleaseUpdate->whereNull("ndt_release_date");
|
|
$affectedRows = $ndtReleaseUpdate->update($updateData);
|
|
$totalAffectedRows += $affectedRows;
|
|
|
|
// Include paint follow-up updater (capture ALL output to prevent HTML output)
|
|
if ($affectedRows > 0) {
|
|
try {
|
|
$isoNumber = trim($isoNumbers[$i]);
|
|
// Start output buffering to capture any HTML output (including from bilgi() function)
|
|
// Use multiple levels to ensure we catch everything
|
|
ob_start();
|
|
ob_start();
|
|
// Render the view - this will execute bilgi() and capture its output
|
|
$rendered = view('admin.type.spool-release.paint-follow-up-updater')->render();
|
|
// Clean all output buffers
|
|
ob_end_clean();
|
|
ob_end_clean();
|
|
} catch (\Exception $e) {
|
|
// Silently catch any errors and clean all output buffers
|
|
while (ob_get_level() > 0) {
|
|
ob_end_clean();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Dispatch cache blade views
|
|
dispatchCacheBladeViews();
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'message' => $totalAffectedRows . ' row affected',
|
|
'count' => $totalAffectedRows
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
}
|
|
|
|
// Handle Checklist OK (existing functionality)
|
|
$spool_release_check_number_pattern = setting("spool_release_check_number_pattern");
|
|
$checkNo = str_replace("{number}", get_counter($spool_release_check_number_pattern), $spool_release_check_number_pattern);
|
|
if (isset($_POST['checklist-ok'])) {
|
|
// Check if ISO+SPL pairs are provided (new format)
|
|
if (isset($_POST['iso_spool_pairs']) && !empty($_POST['iso_spool_pairs'])) {
|
|
$pairs = explode(",", $_POST['iso_spool_pairs']);
|
|
$totalAffectedRows = 0;
|
|
|
|
foreach ($pairs as $pair) {
|
|
$pairParts = explode("|", trim($pair));
|
|
if (count($pairParts) == 2) {
|
|
$isoNumber = trim($pairParts[0]);
|
|
$spoolNumber = trim($pairParts[1]);
|
|
|
|
if (!empty($isoNumber) && !empty($spoolNumber)) {
|
|
$result = db("weld_logs")
|
|
->where("iso_number", $isoNumber)
|
|
->where("spool_number", $spoolNumber)
|
|
->whereIn("spool_status", ["Spool Release", "Manufacturing", "Weld Complete"])
|
|
->update([
|
|
"spool_ndt_check" => u() ? (u() ? u()->id : 0) : 0,
|
|
"spool_ndt_check_no" => $checkNo,
|
|
"spool_ndt_check_date" => simdi(),
|
|
"spool_status" => "NDT Release"
|
|
]);
|
|
|
|
$totalAffectedRows += $result;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Include spool document generate
|
|
ob_start();
|
|
echo view('admin.type.spool-release.spool-document-generate')->render();
|
|
ob_end_clean();
|
|
|
|
// Include spool status changer
|
|
ob_start();
|
|
echo view('cron.spool-status-changer', [
|
|
'iso_spool_pairs' => $_POST['iso_spool_pairs']
|
|
])->render();
|
|
ob_end_clean();
|
|
|
|
// Dispatch cache blade views
|
|
dispatchCacheBladeViews();
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'message' => $totalAffectedRows . ' row sign check',
|
|
'count' => $totalAffectedRows
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
}
|
|
// Fallback to old format for backward compatibility
|
|
elseif (isset($_POST['iso_number']) && !empty($_POST['iso_number'])) {
|
|
$isoNumbers = explode(",", $_POST['iso_number']);
|
|
$spoolNumbers = explode(",", $_POST['spool_number']);
|
|
|
|
$totalUpdates = min(count($isoNumbers), count($spoolNumbers));
|
|
$totalAffectedRows = 0;
|
|
|
|
for ($i = 0; $i < $totalUpdates; $i++) {
|
|
$currentIso = trim($isoNumbers[$i]);
|
|
$currentSpool = trim($spoolNumbers[$i]);
|
|
$result = db("weld_logs")
|
|
->where("iso_number", $currentIso)
|
|
->where("spool_number", $currentSpool)
|
|
->whereIn("spool_status", ["Spool Release", "Manufacturing", "Weld Complete"])
|
|
->update([
|
|
"spool_ndt_check" => u() ? (u() ? u()->id : 0) : 0,
|
|
"spool_ndt_check_no" => $checkNo,
|
|
"spool_ndt_check_date" => simdi(),
|
|
"spool_status" => "NDT Release"
|
|
]);
|
|
|
|
$totalAffectedRows += $result;
|
|
}
|
|
|
|
// Include spool document generate
|
|
ob_start();
|
|
echo view('admin.type.spool-release.spool-document-generate')->render();
|
|
ob_end_clean();
|
|
|
|
// Include spool status changer
|
|
ob_start();
|
|
echo view('cron.spool-status-changer', [
|
|
'iso_number' => $_POST['iso_number'],
|
|
'spool_number' => $_POST['spool_number']
|
|
])->render();
|
|
ob_end_clean();
|
|
|
|
// Dispatch cache blade views
|
|
dispatchCacheBladeViews();
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'message' => $totalAffectedRows . ' row sign check',
|
|
'count' => $totalAffectedRows
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
} else {
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => 'ISO number is required in POST data'
|
|
]);
|
|
exit();
|
|
}
|
|
} else {
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => 'No valid action specified'
|
|
]);
|
|
if (defined('STAY_ALIVE'))
|
|
return;
|
|
exit();
|
|
}
|
|
}
|
|
?>
|