- URL 하드코딩 → .env APP_URL 기반 동적 URL로 변경 - DB 연결 하드코딩 → .env 기반으로 변경 - MySQL strict mode DATE 오류 수정
351 lines
13 KiB
PHP
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>
|
|
</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?> <?=$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>
|