Files
sam-kd/output/viewBoard.php
hskwon aca1767eb9 초기 커밋: 5130 레거시 시스템
- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경
- DB 연결 하드코딩 → .env 기반으로 변경
- MySQL strict mode DATE 오류 수정
2025-12-10 20:14:31 +09:00

351 lines
13 KiB
PHP

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
// SUS 304 스테인리스 강의 비중은 일반적으로 약 7.93 g/cm³입니다.
// EGI(Electro Galvanized Iron) 1.2T의 비중은 일반적으로 7.85 g/cm³로 간주됩니다.
$title_message = '절곡 작업일지';
$tablename = 'output';
$item ='절곡 작업일지';
include $_SERVER['DOCUMENT_ROOT'] . '/load_header.php';
// 품질담당자 및 관리자인 경우 권한 부여
$QCadmin = false ;
if($user_name=='이세희' || $user_name=='개발자' || $user_name=='함신옥' || $user_name=='이경호' || $user_name=='노완호' )
$QCadmin = true ;
?>
<title> <?=$title_message?> </title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<?php
// JavaScript에서 전달된 변수들 받기
$num = isset($_REQUEST['num']) ? $_REQUEST['num'] : '';
$lotNum = isset($_REQUEST['lotNum']) ? $_REQUEST['lotNum'] : '';
$outdate = isset($_REQUEST['outdate']) ? $_REQUEST['outdate'] : ''; // 출고일
function calWeight($calItem, $calWidth, $calHeight) {
// 비중 설정 (g/cm³ 단위)
preg_match('/\d+(\.\d+)?/', $calItem, $matches);
$number = isset($matches[0]) ? $matches[0] : null;
$density = 0;
if (strpos($calItem, 'SUS') !== false) {
$density = 7.93; // SUS 304 비중
} elseif (strpos($calItem, 'EGI') !== false) {
$density = 7.85; // EGI 비중
} else {
return "지원되지 않는 소재입니다.";
}
// 두께도 곱한다. 면적 계산 (mm^2 -> cm^2 변환: 1cm^2 = 100mm^2)
$area_cm2 = ($number * $calWidth * $calHeight) / 1000; // mm² 단위로 변환
// 무게 계산 (g 단위) -> kg로 변환
$weight_g = $area_cm2 * $density; // g 단위
$weight_kg = $weight_g / 1000; // kg 단위로 변환
// 누적 계산을 위한 static 변수
static $SUS_total = 0;
static $EGI_total = 0;
// 누적 합계 처리
if (strpos($calItem, 'SUS') !== false) {
$SUS_total += $weight_kg;
} elseif (strpos($calItem, 'EGI') !== false) {
$EGI_total += $weight_kg;
}
// 소수점 둘째 자리까지 포맷팅
return [
'current_weight' => number_format($weight_kg, 2),
'SUS_total' => number_format($SUS_total, 2),
'EGI_total' => number_format($EGI_total, 2)
];
}
function getSLengthCode($length, $category) {
switch ($category) {
case '연기차단재50':
switch ($length) {
case '3000':
return '53';
case '4000':
return '54';
default:
return null; // 해당하는 값이 없을 경우
}
case '연기차단재80':
switch ($length) {
case '3000':
return '83';
case '4000':
return '84';
default:
return null; // 해당하는 값이 없을 경우
}
case '기타':
switch ($length) {
case '1219':
return '12';
case '2438':
return '24';
case '3000':
return '30';
case '3500':
return '35';
case '4000':
return '40';
case '4150':
return '41';
case '4200':
return '42';
case '4300':
return '43';
default:
return null; // 해당하는 값이 없을 경우
}
default:
return null; // 카테고리가 없는 경우
}
}
// 출고일이 존재할 경우에만 다음날 계산
if ($outdate) {
// 출고일을 DateTime 객체로 변환
$date = new DateTime($outdate);
// 1일 더하기
$date->modify('+1 day');
// 형식화된 날짜 (예: Y-m-d 형식)로 출력
$outdateplusone = $date->format('Y-m-d');
} else {
// 출고일이 없을 경우 기본값
$outdateplusone = '';
}
$orderdate = isset($_REQUEST['orderdate']) ? $_REQUEST['orderdate'] : ''; // 발주일
$prodCode = isset($_REQUEST['prodCode']) ? $_REQUEST['prodCode'] : ''; // prodCode 받기
$warrantyNum = isset($_REQUEST['warrantyNum']) ? $_REQUEST['warrantyNum'] : ''; // warrantyNum 받기
// 추가된 변수 받기
$delivery = isset($_REQUEST['delivery']) ? $_REQUEST['delivery'] : ''; // 배송 옵션 받기
$outworkplace = isset($_REQUEST['outworkplace']) ? $_REQUEST['outworkplace'] : ''; // 출고 작업장 받기
$outputplace = isset($_REQUEST['outputplace']) ? $_REQUEST['outputplace'] : ''; // 배송 주소지
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
//require_once($_SERVER['DOCUMENT_ROOT'] . "/estimate/fetch_unitprice.php");
$pdo = db_connect();
try {
$sql = "select * from {$DB}.{$tablename} where num = ? ";
$stmh = $pdo->prepare($sql);
$stmh->bindValue(1, $num, PDO::PARAM_STR);
$stmh->execute();
$count = $stmh->rowCount();
if ($count < 1) {
print "검색결과가 없습니다.<br>";
} else {
$row = $stmh->fetch(PDO::FETCH_ASSOC);
include "_row.php";
// output_extra 테이블에서 데이터 불러오기
require_once $_SERVER['DOCUMENT_ROOT'] . '/output/load_output_extraTable.php';
// $prodCode 값에 따라 $prodItem 값 설정
if ($prodCode === "KSE01" || $prodCode === "KSS01") {
$prodItem = "철재";
} else {
$prodItem = "철재";
}
}
} catch (PDOException $Exception) {
print "오류: " . $Exception->getMessage();
}
// JSON 문자열을 PHP 배열로 디코딩합니다.
//스크린발주서 읽기
$eList = json_decode($eList_slat, true);
// 행의 수는 배열의 크기와 동일하므로, count() 함수를 사용하여 구합니다.
$surang = count($eList);
// 데이터베이스에서 recordbending 컬럼 값을 가져온 후 디코딩
$recordbending = isset($recordbending) ? json_decode($recordbending, true) : [];
// print_r($recordbending);
// JSON 데이터를 JavaScript 변수로 변환
echo "<script>";
echo "var recordbendingData = " . json_encode($recordbending) . ";";
echo "</script>";
// 행의 수를 출력하거나 활용할 수 있습니다.
// echo "행의 수: " . $surang . "<br>";
$THscreenSu = $surang + 2 ;
// 디코딩된 데이터가 배열인지 확인합니다.
if (!is_array($eList)) {
echo "데이터가 정상적이지 않습니다. 확인바랍니다.";
exit;
}
else {
foreach ($eList as $item) {
$prodcode = $item['col4'];
$GuiderailType = $item['col6'];
$FinishMat = $item['col7'];
$prodname = '';
}
}
$indateStr = date("m/d", strtotime($indate));
$todayStr = date("m/d");
?>
<?php include $_SERVER['DOCUMENT_ROOT'] . '/output/mymodal.php'; ?>
<div class="container mt-2">
<div class="d-flex align-items-center justify-content-end mt-1 m-2">
<button class="btn btn-danger btn-sm me-1 ms-1 viewPlateBtn" > <i class="bi bi-textarea"></i> 절곡바라시 보기 </button>
<button class="btn btn-dark btn-sm me-1 ms-1 saveData" > <i class="bi bi-floppy2-fill"></i> 서버 저장 </button>
<button class="btn btn-dark btn-sm me-1 ms-1" onclick="generatePDF()"> PDF 저장 </button>
<!-- <button class="btn btn-dark btn-sm me-1" onclick="sendmail();"> <i class="bi bi-envelope-arrow-up"></i> 전송 </button> -->
<button class="btn btn-secondary btn-sm me-1 ms-1" onclick="self.close();"> <i class="bi bi-x-lg"></i> 닫기 </button>&nbsp;
</div>
</div>
<form id="board_form" name="board_form" method="post" enctype="multipart/form-data" onkeydown="return captureReturnKey(event)" >
<input type="hidden" id="mode" name="mode" value="<?= isset($mode) ? $mode : '' ?>">
<input type="hidden" id="num" name="num" value="<?= isset($num) ? $num : '' ?>">
<input type="hidden" id="user_name" name="user_name" value="<?= isset($user_name) ? $user_name : '' ?>">
<input type="hidden" id="update_log" name="update_log" value="<?= isset($update_log) ? $update_log : NULL ?>">
<input type="hidden" id="tablename" name="tablename" value="<?= isset($tablename) ? $tablename : '' ?>">
<input type="hidden" id="item_name" name="item_name" value="<?= isset($item_name) ? $item_name : '' ?>">
<input type="hidden" id="recordbending" name="recordbending">
<div id="content-to-print">
<br>
<div class="container mt-3">
<div class="row m-1">
<div class="d-flex align-items-center justify-content-center">
<table class="table table-bordered" style="border-collapse: collapse;">
<thead>
<tr>
<th colspan="2" class="text-center align-middle lightgray" style="width:33%;">신 청 업 체</th>
<th colspan="2" class="text-center align-middle lightgray" style="width:33%;">신 청 내 용</th>
</tr>
<tr>
<th class="text-center align-middle lightgray">발주일</th>
<th class="text-center"><?=specialDate($orderdate)?></th>
<th class="text-center align-middle lightgray">현 장 명</th>
<th class="text-center text-primary fw-bold"><?=$outworkplace?> </th>
</tr>
<tr>
<th class="text-center align-middle lightgray">업체명</th>
<th class="text-center"><?=$secondord?></th>
<th class="text-center align-middle lightgray">출고일자</th>
<th colspan="1" class="text-center text-secondary fw-bold"><?=$outdate?> </th>
</tr>
<tr>
<th class="text-center align-middle lightgray">담당자</th>
<th class="text-center"><?=$orderman?></th>
<th class="text-center align-middle yellowBold">제품 LOT NO</th>
<th class="text-center fw-bold text-primary"><?=$lotNum?></th>
</tr>
<tr>
<th class="text-center align-middle lightgray">연락처</th>
<th class="text-center text-dark fw-bold"><?=$_SESSION['hp']?> </th>
<th class="text-center align-middle lightgray">생산담당자</th>
<th class="text-center"> <?=$orderman?> </th>
</tr>
<tr>
<th class="text-center align-middle lightgray" >제품명 </th>
<th class="text-center align-middle text-danger fw-bold"> <?=$prodCode?> &nbsp; &nbsp; <?=$prodItem?> </th>
<th class="text-center align-middle lightgray" >마감유형 </th>
<th colspan="2" class="text-center align-middle text-danger fw-bold "> <?=$FinishMat?> </th>
</tr>
</thead>
</table>
</div>
</div>
<div class="row m-1">
<div class="d-flex align-items-center justify-content-center">
<table class="table" style="border-collapse: collapse;">
<thead>
<tr>
<th rowspan="1" class="text-center align-middle" style="width:70%;">
<div class="row">
<div class="col-sm-2">
<img src="../img/kdlogo.png" alt="경동기업" class="me-1" style="width:60%; height:auto;">
</div>
<div class="col-sm-10">
<div class="d-flex align-items-center justify-content-start align-middle m-1">
<span class="text-dark ms-2 me-3 fs-3" > 발주서 </span>
<button class="btn btn-primary btn-sm me-1 ms-1 orderBtn" > <i class="bi bi-view-list"></i> 보기 </button>
</div>
</div>
</div>
</th>
</thead>
</table>
</div>
</div>
<div class="row m-1">
<div class="d-flex align-items-center justify-content-center">
<table class="table" style="border-collapse: collapse;">
<thead>
<tr>
<th rowspan="1" class="text-center align-middle" style="width:70%;">
<div class="row">
<div class="col-sm-2">
<img src="../img/kdlogo.png" alt="경동기업" class="me-1" style="width:60%; height:auto;">
</div>
<div class="col-sm-10">
<div class="d-flex align-items-center justify-content-start align-middle m-1">
<span class="text-dark ms-2 me-3 fs-3" > 발주서 </span>
<button class="btn btn-primary btn-sm me-1 ms-1 orderBtn" > <i class="bi bi-view-list"></i> 보기 </button>
</div>
</div>
</div>
</th>
</thead>
</table>
</div>
</div>
</form>
</div> <!-- end of container -->
<div class="container mb-5 mt-2">
<div class="d-flex align-items-center justify-content-center mb-5">
</div>
</div>
<!-- 페이지로딩 -->
<script>
$(document).ready(function(){
var loader = document.getElementById('loadingOverlay');
if(loader)
loader.style.display = 'none';
});
$(document).on('click', '.orderBtn', function() {
event.preventDefault();
var tablename = '<?php echo $tablename; ?>';
var num = $('#num').val();
var url = "/output/write_form.php?mode=view&num=" + num + "&tablename=" + tablename;
customPopup(url, '절곡 바라시 보기', 1900, 900);
});
// 부트스트랩 툴팁
$(document).ready(function() {
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl);
});
});
</script>
</body>
</html>