Files
sam-kd/output/viewConfirm1.php

453 lines
18 KiB
PHP
Raw Normal View History

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
$title_message = '납품확인서';
$tablename = 'output';
$item ='납품확인서';
$emailTitle ='납품확인서';
include $_SERVER['DOCUMENT_ROOT'] . '/load_header.php';
?>
<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'] : ''; // 출고일
// 출고일이 존재할 경우에만 다음날 계산
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';
}
} catch (PDOException $Exception) {
print "오류: " . $Exception->getMessage();
}
// JSON 문자열을 PHP 배열로 디코딩합니다.
//스크린발주서 읽기
$eList = json_decode($estimateList, true);
// 행의 수는 배열의 크기와 동일하므로, count() 함수를 사용하여 구합니다.
$surang = count($eList);
// 행의 수를 출력하거나 활용할 수 있습니다.
// echo "행의 수: " . $surang . "<br>";
$THscreenSu = $surang + 2 ;
// 디코딩된 데이터가 배열인지 확인합니다.
if (!is_array($eList)) {
echo "데이터가 정상적이지 않습니다. 확인바랍니다.";
exit;
}
else {
foreach ($eList as $item) {
$prodcode = $item['col4'];
$items1 = ['KSS01','KSE01'];
$items2 = ['KWE01'];
// $prodcode가 $items1 배열에 있는 경우
if (in_array($prodcode, $items1)) {
$prodname = '국민방화 스크린 셔터';
}
// $prodcode가 $items2 배열에 있는 경우
elseif (in_array($prodcode, $items2)) {
$prodname = '국민방화 스크린 플러스 셔터';
} else {
$prodname = 'Unknown'; // $prodcode가 어느 배열에도 없는 경우
}
}
}
?>
<div class="container mt-2">
<div class="d-flex align-items-center justify-content-end mt-1 m-1">
<button type="button" class="btn btn-dark btn-sm mx-3" onclick='location.reload();' title="새로고침"> <i class="bi bi-arrow-clockwise"></i> </button>
<button type="button" class="btn btn-dark btn-sm ms-1 me-1" onclick="generatePDF()"> PDF 저장 </button>
<button type="button" class="btn btn-dark btn-sm ms-1 me-1" onclick="sendmail();"> <i class="bi bi-envelope-arrow-up"></i> 전송 </button>
<button type="button" class="btn btn-secondary btn-sm ms-5 " onclick="self.close();"> <i class="bi bi-x-lg"></i> 닫기 </button>
</div>
</div>
<div id="content-to-print">
<br>
<div class="container mt-3">
<div class="row">
<div class="d-flex align-items-center justify-content-center">
<table class="table " style="border-collapse: collapse;">
<thead>
<tr>
<th colspan="5" rowspan="3" class="text-center" style="width:70%;">
<div class="row">
<div class="col-sm-2">
<img src="../img/kdlogo.png" alt="경동기업" class="me-1" style="width:100%; height:auto;">
</div>
<div class="col-sm-10">
<div class="d-flex align-items-center justify-content-center m-1">
<span class="text-dark ms-2 me-2 fs-2" > &nbsp; </span>
<span class="text-dark ms-2 me-2 fs-2" > &nbsp; </span>
<span class="text-dark ms-2 me-2 fs-2" > &nbsp; </span>
<span class="text-dark ms-2 me-2 fs-2" > &nbsp; </span>
<span class="text-dark ms-2 fs-2" > &nbsp; </span>
</div>
<br>
<div class="d-flex align-items-center justify-content-center mt-2">
<span class="text-dark ms-2 " style="font-size:10px;" > 전화 : 031-983-5130 | 팩스 : 02-6911-6315 | 이메일 : kd5130@naver.com </span>
</div>
</div>
</div>
</th>
<th class="text-center " style="width:5%;">로트번호</th>
<th colspan="3" class="text-center text-primary fw-bold fs-6" > <?=$lotNum?> </th>
</tr>
<tr>
<th class="text-center fw-bold" style="height:80px;"> </th>
<th colspan="3" rowspan="2" class="text-center fs-5" style="width : 70px; height:22px; padding:2px;">
<img src="../img/KDstamp.png" alt="도장" style="width:45px; height:45px;">
<!-- <span class="ms-3 fs-6"> () </span> -->
</th>
</tr>
<tr>
</tr>
<tr>
<th class="text-center blueBlackBold" > </th>
<th class="text-center blueBlackBold"><?=$prodname?></th>
<th class="text-center blueBlackBold">제품명</th>
<th class="text-center blueBlackBold"><?=$prodcode?></th>
<th class="text-center blueBlackBold">인정번호</th>
<th colspan="4" class="text-center blueBlackBold fw-bold"><?=$warrantyNum?></th>
</tr>
</thead>
</table>
</div>
</div>
<div class="row">
<div class="d-flex align-items-center justify-content-start ">
<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>
<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 colspan="3" 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-primary fw-bold"><?=specialDate($outdateplusone)?> </th>
<th class="text-center align-middle lightgray">인수담당자</th>
<th colspan="1" class="text-center text-primary fw-bold"><?=$orderman?> </th>
</tr>
<tr>
<th class="text-center align-middle lightgray">발주 담당자</th>
<th class="text-center"><?=$orderman?></th>
<th class="text-center align-middle lightgray">출고일</th>
<th colspan="1" class="text-center text-primary fw-bold"><?=specialDate($outdate)?> </th>
<th class="text-center align-middle lightgray">인수자연락처</th>
<th class="text-center text-primary fw-bold"><?=$_SESSION['hp']?> </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"> <?=$surang ?> (개소) </th>
<th class="text-center align-middle lightgray"> </th>
<th class="text-center"> <?=$delivery ?> </th>
</tr>
<tr>
<th class="text-center align-middle lightgray">배송지 주소</th>
<th colspan="5" class="text-center"><?=$outputplace?></th>
</tr>
</thead>
</table>
</div>
</div>
<div class="row mt-2 ">
<div class="d-flex align-items-center justify-content-start">
1. 스크린
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'] . '/' . $tablename . '/common/screen.php'; ?> <!-- 스크린, 발주서, 출고증, 확인서 등등 공통 -->
<div class="row mt-2 ">
<div class="d-flex align-items-center justify-content-start">
2. 모터
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'] . '/' . $tablename . '/common/motor.php'; ?> <!-- 모터, 발주서, 출고증, 확인서 등등 공통 -->
<div class="row mt-2 ">
<div class="d-flex align-items-center justify-content-start">
3. 절곡품
<br>
<?php
// 가이드레일 정보 표시
if (trim($prodcode) == "KSS01") {
$result = "3-1. 가이드레일 - EGI 1.55T + 마감재 SUS 1.2T";
} elseif ($prodcode == "KSE01") {
$result = "3-1. 가이드레일 - EGI 1.55T + 마감재 EGI 1.15T";
} else {
$result = "3-1. 가이드레일 - EGI 1.55T + 마감재 EGI 1.15T + 별도마감재 SUS 1.15T";
}
echo $result;
?>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'] . '/' . $tablename . '/common/guiderail.php'; ?> <!-- 가이드레일 공통사항 발주서 등 -->
<?php include $_SERVER['DOCUMENT_ROOT'] . '/' . $tablename . '/common/shutterbox.php'; ?> <!-- 출고증, 발주서 등등 공통셔터박스 내용 -->
<div class="row mt-2">
<div class="d-flex justify-content-start">
3-2. 하단마감재 <br>
<?php
if (trim($prodcode) == "KSS01") {
$result = "하단마감재(SUS 1.55T) + 하단보강엘바(EGI 1.55T) + 하단 보강평철(EGI 1.15T) + 하단 무게평철(50*12T)";
} else {
$result = "하단마감재(EGI 1.55T) + 하단보강엘바(EGI 1.55T) + 하단 보강평철(EGI 1.15T) + 하단 무게평철(50*12T)";
}
echo $result . '</div></div>' ;
?>
<?php include $_SERVER['DOCUMENT_ROOT'] . '/' . $tablename . '/common/bottom.php'; ?> <!-- 하단마감재 발주서 등등 공통 -->
<div class="row mt-2">
<div class="d-flex justify-content-start">
4. 부자재 - 감기샤프트, 각파이프, 앵글, 마환봉
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'] . '/' . $tablename . '/common/subgoods.php'; ?> <!-- 부자재 발주서 등등 공통 -->
<?php include $_SERVER['DOCUMENT_ROOT'] . '/' . $tablename . '/common/etc.php'; ?> <!-- 소모품 등 발주서 등등 공통 -->
</div>
</form>
<div class="container mb-5 mt-2">
<div class="d-flex align-items-center justify-content-center mb-5">
</div>
</div>
</div> <!-- end of container -->
</body>
</html>
<!-- 페이지로딩 -->
<script>
$(document).ready(function(){
var loader = document.getElementById('loadingOverlay');
loader.style.display = 'none';
});
function generatePDF() {
var workplace = '<?php echo $outworkplace; ?>';
var deadline = '<?php echo $indate; ?>';
var deadlineDate = new Date(deadline);
var formattedDate = "(" + String(deadlineDate.getFullYear()).slice(-2) + "." + ("0" + (deadlineDate.getMonth() + 1)).slice(-2) + "." + ("0" + deadlineDate.getDate()).slice(-2) + ")";
var result = 'KD납품확인서(' + workplace +')' + formattedDate + '.pdf';
var element = document.getElementById('content-to-print');
var opt = {
margin: [10, 3, 12, 3], // Top, right, bottom, left margins
filename: result,
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 1 },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
pagebreak: { mode: [''] }
};
html2pdf().from(element).set(opt).save();
}
function generatePDF_server(callback) {
var workplace = '<?php echo $title_message; ?>';
var item = '<?php echo $emailTitle; ?>';
var today = new Date();
var formattedDate = "(" + String(today.getFullYear()).slice(-2) + "." + ("0" + (today.getMonth() + 1)).slice(-2) + "." + ("0" + today.getDate()).slice(-2) + ")";
var result = 'KD' + item +'(' + workplace + ')' + formattedDate + '.pdf';
var element = document.getElementById('content-to-print');
var opt = {
margin: [10, 3, 12, 3], // Top, right, bottom, left margins
filename: result,
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2 },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' },
pagebreak: { mode: [''] }
};
html2pdf().from(element).set(opt).output('datauristring').then(function (pdfDataUri) {
var pdfBase64 = pdfDataUri.split(',')[1]; // Base64 인코딩된 PDF 데이터 추출
var formData = new FormData();
formData.append('pdf', pdfBase64);
formData.append('filename', result);
$.ajax({
type: 'POST',
url: '/email/save_pdf.php', // PDF 파일을 저장하는 PHP 파일
data: formData,
processData: false,
contentType: false,
success: function (response) {
var res = JSON.parse(response);
if (callback) {
callback(res.filename); // 서버에 저장된 파일 경로를 콜백으로 전달
}
},
error: function (xhr, status, error) {
Swal.fire('Error', 'PDF 저장에 실패했습니다.', 'error');
}
});
});
}
var ajaxRequest = null;
function sendmail() {
var secondordnum = '<?php echo $secondordnum; ?>'; // 서버에서 가져온 값
var item = '<?php echo $emailTitle; ?>';
if (!secondordnum) {
Swal.fire({
icon: 'warning',
title: '오류 알림',
text: '발주처 코드가 없습니다.'
});
return; // 함수 종료
}
if (typeof ajaxRequest !== 'undefined' && ajaxRequest !== null) {
ajaxRequest.abort();
}
ajaxRequest = $.ajax({
type: 'POST',
url: '/email/get_companyCode.php',
data: { secondordnum: secondordnum },
dataType: 'json',
success: function(response) {
console.log('response : ', response);
if (response.error) {
Swal.fire('Error', response.error, 'error');
} else {
var email = response.email;
var vendorName = response.vendor_name;
Swal.fire({
title: 'E메일 보내기',
text: vendorName + ' Email 주소확인',
icon: 'warning',
input: 'text', // input 창을 텍스트 필드로 설정
inputLabel: 'Email 주소 수정 가능',
inputValue: email, // 기존 이메일 주소를 기본값으로 설정
showCancelButton: true,
confirmButtonText: '보내기',
cancelButtonText: '취소',
reverseButtons: true,
inputValidator: (value) => {
if (!value) {
return '이메일 주소를 입력해주세요!';
}
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailPattern.test(value)) {
return '올바른 이메일 형식을 입력해주세요!';
}
}
}).then((result) => {
if (result.isConfirmed) {
const updatedEmail = result.value; // 입력된 이메일 주소 가져오기
generatePDF_server(function(filename) {
sendEmail(updatedEmail, vendorName, item, filename);
});
}
});
}
},
error: function(xhr, status, error) {
Swal.fire('Error', '전송중 오류가 발생했습니다.', 'error');
}
});
}
function sendEmail(recipientEmail, vendorName, item, filename) {
if (typeof ajaxRequest !== 'undefined' && ajaxRequest !== null) {
ajaxRequest.abort();
}
var today = new Date();
var formattedDate = "(" + String(today.getFullYear()).slice(-2) + "." + ("0" + (today.getMonth() + 1)).slice(-2) + "." + ("0" + today.getDate()).slice(-2) + ")";
ajaxRequest = $.ajax({
type: 'POST',
url: '/email/send_email.php', // 이메일 전송을 처리하는 PHP 파일
data: { email: recipientEmail, vendorName: vendorName, filename: filename, item: item, formattedDate: formattedDate },
success: function(response) {
console.log(response);
Swal.fire('Success', '정상적으로 전송되었습니다.', 'success');
},
error: function(xhr, status, error) {
Swal.fire('Error', '전송에 실패했습니다. 확인바랍니다.', 'error');
}
});
}
</script>