| 작성일자 |
=$title_message?> |
견적번호 |
| =$indate?> |
=$pjnum?> |
| 업체명 |
=$secondord?> (귀하) |
공 급 자 |
상호 |
㈜ 경동기업 |
| 제품명 |
자동방화셔터 스크린인정제품 |
등록번호 |
139-87-00333 |
대표자 |
이 경 호
|
| 현장명 |
=$outworkplace?> |
사업장주소 |
경기도 김포시 통진읍 옹정로 45-22 |
| 담당자 |
=$secondordman?> |
업 태 |
제조업 |
종목 |
방화셔터, 금속창호 |
| 연락처 |
=$secondordmantel?> |
TEL. |
031-983-5130 |
FAX |
02-6911-6315 |
합계금액(부가세 별도)
아래와 같이 견적합니다
|
금 |
|
원 |
( ₩ ) |
prepare($sql);
$stmh->execute();
$count = $stmh->rowCount();
if ($count < 1) {
print "검색결과가 없습니다.
";
} else {
// 마구리 단가 정보를 저장할 배열
$maguriPrices = [];
// 정규표현식 패턴 (숫자 형식만 매칭)
$pattern = '/\d{3}\*\d{3}/';
// 전체 데이터를 반복 처리
while ($row = $stmh->fetch(PDO::FETCH_ASSOC)) {
$firstitem = isset($row['firstitem']) ? $row['firstitem'] : '';
$unitList = isset($row['unitList']) ? json_decode($row['unitList'], true) : [];
// 첫 번째 아이템이 '케이스(셔터박스)'이고, unitList가 유효한 배열인 경우
if ($firstitem == '케이스(셔터박스)' && is_array($unitList) && count($unitList) > 0) {
foreach ($unitList as $item) {
// $item['col1']에서 개행 문자를 제거
$col1_clean = preg_replace("/\r|\n/", '', $item['col1']);
preg_match($pattern, $col1_clean, $matches);
// '마구리' 단어가 col1_clean에 포함되어 있고, 숫자 패턴이 포함된 경우 처리
if (strpos($col1_clean, '마구리') !== false && preg_match($pattern, $col1_clean)) {
$extract = $matches[0];
// $item['col12']가 존재하고, 콤마 제거 후 유효한지 확인
if (isset($item['col12']) && $item['col12'] !== '' && $item['col12'] !== '-') {
// $item['col12']에서 모든 공백, 특수문자 제거 (콤마, 공백 등)
$col12_clean = preg_replace('/[^0-9.]/', '', $item['col12']);
// // 연산을 위한 데이터로 저장된 배열을 확인 (필요시)
// echo '
';
// print_r($extract); // 필요시 배열을 출력해서 확인
// echo "원본 col12: " . $item['col12'] . "\n";
// echo "정리된 col12_clean: " . $col12_clean . "\n";
// echo '
';
// floatval()로 변환된 값이 0보다 큰지 확인
if (floatval($col12_clean) > 0) {
// 패턴에서 숫자 두 개를 추출하여 각각 5씩 감소
$numbers = explode('*', $extract);
$first_number = intval($numbers[0]) - 5; // 첫 번째 숫자에서 5 감소
$second_number = intval($numbers[1]) - 5; // 두 번째 숫자에서 5 감소
$adjusted_extract = $first_number . '*' . $second_number; // 변환된 값을 결합
// 변환된 값으로 배열에 저장
$maguriPrices[$adjusted_extract] = floatval($col12_clean);
}
}
}
}
}
}
// // 연산을 위한 데이터로 저장된 배열을 확인
// echo '
';
// print_r($maguriPrices); // 최종 저장된 배열 출력
// echo '
';
}
} catch (PDOException $Exception) {
print "오류: " . $Exception->getMessage();
}
// 데이터베이스 테이블 이름 설정 (셔터박스)
$tablename = 'bendingfee';
try {
$sql = "SELECT * FROM " . $DB . "." . $tablename;
$stmh = $pdo->prepare($sql);
$stmh->execute();
$count = $stmh->rowCount();
if ($count < 1) {
print "검색결과가 없습니다.
";
} else {
// 셔터박스 단가 정보를 저장할 배열
$shutterBoxprices = [];
// 정규표현식 패턴 (숫자 형식만 매칭)
$pattern = '/\d{3}\*\d{3}/';
// 전체 데이터를 반복 처리
while ($row = $stmh->fetch(PDO::FETCH_ASSOC)) {
$firstitem = isset($row['firstitem']) ? $row['firstitem'] : '';
$proditem = isset($row['proditem']) ? $row['proditem'] : ''; // 셔터박스 데이터 (단순 문자열)
// 첫 번째 아이템이 '케이스(셔터박스)'인 경우
if ($firstitem == '케이스(셔터박스)') {
// $proditem에서 개행 문자를 제거하고 정리
$proditem_clean = preg_replace("/\r|\n/", '', $proditem);
// 정규식 패턴을 이용해 숫자 추출 (예: '500*350')
if (preg_match($pattern, $proditem_clean, $matches)) {
$extract = $matches[0]; // '500*350' 형식의 패턴 추출
// $row['unitprice'] 값이 존재하고, 콤마 제거 후 유효한지 확인
if (isset($row['unitprice']) && $row['unitprice'] !== '') {
$unitprice_clean = preg_replace('/[^0-9.]/', '', $row['unitprice']); // 단가에서 숫자와 소수점만 남기기
// floatval()로 변환된 값이 0보다 큰지 확인
if (floatval($unitprice_clean) > 0) {
// 변환된 값으로 배열에 저장
$shutterBoxprices[$extract] = floatval($unitprice_clean);
}
}
}
}
}
// // 연산을 위한 데이터로 저장된 배열을 확인
// echo '
';
// print_r($shutterBoxprices); // 최종 저장된 배열 출력
// echo '
';
}
} catch (PDOException $Exception) {
print "오류: " . $Exception->getMessage();
}
// // 마감별 하장바 단가
// $bottomBarPrices = [
// 'KSS01' => 12276,
// 'KWSS01' => 12276,
// 'KWWS01' => 12276,
// 'EGI마감' => 5346,
// 'SUS마감' => 17484,
// 'KTE01_EGI' => 5805,
// 'KTE01_SUS' => 13761,
// ];
// 전체 반복 찾기
foreach ($decodedEstimateList as $item) {
if (isset($item['col5']) && !empty($item['col5'])) {
// 각 행별 합계 초기화
// 검사비 10만원 처음 들어감
$sums[$counter] = 100000 ;
// 주자재 계산
$tableName = 'price_raw_materials';
$price = fetchPricesFromTable($tableName, [$item['col5']]);
// 쉼표를 제거하고 숫자형으로 변환
$price = floatval(str_replace(',', '', $price));
// col12도 숫자형으로 변환
$area = floatval($item['col12']);
// 견적서 엑셀을 보면 스크린일때 높이를 900 더해준다. 기준 산출기준서에는 +350인데, 견적서는 +900적용 주의
// 그러므로, 여기서는 다시 계산해야 한다. ( +550 더해준다.)
$area = floatval($item['col10']) * (floatval($item['col11']) + 550) / 1000000 ;
$sums[$counter] += ($price * $area); // 합산
// 모터가격 계산
$tablename = 'price_motor';
$query = "SELECT itemList FROM {$DB}.$tablename where is_deleted IS NULL or is_deleted = 0 ORDER BY NUM LIMIT 1";
$stmt = $pdo->prepare($query);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$itemList = json_decode($row['itemList'], true);
$result = calculateMotorSpec($decodedEstimateList, $item['col15'], $item['col16']);
$price = getPriceForMotor($result, $itemList);
$sums[$counter] += $price; // 모터 가격 합산
// 매립 연동제어기 가격 계산
$price = calculateControllerSpec($item['col15'], $itemList, '매립형');
$sums[$counter] += $price; // 매립 연동제어기 가격 합산
// 노출 연동제어기 가격 계산
$price = calculateControllerSpec($item['col16'], $itemList, '노출형');
$sums[$counter] += $price; // 노출 연동제어기 가격 합산
// 뒷박스 계산
$price = calculateControllerSpec($item['col17'], $itemList, '뒷박스');
// echo "뒷박스 가격: " . $price . "\n";
$sums[$counter] += $price; // 뒷박스 가격 합산
// 모터 받침용 앵글 가계
$tablename = 'price_angle';
$query = "SELECT itemList FROM {$DB}.$tablename where is_deleted IS NULL or is_deleted = 0 ORDER BY NUM LIMIT 1";
$stmt = $pdo->prepare($query);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$itemList = json_decode($row['itemList'], true);
// 스크린용 앵글 가격가져오기
$price = calculateAngle($item['col2'], $itemList, '스크린용');
$sums[$counter] += $price; // 매립 연동제어기 가격 합산
// 절단판
$tablename = 'price_bend';
$query = "SELECT itemList FROM {$DB}.$tablename where is_deleted IS NULL or is_deleted = 0 ORDER BY NUM LIMIT 1";
$stmt = $pdo->prepare($query);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$itemList = json_decode($row['itemList'], true);
// 가이드레일 가격 가져오기
$price = calculateGuidrail($item['col11'], $itemList, 'SUS','H/L304');
$sums[$counter] += $price; // 매립 연동제어기 가격 합산
// 셔터박스 단가는 엑셀표를 참고한다. 절단판 세부 내용은 문의해야 한다.
// $shutterBoxprices = [
// '500*350' => 54837,
// '500*380' => 56457,
// '650*500' => 71739,
// '650*550' => 74439,
// '700*550' => 77139,
// '700*600' => 79839,
// '780*600' => 84159,
// '780*650' => 86859,
// ];
// 셔터박스 크기
if ($item['col31'] === 'custom') {
$dimension = $item['col31_custom']; // 사용자 제작 사이즈
} else {
$dimension = $item['col31']; // 케이스 500*380
}
$basePrice = intval(str_replace(',', '', $item['col32']));
// 단가 계산
if (array_key_exists($dimension, $shutterBoxprices)) {
$price = $basePrice * ($shutterBoxprices[$dimension] / 1000);
} else {
$price = 0; // 조건이 맞지 않는 경우 0으로 설정
}
$sums[$counter] += $price;
// 마구리 단가 정보
// $maguriPrices = [
// '500*350' => 14865,
// '500*380' => 15845,
// '650*500' => 24666,
// '650*550' => 26704,
// '700*550' => 28473,
// '700*600' => 30646,
// '780*600' => 33692,
// '780*650' => 36081,
// ];
// 마구리 단가 계산
if (array_key_exists($dimension, $maguriPrices)) {
$maguriPrice = $maguriPrices[$dimension];
} else {
$maguriPrice = 0; // 조건이 맞지 않는 경우 0으로 설정
}
$sums[$counter] += $maguriPrice;
// 셔터박스 연기차단제
$price = 0;
$dimension = intval($item['col42']);
$basePrice = 8590 ;
// 단가 계산
$price = $basePrice * $dimension ;
$sums[$counter] += $price;
// 마감별 하장바 단가
// $bottomBarPrices = [
// 'KSS01' => 12276,
// 'KWSS01' => 12276,
// 'KWWS01' => 12276,
// 'EGI마감' => 5346,
// 'SUS마감' => 17484,
// 'KTE01_EGI' => 5805,
// 'KTE01_SUS' => 13761,
// ];
// 데이터베이스 테이블 이름 설정 (하단마감재 3가지 합계 하장바+L바+평철)
try {
$sqltmp = "SELECT * FROM {$DB}.bendingfee ";
$stmhtmp = $pdo->prepare($sqltmp);
$stmhtmp->execute();
$count = $stmhtmp->rowCount();
if ($count > 0 ) {
// 셔터박스 단가 정보를 저장할 배열
$bottomBarPrices = 0;
// 전체 데이터를 반복 처리
$itemsep = substr($item['col4'], 0, 2) === 'KS' ? '스크린용' : '철재용'; // E8은 'KS'로 시작하는지 확인
$itemfinal = str_replace('마감', '', $item['col7']);
while ($rowtmp = $stmhtmp->fetch(PDO::FETCH_ASSOC)) {
$firstitem = isset($rowtmp['firstitem']) ? $rowtmp['firstitem'] : '';
$seconditem = isset($rowtmp['seconditem']) ? $rowtmp['seconditem'] : '';
$proditem = isset($rowtmp['proditem']) ? $rowtmp['proditem'] : ''; // 셔터박스 데이터 (단순 문자열)
$material = isset($rowtmp['material']) ? $rowtmp['material'] : '';
$memo = isset($rowtmp['memo']) ? $rowtmp['memo'] : '';
if ($firstitem == '하단마감재' && $seconditem == $itemsep && strpos($memo, $item['col4']) !== true ) {
// $proditem에서 개행 문자를 제거하고 정리
$proditem_clean = preg_replace("/\r|\n/", '', $proditem);
// $rowtmp['unitprice'] 값이 존재하고, 콤마 제거 후 유효한지 확인
if (isset($rowtmp['unitprice']) && $rowtmp['unitprice'] !== '') {
$unitprice_clean = preg_replace('/[^0-9.]/', '', $rowtmp['unitprice']); // 단가에서 숫자와 소수점만 남기기
// floatval()로 변환된 값이 0보다 큰지 확인
if (floatval($unitprice_clean) > 0) {
// 변환된 값으로 배열에 저장
$bottomBarPrices = floatval($unitprice_clean);
}
}
}
}
// // 연산을 위한 데이터로 저장된 배열을 확인
// echo '
';
// print_r($bottomBarPrices); // 최종 저장된 배열 출력
// echo '
';
}
} catch (PDOException $Exception) {
print "오류: " . $Exception->getMessage();
}
$basePrice = intval(str_replace(',', '', $item['col43'])); // 기장 size를 의미함
// 조건에 따른 가격 계산
$price = 0;
$price = $basePrice * ($bottomBarPrices / 1000);
// echo "하장바 Price: " . number_format($price);
$sums[$counter] += $price;
// // 마감별 엘바 단가 (3개 단가를 통합함)
// $bottomBarPrices = [
// 'KSS01' => 4158,
// 'KWSS01' => 4158,
// 'KWWS01' => 4158,
// 'EGI마감' => 4158,
// 'SUS마감' => 4158,
// 'KTE01_EGI' => 4158,
// 'KTE01_SUS' => 4158,
// ];
// $basePrice = intval(str_replace(',', '', $item['col46'])); // 기장 size를 의미함
// $itemsep = substr($item['col4'], 0, 2) === 'KS' ? '스크린' : '철재'; // E8은 'KS'로 시작하는지 확인
// $itemfinal = $item['col7'];
// // 조건에 따른 가격 계산
// $price = 0;
// if (in_array($item['col4'], ['KSS01', 'KSE01', 'KWSS01', 'KWWS01'])) {
// // KSS01, KWSS01, KWWS01 조건
// $price = $basePrice * ($bottomBarPrices['KSS01'] / 1000);
// } elseif ($itemsep == '스크린' && $itemfinal == 'EGI마감') {
// // 스크린 + EGI마감 조건
// $price = $basePrice * ($bottomBarPrices['EGI마감'] / 1000);
// } elseif ($item['col4'] == 'KWE01' && $itemfinal == 'SUS마감') {
// // KWE01 + SUS마감 조건
// $price = $basePrice * ($bottomBarPrices['SUS마감'] / 1000);
// } elseif ($item['col4'] == 'KTE01' && $itemfinal == 'EGI마감') {
// // KTE01 + EGI마감 조건
// $price = $basePrice * ($bottomBarPrices['KTE01_EGI'] / 1000);
// } elseif ($item['col4'] == 'KTE01' && $itemfinal == 'SUS마감') {
// // KTE01 + SUS마감 조건
// $price = $basePrice * ($bottomBarPrices['KTE01_SUS'] / 1000);
// } else {
// $price = 0; // 조건이 맞지 않는 경우 0으로 설정
// }
// // echo " 엘바 Price: " . number_format($price) . "
";
// $sums[$counter] += $price;
// // 보강평철 단가
// $basicUnit = 1100;
// $bottomBarPrices = [
// 'KSS01' => $basicUnit,
// 'KWSS01'=> $basicUnit,
// 'KWWS01'=> $basicUnit,
// 'EGI마감'=> $basicUnit,
// 'SUS마감'=> $basicUnit,
// 'KTE01_EGI' => $basicUnit,
// 'KTE01_SUS' => $basicUnit,
// ];
// $basePrice = intval(str_replace(',', '', $item['col49'])); // 기장 size를 의미함
// $itemsep = substr($item['col4'], 0, 2) === 'KS' ? '스크린' : '철재'; // E8은 'KS'로 시작하는지 확인
// $itemfinal = $item['col7'];
// // 조건에 따른 가격 계산
// $price = 0;
// if (in_array($item['col4'], ['KSS01', 'KSE01', 'KWSS01', 'KWWS01'])) {
// // KSS01, KWSS01, KWWS01 조건
// $price = $basePrice * ($bottomBarPrices['KSS01'] / 1000);
// } elseif ($itemsep == '스크린' && $itemfinal == 'EGI마감') {
// // 스크린 + EGI마감 조건
// $price = $basePrice * ($bottomBarPrices['EGI마감'] / 1000);
// } elseif ($item['col4'] == 'KWE01' && $itemfinal == 'SUS마감') {
// // KWE01 + SUS마감 조건
// $price = $basePrice * ($bottomBarPrices['SUS마감'] / 1000);
// } elseif ($item['col4'] == 'KTE01' && $itemfinal == 'EGI마감') {
// // KTE01 + EGI마감 조건
// $price = $basePrice * ($bottomBarPrices['KTE01_EGI'] / 1000);
// } elseif ($item['col4'] == 'KTE01' && $itemfinal == 'SUS마감') {
// // KTE01 + SUS마감 조건
// $price = $basePrice * ($bottomBarPrices['KTE01_SUS'] / 1000);
// } else {
// $price = 0; // 조건이 맞지 않는 경우 0으로 설정
// }
// // echo " 보강평철 Price: " . number_format($price) . "
";
// $sums[$counter] += $price;
// 샤프트
$tablename = 'price_shaft';
$query = "SELECT itemList FROM {$DB}.$tablename where is_deleted IS NULL or is_deleted = 0 ORDER BY NUM LIMIT 1";
$stmt = $pdo->prepare($query);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$itemList = json_decode($row['itemList'], true);
$price = calculateShaft($item['col54'], $itemList, '3' , '300' ); //3인치 300
// echo " 샤프트 Price: " . number_format($price) . "
";
$sums[$counter] += $price;
$price = calculateShaft($item['col55'], $itemList, '4' , '3000' ); //4인치 3000
// echo " 샤프트 Price: " . number_format($price) . "
";
$sums[$counter] += $price;
$price = calculateShaft($item['col56'], $itemList, '4' , '4500' );
// echo " 샤프트 Price: " . number_format($price) . "
";
$sums[$counter] += $price;
$price = calculateShaft($item['col57'], $itemList, '4' , '6000' );
// echo " 샤프트 Price: " . number_format($price) . "
";
$sums[$counter] += $price;
$price = calculateShaft($item['col58'], $itemList, '5' , '6000' );
// echo " 샤프트 Price: " . number_format($price) . "
";
$sums[$counter] += $price;
$price = calculateShaft($item['col59'], $itemList, '5' , '7000' );
// echo " 샤프트 Price: " . number_format($price) . "
";
$sums[$counter] += $price;
$price = calculateShaft($item['col60'], $itemList, '5' , '8200' );
// echo " 샤프트 Price: " . number_format($price) . "
";
$sums[$counter] += $price;
// 기준 단가 (2000mm당 12000원)
$basePrice = 12000;
$size = intval(str_replace(',', '', $item['col8'])) * 2; // 스크린 길이 * 2
$itemsep = substr($item['col4'], 0, 2) === 'KS' ? '스크린' : '철재'; // E8은 'KS'로 시작하는지 확인
// 스크린 하단 평철의 단계별 가격 계산
if ($itemsep == '스크린') {
if ($size <= 2000) {
$priceFactor = 1;
} elseif ($size <= 4000) {
$priceFactor = 2;
} elseif ($size <= 6000) {
$priceFactor = 3;
} elseif ($size <= 8000) {
$priceFactor = 4;
} elseif ($size <= 10000) {
$priceFactor = 5;
} elseif ($size <= 12000) {
$priceFactor = 6;
} elseif ($size <= 14000) {
$priceFactor = 7;
} elseif ($size <= 16000) {
$priceFactor = 8;
} elseif ($size <= 18000) {
$priceFactor = 9;
} elseif ($size <= 20000) {
$priceFactor = 10;
} else {
$priceFactor = 0; // 조건에 맞지 않는 경우 0으로 설정
}
} else {
$priceFactor = 0; // E8이 '스크린'이 아닌 경우 0으로 설정
}
// 최종 단가 계산
$price = $basePrice * $priceFactor;
// 결과 출력
// echo "
스크린평철 Price: " . number_format($price);
$sums[$counter] += $price;
// 각파이프 계산
$tablename = 'price_pipe';
$query = "SELECT itemList FROM {$DB}.$tablename where is_deleted IS NULL or is_deleted = 0 ORDER BY NUM LIMIT 1";
$stmt = $pdo->prepare($query);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$itemList = json_decode($row['itemList'], true);
// 3000mm 각파이프 계산
$price = calculatePipe($itemList, '1.4', '3000');
if ($item['col63'] > 0) {
$sums[$counter] += $price * intval($item['col63']);
}
// 6000mm 각파이프 계산
$price = calculatePipe($itemList, '1.4', '6000');
if ($item['col64'] > 0) {
$sums[$counter] += $price * intval($item['col64']);
}
// 행의 나머지 데이터를 설정
$row = [];
$row['col1'] = $counter + 1;
$row['col2'] = '스크린'; // 예시로 고정된 값
$row['col3'] = $item['col3'] ?? ''; // col2는 item의 col3 값을 사용
$row['col4'] = $item['col4'] ?? ''; // col3은 item의 col4 값을 사용
$row['col5'] = $item['col8']; // 필요한 값으로 설정
$row['col6'] = $item['col9'];
$row['col7'] = $item['col14']; // 수량
$row['col8'] = 'SET'; // 빈 값으로 초기화 (필요에 따라 채움)
$row['col9'] = number_format($sums[$counter]); // 합산된 결과를 표시
$row['col10'] = number_format(floatval(str_replace(',', '', $sums[$counter])) * floatval(str_replace(',', '', $item['col14'])));
// $data 배열에 행을 추가합니다.
$data[] = $row;
$counter++;
}
}
echo '
';
echo '
';
echo '';
echo '';
echo '| 일련번호 | ';
echo '종류 | ';
echo '부호 | ';
echo '제품명 | ';
echo '오픈사이즈 | ';
echo '수량 | ';
echo '단위 | ';
echo '단가 | ';
echo '합계 | ';
echo '
';
echo '';
echo '| 가로 | ';
echo '세로 | ';
echo '금액 | ';
echo '
';
echo '';
echo '';
$col7_sum = 0; // col7 합계
$col89_sum = 0; // col8 + col9 합계
$col10_sum = 0;
$row_count = 0;
foreach ($data as $row) {
echo '';
for ($i = 1; $i <= 10; $i++) {
switch ($i) {
case 1:
// col1에만 HTML 태그를 해석하도록 출력
echo '| ' . $row['col1'] . ' | ';
break;
case 4:
// col3에만 HTML 태그를 해석하도록 출력
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
case 6:
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
case 7:
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
case 9:
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
case 10:
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
default:
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
}
}
// 쉼표를 제거하고 숫자형으로 변환하여 합계 계산
$col7_sum += floatval(str_replace(',', '', $row['col7']));
$col10_sum += floatval(str_replace(',', '', $sums[$row_count]));
echo '
';
$row_count ++ ;
}
// 소계 행 추가
echo '';
echo '| 소계 | ';
echo '' . number_format($col7_sum) . ' | ';
echo ' | ';
echo '' . number_format($col10_sum) . ' | ';
echo '
';
echo '';
echo '
';
echo '
';
$total_sum = floor($col10_sum);
$korean_total_sum = number_to_korean($total_sum);
}
// 세부내역서
if (True) {
$data = [];
$counter = 0;
foreach ($decodedEstimateList as $item) {
if (isset($item['col5']) && !empty($item['col5'])) {
$counter++;
// 각 col 값을 배열에 추가합니다.
$row = [];
$row['col1'] = '2.1
본체(스크린)';
$row['col2'] = $item['col3'] ?? ''; // 부호
$row['col3'] = $item['col5'] ?? ''; // 실리카
$row['col4'] = $item['col7'] ?? ''; // SUS
$row['col5'] = $item['col6']; // 벽마감표시
$row['col6'] = $item['col8']; // 오픈 가로
$row['col7'] = $item['col9']; // 오픈 세로
$row['col8'] = $item['col10']; // 제작 가로
$row['col9'] = $item['col11']; // 제작 세로
$row['col10'] = $item['col14']; // 수량
if ($item['col31'] === 'custom') {
$row['col11'] = $item['col31_custom']; // 사용자 제작 사이즈
} else {
$row['col11'] = $item['col31']; // 케이스 500*380
}
// $data 배열에 행을 추가합니다.
$data[] = $row;
}
}
echo '
';
echo '
세부내역서
';
echo '
';
echo '
';
echo '';
echo '';
echo '| 구분 | ';
echo '부호 | ';
echo '종류 | ';
echo '가이드레일 | ';
echo '오픈사이즈 | ';
echo '제작사이즈 | ';
echo '수량 | ';
echo '케이스 | ';
echo '
';
echo '';
echo '| 마감유형 | ';
echo '설치유형 | ';
echo '가로 | ';
echo '세로 | ';
echo '가로 | ';
echo '세로 | ';
echo '
';
echo '';
echo '';
$col7_sum = 0; // col7 합계
$col10_sum = 0; // col10 합계
$col89_sum = 0; // col8 + col9 합계
$rowspan_applied = false; // rowspan이 적용되었는지 확인하는 플래그
$row_count = count($data); // 총 행 수
foreach ($data as $row) {
echo '';
// 첫 번째 열에만 rowspan 적용
if (!$rowspan_applied) {
echo '| ' . $row['col1'] . ' | ';
$rowspan_applied = true;
}
// 나머지 열 출력 (색상을 부여하는 코드)
for ($i = 2; $i <= 11; $i++) { // col1은 이미 출력했으므로 col2부터 시작
switch ($i) {
case 9:
case 8:
// col3에 yellowBold 클래스를 적용하여 출력
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
case 11:
// col5에 blueBold 클래스를 적용하여 출력 (예시로 추가)
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
default:
// 기본적으로 fw-bold 클래스를 적용하여 출력
echo '' . htmlspecialchars($row['col' . $i]) . ' | ';
break;
}
}
// 쉼표를 제거하고 숫자형으로 변환하여 합계 계산
$col7_sum += floatval(str_replace(',', '', $row['col7']));
$col10_sum += floatval(str_replace(',', '', $row['col10']));
$col89_sum += floatval(str_replace(',', '', $row['col8'])) + floatval(str_replace(',', '', $row['col9']));
echo '
';
}
echo '';
echo '
';
echo '
';
}
// 모터 부분
if(True) {
// 함수 호출을 통해 계산된 값을 가져옴
$specifications = calculateMotorSpecifications($decodedEstimateList);
// 각 합계 값을 변수에 저장
$col1_sum = $specifications['col1_sum'];
$col2_sum = $specifications['col2_sum'];
$col3_sum = $specifications['col3_sum'];
$col4_sum = $specifications['col4_sum'];
$col5_sum = $specifications['col5_sum'];
$col6_sum = $specifications['col6_sum'];
$col7_sum = $specifications['col7_sum'];
$col8_sum = $specifications['col8_sum'];
$col9_sum = $specifications['col9_sum'];
$col10_sum = $specifications['col10_sum'];
$col11_sum = $specifications['col11_sum'];
$col12_sum = $specifications['col12_sum'];
echo '
';
echo '
';
echo '';
echo '';
echo ' 2.2 모터 | ';
echo ' 모터종류(KG) | ';
echo ' 연동제어기 | ';
echo '브라켓트 | ';
echo '앵글 | ';
echo '
';
echo '';
echo '| 150 | ';
echo '300 | ';
echo '400 | ';
echo '500 | ';
echo '600 | ';
echo '800 | ';
echo '1000 | ';
echo '매립 | ';
echo '노출 | ';
echo '뒷박스 | ';
echo '수량 | ';
echo '수량 | ';
echo '
';
echo '';
echo '| ' . ($col1_sum ?: '') . ' | ';
echo '' . ($col2_sum ?: '') . ' | ';
echo '' . ($col3_sum ?: '') . ' | ';
echo '' . ($col4_sum ?: '') . ' | ';
echo '' . ($col5_sum ?: '') . ' | ';
echo '' . ($col6_sum ?: '') . ' | ';
echo '' . ($col7_sum ?: '') . ' | ';
echo '' . ($col8_sum ?: '') . ' | ';
echo '' . ($col9_sum ?: '') . ' | ';
echo '' . ($col10_sum ?: '') . ' | ';
echo '' . ($col11_sum ?: '') . ' | ';
echo '' . ($col12_sum ?: '') . ' | ';
echo '
';
echo '';
echo '
';
echo '
';
}
// 절곡 부분
if (True) {
$data = [];
// 누적 합계를 저장할 변수들
$row3_1_sum = 0;
$row3_2_sum = 0;
$row3_3_sum = 0;
$row3_4_sum = 0;
$row3_5_sum = 0;
// 누적 합계를 저장할 변수들
$row5_1_sum = 0;
$row5_2_sum = 0;
$row5_3_sum = 0;
$row5_4_sum = 0;
$row5_5_sum = 0;
$row5_6_sum = 0;
$row5_7_sum = 0; // col39의 합
$row5_8_sum = 0; // col41의 합
$row7_1_sum = 0; // 하단마감재
$row7_2_sum = 0; //
$row7_3_sum = 0; //
$row8_1_sum = 0; // 하단마감재
$row8_2_sum = 0; //
$row8_3_sum = 0; //
$row10_1_sum = 0; //
$row10_2_sum = 0; //
foreach ($decodedEstimateList as $item) {
$AC8 = floatval($item['col23']); // 셔터의 유효 길이
$surang = floatval($item['col14']); // 수량
// row3_1 계산
if ($AC8 <= 2438 || ($AC8 > 4300 && $AC8 <= 5438)) {
$row3_1 = 2 * $surang ;
} else {
$row3_1 = 0;
}
// row3_2 계산
if (($AC8 > 2438 && $AC8 <= 3000) || ($AC8 > 4300 && $AC8 <= 5438)) {
$row3_2 = 2 * $surang ;
} elseif ($AC8 > 5438 && $AC8 <= 6000) {
$row3_2 = 4;
} elseif ($AC8 > 6000 && $AC8 <= 7300) {
$row3_2 = 2 * $surang ;
} else {
$row3_2 = 0;
}
// row3_3 계산
if (($AC8 > 3000 && $AC8 <= 3500) || ($AC8 > 6000 && $AC8 <= 6500)) {
$row3_3 = 2 * $surang ;
} else {
$row3_3 = 0;
}
// row3_4 계산
if (($AC8 > 3500 && $AC8 <= 4000) || ($AC8 > 6500 && $AC8 <= 7000)) {
$row3_4 = 2 * $surang ;
} else {
$row3_4 = 0;
}
// row3_5 계산
if (($AC8 > 4000 && $AC8 <= 4300) || ($AC8 > 7000 && $AC8 <= 7300)) {
$row3_5 = 2 * $surang ;
} else {
$row3_5 = 0;
}
// 누적 합계 계산
$row3_1_sum += $row3_1 * $surang ;
$row3_2_sum += $row3_2 * $surang ;
$row3_3_sum += $row3_3;
$row3_4_sum += $row3_4;
$row3_5_sum += $row3_5;
$AQ8 = floatval($item['col32']); // 셔터의 유효 길이
// row5_1 계산
if ($AQ8 <= 1219 || ($AQ8 > 4150 && $AQ8 <= 4219) || ($AQ8 > 4219 && $AQ8 <= 4719) ||
($AQ8 > 4876 && $AQ8 <= 5219) || ($AQ8 > 5219 && $AQ8 <= 5369) || ($AQ8 > 9026 && $AQ8 <= 9219)) {
$row5_1 = 1 * $surang ;
} else {
$row5_1 = 0;
}
// row5_2 계산
if (($AQ8 > 1219 && $AQ8 <= 2438) || ($AQ8 > 4719 && $AQ8 <= 4876)) {
$row5_2 = 1 * $surang ;
} elseif (($AQ8 > 5369 && $AQ8 <= 5938) || ($AQ8 > 6000 && $AQ8 <= 6438) ||
($AQ8 > 6500 && $AQ8 <= 6588) || ($AQ8 > 8300 && $AQ8 <= 8376)) {
$row5_2 = 1 * $surang ;
} elseif (($AQ8 > 8438 && $AQ8 <= 8876) || ($AQ8 > 9000 && $AQ8 <= 9026) ||
($AQ8 > 9219 && $AQ8 <= 9438) || ($AQ8 > 10150 && $AQ8 <= 10738)) {
$row5_2 = 2 * $surang ;
} else {
$row5_2 = 0;
}
// row5_3 계산
if (($AQ8 > 2438 && $AQ8 <= 3000) || ($AQ8 > 4150 && $AQ8 <= 4219) ||
($AQ8 > 5369 && $AQ8 <= 5438) || ($AQ8 > 5938 && $AQ8 <= 6000) ||
($AQ8 > 6438 && $AQ8 <= 6500) || ($AQ8 > 7000 && $AQ8 <= 7150)) {
$row5_3 = 1 * $surang ;
} elseif (($AQ8 > 8376 && $AQ8 <= 8438) || ($AQ8 > 8876 && $AQ8 <= 9000) ||
($AQ8 > 9438 && $AQ8 <= 10150) || ($AQ8 > 10738 && $AQ8 <= 11000)) {
$row5_3 = 2 * $surang ;
} else {
$row5_3 = 0;
}
// row5_4 계산
if (($AQ8 > 3000 && $AQ8 <= 3500) || ($AQ8 > 4219 && $AQ8 <= 4719) ||
($AQ8 > 5438 && $AQ8 <= 5938) || ($AQ8 > 6438 && $AQ8 <= 6500) ||
($AQ8 > 6588 && $AQ8 <= 7000) || ($AQ8 > 7150 && $AQ8 <= 7650)) {
$row5_4 = 1 * $surang ;
} elseif (($AQ8 > 8300 && $AQ8 <= 8376) || ($AQ8 > 9219 && $AQ8 <= 9438)) {
$row5_4 = 2 * $surang ;
} else {
$row5_4 = 0;
}
// row5_5 계산
if (($AQ8 > 3500 && $AQ8 <= 4000) || ($AQ8 > 4876 && $AQ8 <= 5219) ||
($AQ8 > 6000 && $AQ8 <= 6438) || ($AQ8 > 7150 && $AQ8 <= 7500) ||
($AQ8 > 7650 && $AQ8 <= 8000) || ($AQ8 > 8000 && $AQ8 <= 8150)) {
$row5_5 = 1 * $surang ;
} elseif (($AQ8 > 8438 && $AQ8 <= 8876) || ($AQ8 > 9026 && $AQ8 <= 9219) ||
($AQ8 > 9500 && $AQ8 <= 10000) || ($AQ8 > 10150 && $AQ8 <= 10438) ||
($AQ8 > 10738 && $AQ8 <= 11000)) {
$row5_5 = 2 * $surang ;
} else {
$row5_5 = 0;
}
// row5_6 계산
if (($AQ8 > 4000 && $AQ8 <= 4150) || ($AQ8 > 5219 && $AQ8 <= 5369) ||
($AQ8 > 6500 && $AQ8 <= 6588) || ($AQ8 > 7000 && $AQ8 <= 7150) ||
($AQ8 > 7500 && $AQ8 <= 7650) || ($AQ8 > 8000 && $AQ8 <= 8150)) {
$row5_6 = 1 * $surang ;
} elseif (($AQ8 > 8150 && $AQ8 <= 8300) || ($AQ8 > 9000 && $AQ8 <= 9026) ||
($AQ8 > 10000 && $AQ8 <= 10150) || ($AQ8 > 10438 && $AQ8 <= 10738)) {
$row5_6 = 2 * $surang ;
} else {
$row5_6 = 0;
}
// row5_7과 row5_8 계산 (각 열의 합)
$row5_7_sum += floatval($item['col39']);
$row5_8_sum += floatval($item['col41']);
$row10_1_sum += floatval($item['col30']); // 레일용 연기차단제 산출해야 함.
$row10_2_sum += floatval($item['col42']); // 케이스용 연기차단제
// 누적 합계 계산
$row5_1_sum += $row5_1;
$row5_2_sum += $row5_2;
$row5_3_sum += $row5_3;
$row5_4_sum += $row5_4;
$row5_5_sum += $row5_5;
$row5_6_sum += $row5_6;
$row7_1_sum += floatval($item['col44']);
$row8_1_sum += floatval($item['col45']);
$row7_2_sum += floatval($item['col47']);
$row8_2_sum += floatval($item['col48']);
$row7_3_sum += floatval($item['col50']);
$row8_3_sum += floatval($item['col51']);
}
// 테이블 출력
echo '
';
echo '
';
echo '';
echo '';
echo ' 2.3 절곡 | ';
echo ' (1) 가이드레일 (EGI 1.6T/ SUS 1.2T) | ';
echo ' (2) 케이스 (EGI 1.6T) | ';
echo ' (3) 하단마감재 (SUS 1.2T) | ';
echo ' (4) 연기차단재 | ';
echo '
';
echo ''; // 2행
echo '| 사이즈 | ';
echo '수량 | ';
echo '사이즈 | ';
echo '수량 | ';
echo '분류 | ';
echo '3000 | ';
echo '4000 | ';
echo '종류 | ';
echo '수량 | ';
echo '
';
echo ''; // 3행
echo '| 2438 | ';
echo '' . ($row3_1_sum ?: '') . ' | ';
echo '1219 | ';
echo '' . ($row5_1_sum ?: '') . ' | ';
echo ' 하단마감재 (SUS 1.2T) | ';
echo '' . ($row7_1_sum ?: '') . ' | ';
echo '' . ($row8_1_sum ?: '') . ' | ';
echo '레일용 | ';
echo '' . ($row10_1_sum ?: '') . ' | ';
echo '
';
echo ''; // 4행
echo '| 3000 | ';
echo '' . ($row3_2_sum ?: '') . ' | ';
echo '2438 | ';
echo '' . ($row5_2_sum ?: '') . ' | ';
echo '
';
echo '';
echo '| 3500 | ';
echo '' . ($row3_3_sum ?: '') . ' | ';
echo '3000 | ';
echo '' . ($row5_3_sum ?: '') . ' | ';
echo '
';
echo '';
echo '| 4000 | ';
echo '' . ($row3_4_sum ?: '') . ' | ';
echo '3500 | ';
echo '' . ($row5_4_sum ?: '') . ' | ';
echo ' 하단보강엘바 (EGI 1.2T) | ';
echo '' . ($row7_2_sum ?: '') . ' | ';
echo '' . ($row8_2_sum ?: '') . ' | ';
echo '케이스용 | ';
echo '' . ($row10_2_sum ?: '') . ' | ';
echo '
';
echo '';
echo '| 4300 | ';
echo '' . ($row3_5_sum ?: '') . ' | ';
echo '4000 | ';
echo '' . ($row5_5_sum ?: '') . ' | ';
echo '
';
echo '';
echo ' | ';
echo ' | ';
echo '4150 | ';
echo '' . ($row5_6_sum ?: '') . ' | ';
echo '
';
echo '';
echo ' | ';
echo ' | ';
echo '상부덮개 | ';
echo '' . ($row5_7_sum ?: '') . ' | ';
echo ' 하단보강평철 | ';
echo '' . ($row7_3_sum ?: '') . ' | ';
echo '' . ($row8_3_sum ?: '') . ' | ';
echo '
';
echo '';
echo ' | ';
echo ' | ';
echo '마구리 | ';
echo '' . ($row5_8_sum ?: '') . ' | ';
echo '
';
echo '';
echo '
';
echo '
';
}
// 부자재 (감기샤프트 등) 부분
if (True) {
$data = [];
$row2_4_sum = 0;
$row3_4_sum = 0;
$row4_4_sum = 0;
$row5_4_sum = 0;
$row6_4_sum = 0;
$row7_4_sum = 0;
$row8_4_sum = 0;
$row9_4_sum = 0;
$row10_4_sum = 0;
$row11_4_sum = 0;
$row12_4_sum = 0;
$row13_4_sum = 0;
$row2_7_sum = 0;
$row4_7_sum = 0;
$row6_7_sum = 0;
$row7_7_sum = 0;
$row8_7_sum = 0;
foreach ($decodedEstimateList as $item) {
// 무게평철
$col52 = floatval($item['col52']);
// 환봉
$col65 = floatval($item['col65']);
$col54 = floatval($item['col54']);
$col55 = floatval($item['col55']);
$col56 = floatval($item['col56']);
$col57 = floatval($item['col57']);
$col58 = floatval($item['col58']);
$col59 = floatval($item['col59']);
$col60 = floatval($item['col60']);
$col61 = floatval($item['col61']);
$col62 = floatval($item['col62']);
$col63 = floatval($item['col63']);
$col64 = floatval($item['col64']);
$col66 = floatval($item['col66']);
$col4 = $item['col4'];
$col8 = floatval($item['col8']);
$col53 = floatval($item['col53']);
// 초기화
$shaft6_1 = $shaft6_2 = $shaft6_3 = $shaft6_4 = 0;
// E8 계산
$E8 = (substr($col4, 0, 2) === 'KS') ? '스크린' : '철재';
// $shaft6_1 (이전 col61) 계산
if ($E8 === '스크린' && $col53 == 6 && $col8 > 8250 && $col8 <= 10200) {
$shaft6_1 = 1;
}
// $shaft6_2 (이전 col62) 계산
if ($E8 === '철재' && $col53 == 6 && $col8 <= 6000) {
$shaft6_2 = 1;
} elseif ($E8 === '스크린' && $col53 == 6 && $col8 > 8250 && $col8 <= 9050) {
$shaft6_2 = 1;
}
// $shaft6_3 (이전 col63) 계산
if ($E8 === '철재' && $col53 == 6 && $col8 > 6000 && $col8 <= 7000) {
$shaft6_3 = 1;
}
// $shaft6_4 (이전 col64) 계산
if ($E8 === '철재' && $col53 == 6 && $col8 > 7000 && $col8 <= 7800) {
$shaft6_4 = 1;
} elseif ($E8 === '스크린' && $col53 == 6 && $col8 > 7550 && $col8 <= 8250) {
$shaft6_4 = 1;
} elseif ($E8 === '스크린' && $col53 == 6 && $col8 > 9050 && $col8 <= 10550) {
$shaft6_4 = 1;
}
// $col54_500 계산
$col54_500 = ($E8 === '스크린' && $col53 == 6 && $col8 > 7550) ? 1 : 0;
// 누적 합계 계산 2인치 500 없어서 숫자 맞지 않음
$row2_4_sum += $col54;
$row3_4_sum += $col54_500;
$row4_4_sum += $col55;
$row5_4_sum += $col56;
$row6_4_sum += $col57;
$row7_4_sum += $col58;
$row8_4_sum += $col59;
$row9_4_sum += $col60;
$row10_4_sum += $shaft6_1;
$row11_4_sum += $shaft6_2;
$row12_4_sum += $shaft6_3;
$row13_4_sum += $shaft6_4;
$row2_7_sum += $col52; // 무게평철
$row4_7_sum += $col65;
$row6_7_sum += $col63;
$row7_7_sum += $col64;
$row8_7_sum += $col66;
}
// 테이블 출력
echo '
';
echo '
';
echo '';
echo '';
echo ' 2.4 부자재 | ';
echo ' 감기샤프트 | ';
echo '
';
echo ''; // 2행
echo '| 2인치(보조) | ';
echo '4인치 | ';
echo '5인치 | ';
echo '6인치 | ';
echo '
';
echo ''; // 3행
echo '| 300 | ';
echo '500 | ';
echo '3000 | ';
echo '4500 | ';
echo '6000 | ';
echo '6000 | ';
echo '7000 | ';
echo '8200 | ';
echo '3000 | ';
echo '6000 | ';
echo '7000 | ';
echo '8000 | ';
echo '
';
echo ''; // 4행
echo '| ' . ($row2_4_sum ?: '') . ' | ';
echo '' . ($row3_4_sum ?: '') . ' | ';
echo '' . ($row4_4_sum ?: '') . ' | ';
echo '' . ($row5_4_sum ?: '') . ' | ';
echo '' . ($row6_4_sum ?: '') . ' | ';
echo '' . ($row7_4_sum ?: '') . ' | ';
echo '' . ($row8_4_sum ?: '') . ' | ';
echo '' . ($row9_4_sum ?: '') . ' | ';
echo '' . ($row10_4_sum ?: '') . ' | ';
echo '' . ($row11_4_sum ?: '') . ' | ';
echo '' . ($row12_4_sum ?: '') . ' | ';
echo '' . ($row13_4_sum ?: '') . ' | ';
echo '
';
echo ''; // 5행
echo ' 무게평철 (50*12T) | ';
echo ' 환봉 | ';
echo ' 각파이프 | ';
echo ' 앵글 | ';
echo '
';
echo ''; // 6행
echo '| 2000 | ';
echo ' 3000 | ';
echo ' 3000 | ';
echo ' 6000 | ';
echo ' 2500 | ';
echo '
';
echo ''; // 7행
echo '| ' . ($row2_7_sum ?: '') . ' | ';
echo '' . ($row4_7_sum ?: '') . ' | ';
echo '' . ($row6_7_sum ?: '') . ' | ';
echo '' . ($row7_7_sum ?: '') . ' | ';
echo '' . ($row8_7_sum ?: '') . ' | ';
echo '
';
echo '';
echo '
';
echo '
';
}
// 비고
if (True) {
// 테이블 출력
echo '
';
echo '
';
echo '';
echo '';
echo '| 비고 | ';
echo '
★ 해당 견적서의 유효기간은 발행일 기준 1개월 입니다.
★ 견적금액의 50%를 입금하시면 발주가 진행됩니다.
| ';
echo '
';
echo ''; // 2행
echo '| 결제방법 | ';
echo '계좌이체 | ';
echo '계좌정보 | ';
echo '국민은행 796801-00-039630 | ';
echo '
';
echo ''; // 3행
echo '| 담당자 | ';
echo ' ' . $orderman . ' ' . $position . ' | ';
echo '연락처 | ';
echo '070-4351-5275 | ';
echo 'E-mail | ';
echo ' kd5130@naver.com | ';
echo '
';
echo '';
echo '
';
echo '
';
}
?>