" . 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 "
" . 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 "잘못된 요청"; }