140 lines
6.2 KiB
PHP
140 lines
6.2 KiB
PHP
<?php
|
|
include_once '_common.php';
|
|
if (!isset($_SESSION['user_id'])) exit; // 로그인 되어있지 않으면 로그인 페이지로 보냄
|
|
|
|
// cafe24 절대경로
|
|
// /firstgarden/www/
|
|
|
|
$is_debug = false; // 디버깅 시 true로 변경
|
|
$is_test = false; // 상품별(분류별상품)으로 바코드 업데이트 시킬때
|
|
$is_dataForceInsert = false; // 강제로 데이터 맞출때 씀
|
|
|
|
// 추후 table 생성하여 대/중/소분류에 들어갈 값을 넣도록 수정해야 함
|
|
// 값을 추출할 소분류 설정
|
|
$chkMajCat = array('보스코');
|
|
$chkMidCat = array();
|
|
$chkSmallCat = array(
|
|
'보스코 베이커리'
|
|
);
|
|
// 제외항목
|
|
// $excludeBarcode = array('900014', '900015');
|
|
|
|
// 라이브러리 로드
|
|
require_once $_SERVER['DOCUMENT_ROOT'].'/vendor/autoload.php';
|
|
|
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
use Shuchkin\SimpleXLSX;
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
|
|
|
|
if ($is_debug) var_dump($_FILES['file']);
|
|
|
|
// 변수 만들기
|
|
$date = trim($_POST['searchDate']);
|
|
$file = $_FILES['file'];
|
|
$datetime = date('Y-m-d H:i:s');
|
|
$uploadDir = 'uploads/';
|
|
$uploadFile = $uploadDir . basename($file['name']);
|
|
$newXlsxFile = $uploadDir . pathinfo($file['name'], PATHINFO_FILENAME) . '.xlsx';
|
|
|
|
// 디렉토리가 없는 경우 생성
|
|
if (!is_dir($uploadDir)) {
|
|
mkdir($uploadDir, 0777, true);
|
|
}
|
|
|
|
// 데이터 처리
|
|
if (move_uploaded_file($file['tmp_name'], $uploadFile)) {
|
|
if ($is_debug) echo "파일 업로드 성공: " . htmlspecialchars(basename($file['name'])) . "<br>" . PHP_EOL;
|
|
|
|
try {
|
|
// 파일 형식에 따라 변환
|
|
$fileType = pathinfo($uploadFile, PATHINFO_EXTENSION);
|
|
if ($fileType == 'xls') {
|
|
// PHPSpreadsheet로 .xls 파일을 .xlsx 파일로 변환
|
|
$spreadsheet = IOFactory::load($uploadFile);
|
|
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
|
|
$writer->save($newXlsxFile);
|
|
|
|
// 업로드된 파일을 새로운 .xlsx 파일로 설정
|
|
$uploadFile = $newXlsxFile;
|
|
}
|
|
|
|
// SimpleXLSX로 파일 읽기
|
|
$xlsx = SimpleXLSX::parse($uploadFile);
|
|
|
|
if ($xlsx && !$is_test) {
|
|
$data = [];
|
|
foreach ($xlsx->rows() as $row) {
|
|
// 대분류 열이 보스코일 때
|
|
if (in_array($row[1], $chkMajCat)) {
|
|
// 소분류 체크
|
|
if (in_array($row[3], $chkSmallCat)) {
|
|
// 바코드 체크
|
|
if (!empty($row[4])) {
|
|
// 데이터 설정
|
|
$date = $date;
|
|
$product_name = $row[6] ?? ''; // 품명
|
|
$barcode = $row[4] ?? ''; // 바코드
|
|
$sales = $row[7] ?? ''; // 판매
|
|
$sales_amount = $row[8] ?? ''; // 판매금액
|
|
$menu_discount = $row[9] ?? ''; // 할인액
|
|
$payment_amount = $row[10] ?? ''; // 매출액
|
|
|
|
// `bakery_product_table`에 바코드가 있는지 확인
|
|
$checkQuery = "SELECT used FROM {$fg['bakery_product_table']} WHERE barcode = '{$barcode}'";
|
|
$checkResult = sql_query($checkQuery);
|
|
$rowCount = sql_num_rows($checkResult);
|
|
|
|
if ($rowCount > 0) {
|
|
$used = sql_fetch_array($checkResult)['used'];
|
|
// 바코드가 존재하지만 used 값이 0인 경우 continue
|
|
if ($used == 0) continue;
|
|
} else {
|
|
// 바코드가 없는 경우 추가
|
|
$insertQuery = "INSERT INTO {$fg['bakery_product_table']} (product_name, barcode, used) VALUES ('{$product_name}', '{$barcode}', 1)";
|
|
sql_query($insertQuery);
|
|
}
|
|
|
|
// 바코드가 신규로 들어간 경우에는 used값이 항상 1이고, 기존 0인 경우는 이미 continue 처리가 되어있음
|
|
|
|
// 데이터 삽입
|
|
$query = "INSERT INTO {$fg['bakery_inventory_table']} (date, barcode, sales, sales_amount, menu_discount, payment_amount, edit_datetime) ";
|
|
$query .= " VALUES ('{$date}', '{$barcode}', '{$sales}', '{$sales_amount}', '{$menu_discount}', '{$payment_amount}', '{$datetime}') ";
|
|
// 이미 값이 있는 경우 업데이트
|
|
$query .= " ON DUPLICATE KEY UPDATE
|
|
sales = '{$sales}',
|
|
sales_amount = '{$sales_amount}',
|
|
menu_discount = '{$menu_discount}',
|
|
payment_amount = '{$payment_amount}',
|
|
edit_datetime = '{$datetime}'
|
|
";
|
|
|
|
$result = sql_query($query);
|
|
|
|
// 점검용, Query Print
|
|
if ($is_debug) {
|
|
print_r($query);
|
|
echo "<br>" . PHP_EOL;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
echo SimpleXLSX::parseError();
|
|
}
|
|
} catch (Exception $e) {
|
|
echo '엑셀 파일 읽기 오류: ', $e->getMessage();
|
|
}
|
|
|
|
// 파일 삭제
|
|
if (file_exists($uploadFile)) {
|
|
unlink($uploadFile);
|
|
if ($is_debug) echo "파일 삭제 완료." . PHP_EOL;
|
|
}
|
|
} else {
|
|
echo "파일 업로드 실패";
|
|
}
|
|
} else {
|
|
echo "잘못된 요청";
|
|
} |