<?php
    // json파일에서 '스크린', '철재' 불러오기
    $jsonFile = $_SERVER['DOCUMENT_ROOT'] . '/models/models.json';
    $models = [];
    if (file_exists($jsonFile)) {
        $jsonContent = file_get_contents($jsonFile);
        $models = json_decode($jsonContent, true);
        if (!is_array($models)) {
            $models = [];
        }
    }
    $screenModels = array_filter($models, function ($m) {
        return $m['slatitem'] === '스크린';
    });
    $steelModels = array_filter($models, function ($m) {
        return $m['slatitem'] === '철재';
    });
?>
<script>
    const screenModelOptions = <?= json_encode(array_column($screenModels, 'model_name')) ?>;
    const steelModelOptions = <?= json_encode(array_column($steelModels, 'model_name')) ?>;
</script>

<script>    
function addRow(tableBody, rowData, typebutton, afterRow = null, autoData = {}) {
    var newRow = $('<tr>');
    var rowCount = tableBody.children('tr').length + 1;

    newRow.append('<td class="text-center" style="width:80px;">' +
        '<div class="d-flex justify-content-center align-items-center mt-1">' + 
        '<span class="text-primary fs-4 viewNoBtn add-row ms-1 me-1" data-table="' + tableBody.closest('table').attr('id') + '">+</span>' +
        '<span class="text-danger fs-4 viewNoBtn remove-row ms-2 me-1">-</span>' +
		'<span class="text-success fs-6 viewNoBtn copy-row ms-2"><i class="bi bi-copy"></i></span>' +
        '</div></td>');

    newRow.append('<td class="text-center" style="width:50px;">' +
    '<div class="d-flex flex-column justify-content-center">' +    
    '<input type="text" name="col1[]" style="width:50px;" class="form-control text-center col-input col1" readonly autocomplete="off">' +
    '</div></td>');

for (let i = 2; i <= 71; i++) { 
    let width = [2, 3, 4, 5, 7, 20, 22, 23, 29, 30, 36,  45].includes(i) ? '85px' : '50px';    
    width = [6].includes(i) ? '170px' : width;         
    width = [18].includes(i) ? '60px' : width; 
    width = [23,32,43,46,49,53,62].includes(i) ? '50px' : width;  // 화면에 안보이는 수준이면 5px 적용, 검증할때는 50px로 한다.		 
    let options = '';

    if (i === 10) { // 스크린 제작사이즈 가로, 세로 설정 추가 250630
        // 원래 1개의 열인데, 3개 생성함
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col10_SW[]" style="width:' + width + ';" class="form-control text-center text-primary fw-bold col-input col10_SW-input  col10_SW" value="' + (rowData['col10_SW'] || rowData['col10'] || '') + '" autocomplete="off">' + 
            '</div></td>');
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col11_SH[]" style="width:' + width + ';" class="form-control text-center text-primary fw-bold col-input col11_SH-input  col11_SH" value="' + (rowData['col11_SH'] || rowData['col11'] || '') + '" autocomplete="off">' + 
            '</div></td>');
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col10[]" style="width:' + width + ';" class="form-control text-center col-input col10-input  col10" value="' + (rowData['col10'] || '') + '" autocomplete="off">' + 
            '</div></td>');
    }    
    else if (i === 14) { // col14에 수량버튼
        newRow.append('<td class="text-center" style="width:200px;">' +
        '<div class="d-flex justify-content-center align-items-center">' +
        '<input type="text" name="col14[]" style="width:' + width + ';" class="form-control text-center col-input col14-input col14" value="' + (rowData['col14'] || '') + '" autocomplete="off">' +
        '<button type="button" class="btn btn-sm btn-outline-primary ms-1 calc-btn viewNoBtn" title="자동산출"><i class="bi bi-calculator-fill"></i></button>' +
        '</div></td>');
    }    	
    else if (i === 36) {
        // col36 셔터박스는 4가지 표현
        let col36Value = rowData['col36'] || '';
        let col36CustomValue = rowData['col36_custom'] || '';
        let col36frontbottom = rowData['col36_frontbottom'] || '';
        let col36railwidth = rowData['col36_railwidth'] || '';
        let col36boxdirectionValue = rowData['col36_boxdirection'] || '';
        
        let selectHtml = '<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;"  class="form-select text-center w-auto viewmode me-2 col-select col' + i + '-select col' + i +' ">' +
            '<option value=""> (없음) </option>' +
            '<option value="500*380"' + (col36Value === '500*380' ? ' selected' : '') + '>500*380</option>' +
            '<option value="500*350"' + (col36Value === '500*350' ? ' selected' : '') + '>500*350</option>' +
            '<option value="custom"' + (col36Value === 'custom' ? ' selected' : '') + '>직접 입력</option>' +
            '</select>';
        
        let inputHtml = '<input type="text" name="col' + i + '_custom' + '[]" class="form-control text-center col36_custom col-input col' + i + '-custom-input" style="width:' + width + ';' + 
            (col36Value === 'custom' ? '' : 'display:none;') + '" value="' + (col36Value === 'custom' ? col36CustomValue : '') + '" placeholder="직접 입력">';
					
		let inputHtmlfrontbottom = '<input type="text" name="col' + i + '_frontbottom' + '[]" class="form-control text-center col36_frontbottom col-input col' + i + '-frontbottom-input me-1 ms-1" style="width:50px;"' + 
			' value="' + (col36frontbottom === '' ? '50' : col36frontbottom) + '" placeholder="전면밑">';
				
		let inputHtmlrailwidth = '<input type="text" name="col' + i + '_railwidth' + '[]" class="form-control text-center col36_railwidth col-input col' + i + '-railwidth-input me-1 ms-1" style="width:50px;"' + 
			' value="' + (col36railwidth === '' ? '70' : col36railwidth) + '" placeholder="레일폭">';

			  
        let selectHtmlboxdirection = '<select name="col' + i + '_boxdirection[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode  me-1 ms-1 col-select col' + i +'_boxdirection">' +
            '<option value="양면"' + (col36boxdirectionValue === '양면' ? ' selected' : '') + '>양면</option>' +
            '<option value="밑면"' + (col36boxdirectionValue === '밑면' ? ' selected' : '') + '>밑면</option>' +
            '<option value="후면"' + (col36boxdirectionValue === '후면' ? ' selected' : '') + '>후면</option>' 
            '</select>';			  			  

        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center align-items-center">' +
            selectHtml + inputHtml + inputHtmlfrontbottom + inputHtmlrailwidth + selectHtmlboxdirection +
            '</div></td>');

        // select의 값이 변경될 때, '직접 입력' 선택 시 input 필드를 보여줌
        newRow.find('.col' + i + '-select').on('change', function() {
            var selectedValue = $(this).val();
            var customInput = $(this).closest('td').find('.col' + i + '-custom-input');

            if (selectedValue === 'custom') {
                customInput.show();
                customInput.focus();
            } else {
                customInput.hide();
                customInput.val('');
            }
        });
    }         
    else if (i === 45) {
        // col45 기존 처리
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col45[]" style="width:' + width + ';" class="form-control text-center col-input col45-input col45" value="' +  (rowData['col45'] || '')  + '" autocomplete="off">' +
            '</div></td>');
        // col45_wing 추가
        let wingValue = (typeof rowData['col45_wing'] !== 'undefined' && rowData['col45_wing'] !== null && rowData['col45_wing'] !== '') 
            ? rowData['col45_wing'] 
            : ($('#maguriWing').val() || '');
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col45_wing[]" style="width:60px;" class="form-control text-center col-input col45Wing-input col45" value="' + wingValue + '" autocomplete="off">' +
            '</div></td>');
        continue;
    }        
    else if ([4, 6, 7, 19, 21].includes(i)) {
        // 기존 코드 유지       
     if (i === 4) {
			let options = '<option value=""></option>';
			screenModelOptions.forEach(function(model) {
				var selected = (rowData['col' + i] === model) ? ' selected' : '';
				options += '<option value="' + model + '"' + selected + '>' + model + '</option>';
			});
			newRow.append(
				'<td class="text-center">' +
					'<div class="d-flex justify-content-center">' +
						'<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col-select col' + i + '-select changeModel  col' + i + ' ">' + 
							options +
						'</select>' +
					'</div>' +
				'</td>'
			);
		}
		else if (i === 6) {
            options = '<option value="(없음)"> (없음) </option>' + 
                      '<option value="벽면형(120*70)"' + (rowData['col' + i] === '벽면형(120*70)' ? ' selected' : '') + '>벽면형(120*70)</option>' +
                      '<option value="측면형(120*120)"' + (rowData['col' + i] === '측면형(120*120)' ? ' selected' : '') + '>측면형(120*120)</option>' +
                      '<option value="혼합형(120*70)(120*120)"' + (rowData['col' + i] === '혼합형(120*70)(120*120)' ? ' selected' : '') + '>혼합형(120*70)(120*120)</option>';
			newRow.append('<td class="text-center">' +
						'<div class="d-flex justify-content-center">' +
						'<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;"  class="form-select w-auto text-center viewmode col-select col' + i + '-select  col' + i + ' ">' +
						options +
						'</select></div></td>');					  
        } else if (i === 7) {
            options = '<option value="(없음)"> (없음) </option>' + 
                      '<option value="SUS마감"' + (rowData['col' + i] === 'SUS마감' ? ' selected' : '') + '>SUS마감</option>' +
                      '<option value="EGI마감"' + (rowData['col' + i] === 'EGI마감' ? ' selected' : '') + '>EGI마감</option>';
			newRow.append('<td class="text-center">' +
						'<div class="d-flex justify-content-center">' +
						'<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col-select col' + i + '-select  col' + i + ' ">' +
						options +
						'</select></div></td>');					  
        }   else if (i === 19) {  // 모터 용량변경시
            const capacityOptions = {
                '380*180': ['150K', '300K', '400K'],
                '530*320': ['300K', '400K'],
                '600*350': ['500K', '600K'],
                '690*390': ['800K', '1000K']
            };

        let selectedValue = rowData['col' + i];
        let options = '<option value="(없음)"> (없음) </option>';

        for (const motors of Object.values(capacityOptions)) {
            for (const motor of motors) {
                options += '<option value="' + motor + '"' + 
                        (selectedValue === motor ? ' selected' : '') + '>' +
                        motor + '</option>';
            }
        }
            newRow.append('<td class="text-center">' +
                '<div class="d-flex justify-content-center">' +
                '<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col-select col' + i + '-select  col' + i + ' ">' +
                options +
                '</select></div></td>');
        } else if (i === 21) {
            options = '<option value=""> (없음) </option>' +
                      '<option value="4"' + (rowData['col' + i] === '4' ? ' selected' : '') + '>4</option>' +
                      '<option value="5"' + (rowData['col' + i] === '5' ? ' selected' : '') + '>5</option>' +
                      '<option value="6"' + (rowData['col' + i] === '6' ? ' selected' : '') + '>6</option>' +
                      '<option value="8"' + (rowData['col' + i] === '8' ? ' selected' : '') + '>8</option>';
			newRow.append('<td class="text-center">' +
						'<div class="d-flex justify-content-center">' +
						'<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col-select col' + i + '-select  col' + i + ' ">' +
						options +
						'</select></div></td>');					  
        }
    }  else if ([18].includes(i)) {        
        let options = '';    
        // 경동,대한,기타로 계산서 발행 주체를 선택함
		options = '<option value="(없음)"> (없음) </option>' + 
                      '<option value="경동(견적가포함)" ' + (rowData['col18_brand'] === '경동(견적가포함)' ? ' selected' : '') + '>경동(견적가포함)</option>' +
                      '<option value="대한" ' + (rowData['col18_brand'] === '대한' ? ' selected' : '') + '>대한</option>' +
                      '<option value="기타" ' + (rowData['col18_brand'] === '기타' ? ' selected' : '') + '>기타</option>';
            
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<select name="col' + i + '_brand[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col' + i + '_brand col-select  col' + i + ' ">' +
            options +
            '</select></div></td>');

		options = '<option value="(없음)"> (없음) </option>' + 
                      '<option value="220V" ' + (rowData['col' + i] === '220V' ? ' selected' : '') + '>220V</option>' +
                      '<option value="380V" ' + (rowData['col' + i] === '380V' ? ' selected' : '') + '>380V</option>';
            
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col' + i + ' col-select col' + i + '-select">' +
            options +
            '</select></div></td>');
			
		// 유선/무선 선택
        options = '';        
            options = '<option value="(없음)"> (없음) </option>' + 
                      '<option value="유선" ' + (rowData['col18_wireless'] === '유선' ? ' selected' : '') + '>유선</option>' +
                      '<option value="무선" ' + (rowData['col18_wireless'] === '무선' ? ' selected' : '') + '>무선</option>';
        		
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<select name="col18_wireless[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col18_wireless col-select">' +
				options +
            '</select></div></td>');			

    } 
    else if ([59].includes(i)) {
        let col59Value = rowData['col59'] || '1';  // 수량
        let col59Inch = rowData['col59_inch'] || '2인치';
        let col59Length = rowData['col59_length'] || '300';

        let selectHtml = '<select name="col' + i + '_inch[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode me-2 col-select col' + i + '-inch-select">' +
            '<option value="(없음)"> (없음) </option>' +
            '<option value="2인치"' + (col59Inch === '2인치' ? ' selected' : '') + '>2인치</option>' +
            '<option value="3인치"' + (col59Inch === '3인치' ? ' selected' : '') + '>3인치</option>' +
            '</select>';

        let inputHtmlLength = '<input type="text" name="col' + i + '_length[]" class="form-control text-center col-input col' + i + '-length-input me-2" style="width:60px;" ' +
            'value="' + col59Length + '" placeholder="길이">';

        let inputHtmlQty = '<input type="text" name="col' + i + '[]" class="form-control text-center col59-input col-input col' + i + '-qty-input" style="width:60px;" ' +
            'value="' + col59Value + '" placeholder="수량">';

        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center align-items-center">' +
            selectHtml + inputHtmlLength + inputHtmlQty +
            '</div></td>');
    }
    
    else if ([5,  12, 13, 23, 37, 48, 51, 54, 58, 67].includes(i)) {  // readonly 추가
        // 기존 코드 유지
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col' + i + '[]" style="width:' + width + ';" class="form-control text-center col-input col' + i + '-input" readonly  value="' + (rowData['col' + i] || '') + '" autocomplete="off">' + 
            '</div></td>');				

    } else {
        // 기본 텍스트 필드 추가
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col' + i + '[]" style="width:' + width + ';" class="form-control text-center col-input col' + i + '-input  col' + i + '" value="' + (rowData['col' + i] || '') + '" autocomplete="off">' + 
            '</div></td>');
    }
}

// 기준 행 다음에 삽입하거나, 없으면 마지막에 삽입
if (afterRow && afterRow.length) {
        afterRow.after(newRow);
    } else {
        tableBody.append(newRow);
    }
    
    // col4 모델 변경시
    newRow.find('.col4-select').on('input change', function() {
        var row = $(this).closest('tr');
		modelChange_screen(row);
    });    
    // col18 모터회사 변경시 처리
    newRow.find('.col18_brand').on('change', function() {
        var row = $(this).closest('tr');
        const qty = row.find('.col14-input').val();
        const col18_brandValue = row.find('.col18_brand').val();
        if(col18_brandValue === '기타') {
            row.find('.col15-input').val('');
            row.find('.col16-input').val('');
            row.find('.col17-input').val('');
            row.find('.col18-select').val('(없음)');
            row.find('.col18_wireless').val('(없음)');
            row.find('.col19-select').val('(없음)');
            row.find('.col20-input').val('');
            return;
        }      
        else if (col18_brandValue === '(없음)') { // 기타일 경우
            row.find('.col18-select').val('(없음)');
            row.find('.col18_wireless').val('(없음)');
            row.find('.col19-select').val('(없음)');
            row.find('.col20-input').val('');
            return;
        }  
        else { // 경동, 대한일 경우
            row.find('.col15-input').val(qty);
            row.find('.col16-input').val('');
            row.find('.col17-input').val(qty);
            row.find('.col18').val("220V");
            row.find('.col18_wireless').val("유선");
            row.find('.col18_brand').val(col18_brandValue);
            updateCol21(newRow);	// 샤프트 인치
            updateCol19(newRow);   // 모터용량산출
            updateCol20(newRow);   // 브라켓 산출
        }  
    });    
  
    // col19 모터용량변경시
    newRow.find('.col19-select').on('change', function() {
        var row = $(this).closest('tr');
        const col19Value = row.find('.col19-select').val();
        if(col19Value === '(없음)' || col19Value === '') {
            row.find('.col20-input').val('');
            return;
        }
        updateCol20(row);
        updateCol21(row);
    });    
    // col21 샤프트인치를 모터에서 변경할 경우 샤프트 전체 인치를 변경해줌
    newRow.find('.col21-select').on('input change', function() {
        var row = $(this).closest('tr');
        updateCol21_Force(row);
    });    
    // col36 셔터박스 크기 변경시 강제로 마구리 크기 변경
    newRow.find('.col36').on('input change', function() {
        var row = $(this).closest('tr');
		updateCol36_Force(row);
    });
    	
    // col36_custom 셔터박스 크기 변경시 마구리 크기 변경
    newRow.find('.col36_custom').on('input change', function() {
        var row = $(this).closest('tr');
		updateCol36_input(row);		
    });

	// commonExe(newRow);    
    newRow.find('.col4-select').on('change', function() {
        var col4Value = $(this).val();
        var col5Input = $(this).closest('tr').find('.col5-input');

        if (col4Value === "KSE01" || col4Value === "KSS01" || col4Value === "KSS02" || col4Value === "KDSS01" ) {
            col5Input.val("실리카");
        } else {
            col5Input.val("와이어");
        }
        // commonExe(newRow);
    });
  
    newRow.find('.col4-select').trigger('change');
    newRow.find('.col6-select').trigger('change');
    newRow.find('.col8-input').trigger('change');
    newRow.find('.col9-input').trigger('change');

    // 스크린제작사이즈 col10_SW, col11_SH 강제 변경시
    newRow.find('.col10_SW-input, .col11_SH-input').on('input change', function() {
        var row = $(this).closest('tr');        
        console.log('col10_SW, col11_SH 제작사이즈 강제 변경 호출');
        updateCol10and11_Force(row);
    });      

    // col10, 11 제작사이즈 강제 변경시
    newRow.find('.col10-input, .col11-input').on('input change', function() {
        var row = $(this).closest('tr');        
        console.log('col10, 11 제작사이즈 강제 변경 호출');
        updateCol12and13(row); // 면적, 중량 계산
        updateCol10and11_Force(row);
    });      

    // console.log('rowData : ' + rowData);
    if(!(rowData['col14'] || '')) {
        firstinput_screen(newRow);
    }

    updateSerialNumbers(tableBody);  // 중요!

    // ① data-auto 속성 세팅 및 기존 수동편집 표시
    newRow.find('input, select').each(function() {
        const $el    = $(this);
        // name 속성에서 [] 제거
        const name   = $el.attr('name').replace('[]', '');
        // 자동산출 스냅샷 값
        const aVal   = autoData[name] || '';
        // 실제 로드된 값
        const curVal = $el.val() || '';

        // data-auto 에 저장
        $el.attr('data-auto', aVal);

        // 값이 다르면 수동편집된 것으로 표시
        if (curVal.toString() !== aVal.toString()) {
            $el.addClass('manually-edited');
        }            
    });

    newRow.find('.calc-btn').on('click', function () {
    if (mode !== 'view') {
        Swal.fire({
            title: '수량계산을 진행하시겠습니까?',
            text: '기존 데이터에 덮어씁니다.',
            icon: 'warning',
            showCancelButton: true,
            confirmButtonText: '예',
            cancelButtonText: '아니오'
        }).then((result) => {
            if (result.isConfirmed) {
                var row = $(this).closest('tr');
                commonExe(row);                
                alertToast('산출 완료');

                var qty14 = parseFloat(row.find('.col14-input').val()) || 0;
                ['.col15-input', '.col16-input', '.col17-input'].forEach(function (selector) {
                    var $el = row.find(selector);
                    var str = $el.val();
                    if (str !== '') {
                        var v = parseFloat(str);
                        if (!isNaN(v)) {
                            $el.val(qty14);
                        }
                    }
                });

                // 클릭 즉시 data-auto 갱신
                row.find('input, select').each(function () {
                    $(this)
                        .attr('data-auto', $(this).val())
                        .removeClass('manually-edited');
                });

                calculateAmounts();
                }
            });
        }
    });

    newRow.find('.col-input, .col-select').on('input change', function() {
        Screen_updateTotals();
        var $el     = $(this);
        var autoVal = $el.attr('data-auto') || '';
        var curVal  = $el.val()         || '';
        $el.toggleClass('manually-edited', curVal.toString() !== autoVal.toString());      
        calculateAmounts();                                 
    });

    Screen_updateTotals();

    // addRow 함수 맨 끝, newRow가 DOM에 붙은 직후에 추가
    // ------------------------------------------------------
    // col1~col70 input 요소들의 value 속성을 실제 값으로 셋해주기
    // for (let i = 1; i <= 70; i++) {
    // // name 속성(colX[]) 기준으로 선택
    // newRow.find(`input[name="col${i}[]"]`).each(function() {
    //     this.setAttribute('value', this.value);
    // });
    // }
    // ------------------------------------------------------
    calculateAmounts();
}

function updateSerialNumbers(tableBody) {
    tableBody.find('tr').each(function(index) {
        // 1. 시리얼 넘버 갱신
        $(this).find('.serial-number').text(index + 1);

        // 2. col1[] 입력 필드 갱신
        $(this).find('input[name="col1[]"]').val(index + 1);
    });
}

function firstinput_screen(row) {
    row.find('.col4-select').val('KSS01');    
    row.find('.col5-input').val('실리카');    
    row.find('.col6-select').val('벽면형(120*70)');    
    row.find('.col7-select').val('SUS마감');    
    row.find('.col14-input').val(1);
    row.find('.col15-input').val(1);
    row.find('.col17-input').val(1);
    row.find('.col18').val("220V");
    row.find('.col18_wireless').val("유선");
    row.find('.col18_brand').val("경동(견적가포함)");
    //모델 변경시킴
    modelChange_screen(row);
}

function commonScreenFn(row)
{   
    updateCol12and13(row); 
    updateCol21(row);	// 샤프트 인치를 먼저 산출해야 모터용량 산출됨	
    updateCol19(row);
    updateCol20(row);
    updateCol22(row);        
    updateCol23(row);
    updateCol29(row); // 하부base
    updateCol31to35(row);
    updateCol36(row);
    updateCol45(row);        
    updateCol37(row);
    updateCol38to43(row);
    updateCol44(row);		
    updateCol47(row);
    updateCol48(row);
    updateCol51(row);
    updateCol54(row);
    updateCol57(row);		
    updateCol58(row);		
    updateCol59(row);
    updateCol60to65(row);
    updateCol66(row);
    updateCol67(row);
    updateCol68to69(row);
    updateCol70(row);
    Screen_updateTotals();
}  

function commonExe(row) {        
    updateCol10and11(row);
    commonScreenFn(row);
}

// 모델변경시 
function modelChange_screen(row) {
    var model = row.find('.col4-select').val();
	$("#model_name").val(model);    
}

// 제작사이즈 강제로 변경시
function updateCol10and11_Force(row) {
    // 제작치수 부분 제외한 공통함수 호출
	commonScreenFn(row);
}

// 각 열에 대한 업데이트 함수들
function updateCol10and11(row) {
	var makeWidth = $("#makeWidth").val();
	var makeHeight = $("#makeHeight").val();
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;
    var col9Value = parseFloat(row.find('.col9-input').val()) || 0;

    // 부자재 제작사이즈
    row.find('.col10-input').val(col8Value + Number(makeWidth));    
    row.find('.col11-input').val(col9Value + Number(makeHeight));    

    // 스크린 제작사이즈 업데이트
    row.find('.col10_SW-input').val(col8Value + Number(makeWidth));    
    row.find('.col11_SH-input').val(col9Value + Number(makeHeight));    

    row.find('.col15-input').val(1);
    row.find('.col17-input').val(1);
    row.find('.col18').val("220V");
    row.find('.col18_wireless').val("유선");
    row.find('.col18_brand').val("경동(견적가포함)");
}

function updateCol12and13(row) {
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;
    var col10Value = parseFloat(row.find('.col10-input').val()) || 0;
    var col11Value = parseFloat(row.find('.col11-input').val()) || 0;
    var area = (col10Value * col11Value) / 1000000;
    row.find('.col12-input').val(area.toFixed(2));
    var weight = (area * 2) + (col8Value / 1000 * 14.17);		
    row.find('.col13-input').val(weight.toFixed(2));
}

function updateCol19(row) {
    var col21Value = parseFloat(row.find('.col21-select').val()) || 0;
    var col13Value = parseFloat(row.find('.col13-input').val()) || 0;
    var col19Select = row.find('.col19-select');

    var motorCapacity = null;

    if ((col21Value === 4 && col13Value <= 150) ||
        (col21Value === 5 && col13Value <= 123) ||
        (col21Value === 6 && col13Value <= 104)) {
        motorCapacity = '150K';
    } else if ((col21Value === 4 && col13Value > 150 && col13Value <= 300) ||
               (col21Value === 5 && col13Value > 123 && col13Value <= 246) ||
               (col21Value === 6 && col13Value > 104 && col13Value <= 208)) {
        motorCapacity = '300K';
    } else if ((col21Value === 4 && col13Value > 300 && col13Value <= 400) ||
               (col21Value === 5 && col13Value > 246 && col13Value <= 327) ||
               (col21Value === 6 && col13Value > 208 && col13Value <= 300)) {
        motorCapacity = '400K';
    } else if ((col21Value === 5 && col13Value > 327 && col13Value <= 500) ||
               (col21Value === 6 && col13Value > 300 && col13Value <= 424)) {
        motorCapacity = '500K';
    } else if ((col21Value === 5 && col13Value > 500 && col13Value <= 600) ||
               (col21Value === 6 && col13Value > 424 && col13Value <= 508)) {
        motorCapacity = '600K';
    } else if ((col21Value === 6 && col13Value > 600 && col13Value <= 800)) {
        motorCapacity = '800K';
    } else if ((col21Value === 6 && col13Value > 800 && col13Value <= 1000)) {
        motorCapacity = '1000K';
    }

    // 값 설정
    if (motorCapacity !== null && col19Select.find(`option[value="${motorCapacity}"]`).length > 0) {
        col19Select.val(motorCapacity);
    } else {
        col19Select.val('(없음)');
    }
    // 1000K는 380V만 존재함
    if (motorCapacity === '1000K') {
        row.find('.col18').val('380V');
    }    
}

function updateCol20(row) {
    // console.log('updateCol20 동작');
    var motorValue = row.find('.col19-select').val();
    var col20Input = row.find('.col20-input');

    let bracketSize = '';

    if (['150K', '300K', '400K'].includes(motorValue)) {
        bracketSize = '380*180';
    } else if (['300K', '400K'].includes(motorValue)) {
        bracketSize = '530*320';
    } else if (['500K', '600K'].includes(motorValue)) {
        bracketSize = '600*350';
    } else if (['800K', '1000K'].includes(motorValue)) {
        bracketSize = '690*390';
    } else {
        bracketSize = '';
    }

    col20Input.val(bracketSize);

    // 1000K는 380V만 존재함
    if (motorValue === '1000K') {
         row.find('.col18-select').val('380V');
    }  

    updateCol22(row);  // 이후 작업이 있다면 유지
}

function updateCol21(row) {
    var col10Value = parseFloat(row.find('.col10-input').val()) || 0;
    var Col21Input = row.find('.col21-select');
    
    if (col10Value <= 6000) {
        Col21Input.val(4);
    } else if (col10Value > 6000 && col10Value <= 8200) {
        Col21Input.val(5);
    } else {
        Col21Input.val(0);
    }

//철재해당 공식
    // var col10Value = parseFloat(row.find('.col10-input').val()) || 0;  // 셔터 길이 기장
    // var col13Value = parseFloat(row.find('.col13-input').val()) || 0;  // 중량    
    // var col59Input = row.find('.col59-input');
    
	// if (col10Value <= 4500) {
	// 	if (col13Value <= 400) {
	// 		col59Input.val(4);
	// 	} else if (col13Value > 400) {
	// 		col59Input.val(5);
	// 	}
	// } else if (col10Value > 4500 && col10Value <= 5600) {
	// 	if (col13Value <= 600) {
	// 		col59Input.val(5);
	// 	} else if (col13Value > 600) {
	// 		col59Input.val(6);
	// 	}
	// } else if (col10Value > 5600 && col10Value <= 7800) {
	// 	if (col13Value <= 800) {
	// 		col59Input.val(6);
	// 	} else if (col13Value > 800) {
	// 		col59Input.val(8);
	// 	}
	// } else if (col10Value > 7800 && col13Value <= 10000) {
	// 	col59Input.val(8);
	// } else {
	// 	col59Input.val(0);  // 조건에 맞지 않는 경우 기본값 0
	// }

}

function updateCol21_Force(row) {
    // console.log('모터 인치변경 시도');

    var col21Value = parseFloat(row.find('.col21-select').val()) || '';
    var col58Input = row.find('.col58-input');
    col58Input.val(col21Value);

    updateCol60to65(row);  // 기존 로직

    // 마지막에  수동 수정 여부 처리
    Screen_updateTotals();

    var $el = col58Input;
    var autoVal = $el.attr('data-auto') || '';
    var curVal = $el.val() || '';
    $el.toggleClass('manually-edited', curVal.toString() !== autoVal.toString());

    calculateAmounts();  // 최종 계산
}

function updateCol22(row) {
    var col20Value = row.find('.col20-input').val();
    var col22Input = row.find('.col22-input');

    let bracketPipe = '';

    switch (col20Value) {
        case '380*180':
            bracketPipe = '40*40*380';
            break;
        case '530*320':
            bracketPipe = '50*50*530';
            break;
        case '600*350':
            bracketPipe = '50*50*600';
            break;
        case '690*390':
            bracketPipe = '50*50*690';
            break;
        default:
            bracketPipe = '';
    }

    col22Input.val(bracketPipe);
}

function updateCol23(row) {
    var col9Value = parseFloat(row.find('.col9-input').val()) || 0;
    var col23Input = row.find('.col23-input');
    // 오픈 높이에 250 더함
    col23Input.val(col9Value + 250);

    updateCol24to28(row);
}

function updateCol24to28(row) {	
    var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량
    var col23Value = parseFloat(row.find('.col23-input').val()) || 0;
    
    var col24Input = row.find('.col24-input');
    col24Input.val(col23Value <= 2438 ? 2 : 0);

    var col25Input = row.find('.col25-input');
    col25Input.val((col23Value > 2438 && col23Value <= 3000) ? 2*col14Value : 0);

    var col26Input = row.find('.col26-input');
    col26Input.val((col23Value > 3000 && col23Value <= 3500) ? 2*col14Value : 0);

    var col27Input = row.find('.col27-input');
    col27Input.val((col23Value > 3500 && col23Value <= 4000) ? 2*col14Value : 0);

    var col28Input = row.find('.col28-input');
    col28Input.val((col23Value > 4000 && col23Value <= 4300) ? 2*col14Value : 0);

}

function updateCol29(row) {
    var col6Value = row.find('.col6-select').val();
    var col29Input = row.find('.col29-input');
    var col30Input = row.find('.col30-input');

    if (col6Value === "벽면형(120*70)") {
        col29Input.val("130*80");
        col30Input.val("130*80");
    } else if (col6Value === "측면형(120*120)") {
        col29Input.val("130*130");
        col30Input.val("130*130");		
    } else if (col6Value === "혼합형(120*70)(120*120)") {
        col29Input.val("130*80");
        col30Input.val("130*130");
    } 
}
 
function updateCol31to35(row) {
	// 레일용 연기차단재 	
    var col24Value = parseFloat(row.find('.col24-input').val() ) || 0;    // 셔터박스 크기 가져옴
    var col25Value = parseFloat(row.find('.col25-input').val() ) || 0;    // 셔터박스 크기 가져옴
    var col26Value = parseFloat(row.find('.col26-input').val() ) || 0;    // 셔터박스 크기 가져옴
    var col27Value = parseFloat(row.find('.col27-input').val() ) || 0;    // 셔터박스 크기 가져옴
    var col28Value = parseFloat(row.find('.col28-input').val() ) || 0;    // 셔터박스 크기 가져옴
    row.find('.col31-input').val(col24Value*2);
    row.find('.col32-input').val(col25Value*2);
    row.find('.col33-input').val(col26Value*2);
    row.find('.col34-input').val(col27Value*2);
    row.find('.col35-input').val(col28Value*2);
}

function updateCol36(row) {
    var col20Value = row.find('.col20-input').val();
    var col36Select = row.find('.col36-select');
    var col36Input = row.find('.col36-select');    
    var col45Input = row.find('.col45-input');

		
    if (col20Value === "380*180") {
        col36Select.val("500*380");
        col45Input.val("505*385"); 		
    }
 
    var col36Value = col36Input.val();
    
    // col36Value가 undefined 또는 null이 아닌지 확인
    if (col36Value && col36Value.includes('*')) {
        var dimensions = col36Value.split('*');
        var width = parseFloat(dimensions[0]);  // 첫 번째 값
        var height = parseFloat(dimensions[1]); // 두 번째 값

        // 두 값에 +5를 적용
        var newWidth = width + 5;
        var newHeight = height + 5;

        // 새로운 값 설정
        col45Input.val(newWidth + '*' + newHeight);
    }

    // console.log('updateCol36 시작');
    // console.log('col20Value : ' + col20Value);
    // console.log('col36Select : ' + col36Select.val());
    // console.log('col45Input : ' + col45Input.val());
}

function updateCol36_Force(row) {
    var col36Input = row.find('.col36');
    var col45Input = row.find('.col45-input');
	
    var col36Value = col36Input.val();
    
    // col36Value가 undefined 또는 null이 아닌지 확인
    if (col36Value && col36Value.includes('*')) {
        var dimensions = col36Value.split('*');
        var width = parseFloat(dimensions[0]);  // 첫 번째 값
        var height = parseFloat(dimensions[1]); // 두 번째 값

        // 두 값에 +5를 적용
        var newWidth = width + 5;
        var newHeight = height + 5;

        // 새로운 값 설정
        col45Input.val(newWidth + '*' + newHeight);
    }
}

// 수동입력시 마구리 변경하는 로직
function updateCol36_input(row) {   
     
    var col36Input = row.find('.col36_custom');
    var col45Input = row.find('.col45-input');

    var col36Value = col36Input.val();
    
    // col36Value가 undefined 또는 null이 아닌지 확인
    if (col36Value && col36Value.includes('*')) {
        var dimensions = col36Value.split('*');
        var width = parseFloat(dimensions[0]);  // 첫 번째 값
        var height = parseFloat(dimensions[1]); // 두 번째 값

        // 두 값에 +5를 적용
        var newWidth = width + 5;
        var newHeight = height + 5;

        // 새로운 값 설정
        col45Input.val(newWidth + '*' + newHeight);
    }
}


function updateCol37(row) {
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;
    var col37Input = row.find('.col37-input');
    col37Input.val(col8Value + 220);
}

function updateCol38to43(row) {
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량
    var col37Value = parseFloat(row.find('.col37-input').val() ) || 0;
    
    var col38Value = (col37Value <= 1219) ? 1*col14Value :
                     (col37Value > 4150 && col37Value <= 4219) ? 1*col14Value :
                     (col37Value > 4219 && col37Value <= 4719) ? 1*col14Value :
                     (col37Value > 4876 && col37Value <= 5219) ? 1*col14Value :
                     (col37Value > 5219 && col37Value <= 5369) ? 1*col14Value :
                     (col37Value > 9026 && col37Value <= 9219) ? 1*col14Value :
                     0;
    row.find('.col38-input').val(col38Value);

    var col39Value = (col37Value > 1219 && col37Value <= 2438) ? 1*col14Value :
                     (col37Value > 4719 && col37Value <= 4876) ? 2*col14Value :
                     (col37Value > 5369 && col37Value <= 5938) ? 1*col14Value :
                     (col37Value > 6000 && col37Value <= 6438) ? 1*col14Value :
                     (col37Value > 6500 && col37Value <= 6588) ? 1*col14Value :
                     (col37Value > 8300 && col37Value <= 8376) ? 2*col14Value :
                     (col37Value > 8376 && col37Value <= 8438) ? 1*col14Value :
                     (col37Value > 8438 && col37Value <= 8876) ? 2*col14Value :
                     (col37Value > 9000 && col37Value <= 9026) ? 2*col14Value :
                     (col37Value > 9219 && col37Value <= 9438) ? 1*col14Value :
                     (col37Value > 10150 && col37Value <= 10738) ? 1*col14Value :
                     0;
    row.find('.col39-input').val(col39Value);

    var col40Value = (col37Value > 2438  && col37Value <= 3000) ? 1*col14Value :
                     (col37Value > 4050  && col37Value <= 4219) ? 1*col14Value :
                     (col37Value > 5369  && col37Value <= 5438) ? 1*col14Value :
                     (col37Value > 5938  && col37Value <= 6000) ? 2*col14Value :
                     (col37Value > 6438  && col37Value <= 6500) ? 1*col14Value :
                     (col37Value > 7000  && col37Value <= 7150) ? 1*col14Value :
                     (col37Value > 8376  && col37Value <= 8438) ? 2*col14Value :
                     (col37Value > 8876  && col37Value <= 9000) ? 3*col14Value :
                     (col37Value > 9438  && col37Value <= 10150) ? 2*col14Value :
                     (col37Value > 10738 && col37Value <= 11000) ? 1*col14Value :
                     0;
					 
    row.find('.col40-input').val(col40Value);

    var col41Value = (col37Value > 3000 && col37Value <= 3500) ? 1*col14Value :
                     (col37Value > 4119 && col37Value <= 4719) ? 1*col14Value :
                     (col37Value > 5438 && col37Value <= 5938) ? 1*col14Value :
                     (col37Value > 6438 && col37Value <= 6500) ? 1*col14Value :
                     (col37Value > 6588 && col37Value <= 7000) ? 2*col14Value :
                     (col37Value > 7150 && col37Value <= 7650) ? 1*col14Value :
                     (col37Value > 8300 && col37Value <= 8376) ? 1*col14Value :
                     (col37Value > 9219 && col37Value <= 9438) ? 2*col14Value :
                     (col37Value > 9438 && col37Value <= 9500) ? 1*col14Value :
                     0;
    row.find('.col41-input').val(col41Value);

    var col42Value = (col37Value > 3500 && col37Value <= 4000) ? 1*col14Value :
                     (col37Value > 4876 && col37Value <= 5219) ? 1*col14Value :
                     (col37Value > 6000 && col37Value <= 6428) ? 1*col14Value :
                     (col37Value > 7150 && col37Value <= 7500) ? 1*col14Value :
                     (col37Value > 7650 && col37Value <= 8000) ? 2*col14Value :
                     (col37Value > 8000 && col37Value <= 8150) ? 1*col14Value :
                     (col37Value > 8428 && col37Value <= 8876) ? 1*col14Value :
                     (col37Value > 9026 && col37Value <= 9219) ? 2*col14Value :
                     (col37Value > 9500 && col37Value <= 10000) ? 1*col14Value :
                     (col37Value > 10150 && col37Value <= 10428) ? 2*col14Value :
                     (col37Value > 10738 && col37Value <= 11000) ? 2*col14Value :
                     0;
    row.find('.col42-input').val(col42Value);
    
    var col43Value = (col37Value > 4000 && col37Value <= 4150) ? 1*col14Value :
                     (col37Value > 5219 && col37Value <= 5369) ? 1*col14Value :
                     (col37Value > 6500 && col37Value <= 6588) ? 1*col14Value :
                     (col37Value > 7000 && col37Value <= 7150) ? 1*col14Value :
                     (col37Value > 7500 && col37Value <= 7650) ? 1*col14Value :
                     (col37Value > 8000 && col37Value <= 8150) ? 1*col14Value :
                     (col37Value > 8150 && col37Value <= 8300) ? 2*col14Value :
                     (col37Value > 9000 && col37Value <= 9026) ? 1*col14Value :
                     (col37Value > 10000 && col37Value <= 10150) ? 1*col14Value :
                     (col37Value > 10438 && col37Value <= 10738) ? 2*col14Value :
                     0;
    row.find('.col43-input').val(col43Value);
}

function updateCol44(row) {
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량
    var col37Value = parseFloat(row.find('.col37-input').val()) || 0;
    var col44Input = row.find('.col44-input');
    col44Input.val(Math.ceil(col37Value / 1219) * col14Value );
}

function updateCol45(row) {
    var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량
    var col45Input = row.find('.col45-input');
    var col46Input = row.find('.col46-input');

    // col36Value 값 설정
    var col36Value = row.find('.col36-select').val(); // 셔터박스크기 (예: "500*350")
    if (col36Value === 'custom') { // 직접 입력 value가 'custom'이다.
        col36Value = row.find('.col36_custom').val();
    }

    // col36Value 값 분리 및 계산
    var result;
    if (col36Value.includes('*')) {
        var parts = col36Value.split('*'); // "*" 기준으로 나누기
        var leftValue = parseInt(parts[0]) || 0; // 좌측 값
        var rightValue = parseInt(parts[1]) || 0; // 우측 값
        result = (leftValue + 5) + '*' + (rightValue + 5); // 각 값에 5를 더하고 다시 조합
    } else {
        result = "0"; // 잘못된 값 처리
    }

    col45Input.val(result); // col45Input에 설정된 값 적용
    col46Input.val(col14Value * 2); // col46Input에 셔터수량 * 2 값 설정

    // console.log('updateCol45 시작');
    // console.log('col14Value : ' + col14Value);
    // console.log('col45Input : ' + col45Input.val());
    // console.log('col46Input : ' + col46Input.val());
}


function updateCol47(row) {	
	// 셔터박스 연기차단재
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량		    	
    var col37Value = parseFloat(row.find('.col37-input').val()) || 0; // 서터 기장
    var col47Input = row.find('.col47-input');

    // ROUNDDOWN(AR8*2/3000+1,0)을 JavaScript로 변환
    var calculatedValue = Math.floor((col37Value * 2 / 3000) + 1);
    col47Input.val(calculatedValue * col14Value); // 결과에 셔터수량 곱셈 적용	
}

function updateCol48(row) {	
	// 하장바 1.6T EGI		
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량		
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0; // 오픈사이즈 가로
    var col48Input = row.find('.col48-input');
    col48Input.val(col8Value);	
	
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량	
    var col48Value = parseFloat(row.find('.col48-input').val()) || 0;
    
	var col49Input = row.find('.col49-input');
    col49Input.val((col48Value <= 3000) ? (col14Value) :
                   (col48Value > 4000 && col48Value <= 6000) ? (2*col14Value) :
                   (col48Value > 6000 && col48Value <= 7000) ? (col14Value) :
                   (col48Value > 8000 && col48Value <= 9000) ? (3*col14Value) : 0);

    var col50Input = row.find('.col50-input');
    col50Input.val((col48Value > 3000 && col48Value <= 4000) ? (col14Value) :
                   (col48Value > 6000 && col48Value <= 7000) ? (col14Value) :
                   (col48Value > 7000 && col48Value <= 8000) ? (2*col14Value) : 0);
				   
}

function updateCol51(row) {	
	// 엘바 1.6T EGI		
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량		
    var col37Value = parseFloat(row.find('.col37-input').val()) || 0; // 셔터박스 기장
    var col51Input = row.find('.col51-input');
    col51Input.val(col37Value);	
	
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량	
    var col51Value = parseFloat(row.find('.col51-input').val()) || 0;
    
	var col52Input = row.find('.col52-input');
    col52Input.val((col51Value <= 3000) ? (2*col14Value) :
                   (col51Value > 4000 && col51Value <= 6000) ? (4*col14Value) :
                   (col51Value > 6000 && col51Value <= 7000) ? (2*col14Value) :
                   (col51Value > 8000 && col51Value <= 9000) ? (6*col14Value) : 0);

    var col53Input = row.find('.col53-input');
    col53Input.val((col51Value > 3000 && col51Value <= 4000) ? (2*col14Value) :
                   (col51Value > 6000 && col51Value <= 7000) ? (2*col14Value) :
                   (col51Value > 7000 && col51Value <= 8000) ? (4*col14Value) : 0);
				   
}

function updateCol54(row) {
	// 보강평철 1.2T EGI	
    var col37Value = parseFloat(row.find('.col37-input').val()) || 0;
    var col54Input = row.find('.col54-input');
    col54Input.val(col37Value);

	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량		
    var col54Value = parseFloat(row.find('.col54-input').val()) || 0;
    var col31Value = row.find('.col31-input').val() || ""; // E8 값을 가져오기 위해 사용

    var col55Input = row.find('.col55-input');
    var col56Input = row.find('.col56-input');

    // col55Input 값 설정
	col55Input.val(0); // 기본값 설정	
        if (col54Value <= 3000) {
            col55Input.val(1*col14Value);
        } else if (col54Value > 4000 && col54Value <= 6000) {
            col55Input.val(2*col14Value);
        } else if (col54Value > 6000 && col54Value <= 7000) {
            col55Input.val(1*col14Value);
        } else if (col54Value > 8000 && col54Value <= 9000) {
            col55Input.val(3*col14Value);
        } else if (col54Value > 9000 && col54Value <= 10000) {
            col55Input.val(2*col14Value);
        } else if (col54Value > 10000 && col54Value <= 11000) {
            col55Input.val(1*col14Value);
        } else {
            col55Input.val(0);
        }

    // col56Input 값 설정 (엑셀 공식 반영)
	col56Input.val(0); // 기본값 설정
        if (col54Value > 3000 && col54Value <= 4000) {
            col56Input.val(1*col14Value);
        } else if (col54Value > 6000 && col54Value <= 7000) {
            col56Input.val(1*col14Value);
        } else if (col54Value > 7000 && col54Value <= 8000) {
            col56Input.val(2*col14Value);
        } else if (col54Value > 9000 && col54Value <= 10000) {
            col56Input.val(1*col14Value);
        } else if (col54Value > 10000 && col54Value <= 11000) {
            col56Input.val(2*col14Value);
        } else if (col54Value > 11000 && col54Value <= 12000) {
            col56Input.val(3*col14Value);
        }    
}

function updateCol57(row) {
	//무게평철 12T KSS02는 1/2로 수량이 줄어듬 (2025/03/26 수정)
	var col4Value = row.find('.col4-select').val() || ''; // 모델
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;
    var col57Input = row.find('.col57-input');
	
	// console.log(col4Value);
 if(col4Value === 'KSS02') 
    // col57Input 값 설정 (주어진 엑셀 공식 반영)
	suPerEA = 1 ;	 
  else
	  suPerEA = 2 ;	
	  
    if (col8Value * suPerEA <= 2000) {
        col57Input.val(1*col14Value);
    } else if (col8Value * suPerEA > 2000 && col8Value * suPerEA <= 4000) {
        col57Input.val(2*col14Value);
    } else if (col8Value * suPerEA > 4000 && col8Value * suPerEA <= 6000) {
        col57Input.val(3*col14Value);
    } else if (col8Value * suPerEA > 6000 && col8Value * suPerEA <= 8000) {
        col57Input.val(4*col14Value);
    } else if (col8Value * suPerEA > 8000 && col8Value * suPerEA <= 10000) {
        col57Input.val(5*col14Value);
    } else if (col8Value * suPerEA > 10000 && col8Value * suPerEA <= 12000) {
        col57Input.val(6*col14Value);
    } else if (col8Value * suPerEA > 12000 && col8Value * suPerEA <= 14000) {
        col57Input.val(7*col14Value);
    } else if (col8Value * suPerEA > 14000 && col8Value * suPerEA <= 16000) {
        col57Input.val(8*col14Value);
    } else {
        col57Input.val(0);
    }
}

function updateCol58(row){
    var col21Value = parseFloat(row.find('.col21-select').val()) || 0;
    var col58Input = row.find('.col58-input');
    col58Input.val(col21Value);
}

function updateCol59(row) {	
	// 3인치 감기샤프트
    var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량
    row.find('.col59-input').val(col14Value);
}

function updateCol60to65(row) {
    var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량			
    var col21Value = parseFloat(row.find('.col21-select').val()) || 0;
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;
    // console.log('샤프트 수량 수정');
    // console.log('인치 : ', col21Value);
    
    row.find('.col60-input').val((col21Value == 4 && col8Value <= 3050) ? 1 * col14Value : 0);
    row.find('.col61-input').val((col21Value == 4 && col8Value > 3050 && col8Value <= 4550) ? 1 * col14Value : 0);
    row.find('.col62-input').val((col21Value == 4 && col8Value > 4550 && col8Value <= 6050) ? 1 * col14Value : 0);
    row.find('.col63-input').val((col21Value == 5 && col8Value > 0 && col8Value <= 6050) ? 1 * col14Value : 0);
    row.find('.col64-input').val((col21Value == 5 && col8Value > 6050 && col8Value <= 7050) ? 1 * col14Value : 0);
    row.find('.col65-input').val((col21Value == 5 && col8Value > 7050) ? 1 * col14Value : 0);
}

function updateCol66(row) {	
    var col37Value = parseFloat(row.find('.col37-input').val()) || 0;

    var col66Input = row.find('.col66-input');
    col66Input.val((col37Value <= 1600) ? 3 :
                  (col37Value <= 2800) ? 4  :
                  (col37Value <= 4000) ? 5  :
                  (col37Value <= 5200) ? 6  :
                  (col37Value <= 6400) ? 7  :
                  (col37Value <= 7600) ? 8  :
                  (col37Value <= 8800) ? 9  : 0);
}

function updateCol67(row) {		
    var col37Value = parseFloat(row.find('.col37-input').val()) || 0;
    var col66Value = parseFloat(row.find('.col66-input').val()) || 0;

    row.find('.col67-input').val(col37Value + 3000 * col66Value);	
	// console.log('67 col: ', row.find('.col67-input').val());
}

function updateCol68to69(row) {
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량			
    var col67Value = parseFloat(row.find('.col67-input').val()) || 0;
	
    // col68 계산
    var col68Input = row.find('.col68-input');
    col68Input.val((col67Value <= 9000) ? 3 * col14Value:
                   (col67Value > 9000 && col67Value <= 12000) ? 4 * col14Value:
                   (col67Value > 12000 && col67Value <= 15000) ? 5 * col14Value :
                   (col67Value > 15000 && col67Value <= 18000) ? 6 * col14Value : 0) ;
				   
    // col69 계산
    var col69Input = row.find('.col69-input');
    col69Input.val((col67Value > 18000 && col67Value <= 24000) ? 4 * col14Value :
                   (col67Value > 24000 && col67Value <= 30000) ? 5 * col14Value :
                   (col67Value > 30000 && col67Value <= 36000) ? 6 * col14Value :
                   (col67Value > 36000 && col67Value <= 42000) ? 7 * col14Value :
                   (col67Value > 42000 && col67Value <= 48000) ? 8 * col14Value : 0) ;
}
	
function updateCol70(row) {
	//환봉
	var col14Value = parseFloat(row.find('.col14-input').val()) || 0; // 셔터수량	
    var col10Value = parseFloat(row.find('.col10-input').val()) || 0;
    var col70Input = row.find('.col70-input');

    col70Input.val((col10Value <= 3000) ? 1 * col14Value :
                  (col10Value <= 6000) ? 2  * col14Value :
                  (col10Value <= 9000) ? 3  * col14Value :
                  (col10Value <= 12000) ? 4 * col14Value : 0) ;
}
	
function Screen_updateTotals() {	
    // 합계를 계산할 열의 인덱스 (1-based, 실제로는 0-based로 사용)
    var sumColumns = [ 14, 15, 16, 17, 18, 19, 20, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 43, 44, 45, 46, 47, 48, 49, 52, 53, 55, 56, 58, 59, 61, 62, 63, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77];

    
     sumColumns.forEach(function (colIndex) {
        var total = 0;
        $('#estimateTable tbody tr').each(function () {
            var $cell = $(this).find('td').eq(colIndex-1);

            var val = '';
            if ($cell.find('input').length > 0) {
                val = $cell.find('input').val() || '';
            } else if ($cell.find('select').length > 0) {
                val = $cell.find('select').val() || '';
            }

            var numericValue = parseFloat(val.toString().replace(/,/g, '')) || 0;
            total += numericValue;
        });

        // 합계를 해당 열의 footer에 업데이트 (0일 경우 공백)
        var formattedTotal = total === 0 ? '' : total.toLocaleString();
        $('#totalCol' + colIndex).text(formattedTotal);  // screen은 totalCol입니다.
    });
}

































// 철재스라트 계산식
// 철재스라트 계산식
// 철재스라트 계산식
// 철재스라트 계산식
function addRow_slat(tableBody, rowData, typebutton, afterRow = null, autoData = {}) {
	// console.log('rowData',rowData);
    var newRow = $('<tr>');
    var rowCount = tableBody.children('tr').length + 1;

    newRow.append('<td class="text-center" style="width:80px;">' +
        '<div class="d-flex justify-content-center align-items-center mt-1">' + 
        '<span class="text-primary fs-4 viewNoBtn add-row-slat ms-1 me-1" data-table="' + tableBody.closest('table').attr('id') + '">+</span>' +
        '<span class="text-danger fs-4 viewNoBtn remove-row ms-2 me-1">-</span>' +
		'<span class="text-success fs-6 viewNoBtn copy-row ms-2"><i class="bi bi-copy"></i></span>' +
        '</div></td>');

    newRow.append('<td class="text-center" style="width:50px;">' +
    '<div class="d-flex flex-column justify-content-center">' +    
    '<input type="text" name="col1[]" style="width:50px;" class="form-control text-center col-input col1" readonly autocomplete="off">' +
    '</div></td>');

for (let i = 2; i <= 77; i++) { 
    let width = [2, 3, 4, 5, 7, 21, 23, 24, 30,31, 37, 46].includes(i) ? '85px' : '50px';
    width = [6].includes(i) ? '170px' : width;         
    width = [19].includes(i) ? '60px' : width; 
    width = [24,33,44,47,50,54,63].includes(i) ? '50px' : width;  // 화면에 안보이는 수준이면 5px 적용, 검증할때는 50px로 한다.		 
    
    if (i === 9) { 
        newRow.append('<td class="text-center" style="width:200px;">' +
            '<div class="d-flex justify-content-center align-items-center">' +
        '<input type="text" name="col9[]" style="width:' + width + ';" class="form-control text-center col' + i + ' col-input col9-input" value="' + (rowData['col9'] || '') + '" autocomplete="off">' +        
        '</div></td>');
    }     
    else if (i === 10) { // 스크린 제작사이즈 가로, 세로 설정 추가 250630
        // 원래 1개의 열인데, 3개 생성함
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col10_SW[]" style="width:' + width + ';" class="form-control text-center text-primary fw-bold col-input col10_SW-input  col10_SW" value="' + (rowData['col10_SW'] || rowData['col10'] || '') + '" autocomplete="off">' + 
            '</div></td>');
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col11_SH[]" style="width:' + width + ';" class="form-control text-center text-primary fw-bold col-input col11_SH-input  col11_SH" value="' + (rowData['col11_SH'] || rowData['col11'] || '') + '" autocomplete="off">' + 
            '</div></td>');
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col10[]" style="width:' + width + ';" class="form-control text-center col-input col10-input  col10" value="' + (rowData['col10'] || '') + '" autocomplete="off">' + 
            '</div></td>');
    }     
    else if (i === 15) {
        // 15번 오픈사이즈 높이 옆에 버튼생성
        newRow.append('<td class="text-center" style="width:200px;">' +
            '<div class="d-flex justify-content-center align-items-center">' +
        '<input type="text" name="col15[]" style="width:' + width + ';" class="form-control text-center col' + i + ' col-input col15-input" value="' + (rowData['col15'] || '') + '" autocomplete="off">' +        
        '<button type="button" class="btn btn-sm btn-outline-primary ms-1 calc-slat-btn viewNoBtn" title="자동산출"><i class="bi bi-calculator-fill"></i></button>' +        
        '</div></td>');
    }
    else if (i === 37) {
        // col37 셔터박스는 4가지 표현
        let col37Value = rowData['col37'] || '650*550';
        let col37CustomValue = rowData['col37_custom'] || '';
        let col37frontbottom = rowData['col37_frontbottom'] || '';
        let col37railwidth = rowData['col37_railwidth'] || '';
        let col37boxdirectionValue = rowData['col37_boxdirection'] || '';
		
		// console.log('col37 표현',col37Value);
        
        let selectHtml = '<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode me-2 col-select col' + i + '-select col' + i +' ">' +
            '<option value=""' + (col37Value === '' ? ' selected' : '') + '>(없음)</option>' +
            '<option value="650*500"' + (col37Value === '650*500' ? ' selected' : '') + '>650*500</option>' +
            '<option value="650*550"' + (col37Value === '650*550' ? ' selected' : '') + '>650*550</option>' +
            '<option value="700*550"' + (col37Value === '700*550' ? ' selected' : '') + '>700*550</option>' +
            '<option value="700*600"' + (col37Value === '700*600' ? ' selected' : '') + '>700*600</option>' +
            '<option value="780*600"' + (col37Value === '780*600' ? ' selected' : '') + '>780*600</option>' +
            '<option value="780*650"' + (col37Value === '780*650' ? ' selected' : '') + '>780*650</option>' +
            '<option value="custom"' + (col37Value === 'custom' ? ' selected' : '') + '>직접 입력</option>' +
            '</select>';
        
        let inputHtml = '<input type="text" name="col' + i + '_custom' + '[]" class="form-control text-center col37_custom col-input col' + i + '-custom-input" style="width:' + width + ';' + 
            (col37Value === 'custom' ? '' : 'display:none;') + '" value="' + (col37Value === 'custom' ? col37CustomValue : '') + '" placeholder="직접 입력">';
					
		let inputHtmlfrontbottom = '<input type="text" name="col' + i + '_frontbottom' + '[]" class="form-control text-center col37_frontbottom col-input col' + i + '-frontbottom-input me-1 ms-1" style="width:50px;"' + 
			' value="' + (col37frontbottom === '' ? '50' : col37frontbottom) + '" placeholder="전면밑">';
				
		let inputHtmlrailwidth = '<input type="text" name="col' + i + '_railwidth' + '[]" class="form-control text-center col37_railwidth col-input col' + i + '-railwidth-input me-1 ms-1" style="width:50px;"' + 
			' value="' + (col37railwidth === '' ? '75' : col37railwidth) + '" placeholder="레일폭">';
			  
        let selectHtmlboxdirection = '<select name="col' + i + '_boxdirection[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode  me-1 ms-1 col-select col' + i +'_boxdirection">' +
            '<option value="양면"' + (col37boxdirectionValue === '양면' ? ' selected' : '') + '>양면</option>' +
            '<option value="밑면"' + (col37boxdirectionValue === '밑면' ? ' selected' : '') + '>밑면</option>' +
            '<option value="후면"' + (col37boxdirectionValue === '후면' ? ' selected' : '') + '>후면</option>' 
            '</select>';			  			  

        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center align-items-center">' +
            selectHtml + inputHtml + inputHtmlfrontbottom + inputHtmlrailwidth + selectHtmlboxdirection +
            '</div></td>');

        // select의 값이 변경될 때, '직접 입력' 선택 시 input 필드를 보여줌
        newRow.find('.col' + i + '-select').on('change', function() {
            var selectedValue = $(this).val();
            var customInput = $(this).closest('td').find('.col' + i + '-custom-input');

            if (selectedValue === 'custom') {
                customInput.show();
                customInput.focus();
            } else {
                customInput.hide();
                customInput.val('');
            }
        });
    } 
    else if (i === 46) {  // 마구리 날개
        // col46 기존 처리
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col46[]" style="width:' + width + ';" class="form-control text-center col-input col46-input" value="' + rowData['col46'] + '" autocomplete="off">' +
            '</div></td>');
        // col46_wing 추가
        let wingValue = (typeof rowData['col46_wing'] !== 'undefined' && rowData['col46_wing'] !== null && rowData['col46_wing'] !== '') 
            ? rowData['col46_wing'] 
            : ($('#maguriWing').val() || '');
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col46_wing[]" style="width:60px;" class="form-control text-center col-input col46Wing-input" value="' + wingValue + '" autocomplete="off">' +
            '</div></td>');
        continue;
    }  
    else if ([4].includes(i)) {
    // 기존 옵션 설정 코드 유지
    let options = '<option value="(없음)">(없음)</option>';
    steelModelOptions.forEach(function(model) { // '철재'스라트
        var selected = (rowData['col' + i] === model) ? ' selected' : '';
        options += '<option value="' + model + '"' + selected + '>' + model + '</option>';
    });

    newRow.append(
        '<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
                '<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col-select col' + i + '-select changeModel">' +
                    options +
                '</select>' +
            '</div>' +
        '</td>'
    );		

    // 투시창 선택 옵션 기능 추가
    options = '';        
    let col4_quartzValue = rowData['col4_quartz'] || '';
    options = '<option value="(없음)">(없음)</option>' + 
              '<option value="투시창"' + (col4_quartzValue === '투시창' ? ' selected' : '') + '>투시창</option>';

    newRow.append('<td class="text-center">' +
        '<div class="d-flex justify-content-center">' +
        '<select name="col4_quartz[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col-select col4_quartz col4_quartz-select" >' +
            options +
        '</select></div></td>');

    } 
    else if ([6, 7, 20, 22].includes(i)) {
        // 기존 코드 유지
        let options = '';
        if (i === 6) 
        {
            options = '<option value="(없음)">(없음)</option>' + 
                      '<option value="벽면형(130*75)"' + (rowData['col' + i] === '벽면형(130*75)' ? ' selected' : '') + '>벽면형(130*75)</option>' +
                      '<option value="측면형(130*125)"' + (rowData['col' + i] === '측면형(130*125)' ? ' selected' : '') + '>측면형(130*125)</option>' +
                      '<option value="혼합형(130*75)(130*125)"' + (rowData['col' + i] === '혼합형(130*75)(130*125)' ? ' selected' : '') + '>혼합형(130*75)(130*125)</option>';
        } 
        else if (i === 7) 
        {
            options = '<option value="(없음)">(없음)</option>' +
                      '<option value="SUS마감" ' + (rowData['col' + i] === 'SUS마감' ? ' selected' : '') + '>SUS마감</option>' +
                      '<option value="EGI마감" ' + (rowData['col' + i] === 'EGI마감' ? ' selected' : '') + '>EGI마감</option>';
        } 
        else if (i === 20) {
            const capacityOptions = {
                '530*320': ['300K', '400K'],
                '600*350': ['500K', '600K'],
                '690*390': ['800K', '1000K','방폭모터']
            };

            let selectedValue = rowData['col' + i] || '';
            options = '<option value="(없음)">(없음)</option>'; // ❗ 여기에서 let 제거

            for (const motors of Object.values(capacityOptions)) {
                for (const motor of motors) {
                    options += '<option value="' + motor + '"' +
                        (selectedValue === motor ? ' selected' : '') + '>' +
                        motor + '</option>';
                }
            }
        }           
        else if (i === 22) {
            options = '<option value=""> (없음) </option>' +
                      '<option value="4"' + (rowData['col' + i] === '4' ? ' selected' : '') + '>4</option>' +
                      '<option value="5"' + (rowData['col' + i] === '5' ? ' selected' : '') + '>5</option>' +
                      '<option value="6"' + (rowData['col' + i] === '6' ? ' selected' : '') + '>6</option>' +
                      '<option value="8"' + (rowData['col' + i] === '8' ? ' selected' : '') + '>8</option>';
        }        
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode  col' + i + ' col-select col' + i + '-select">' +
            options +
            '</select></div></td>');
		
	}
    else if ([19].includes(i)) 
    {
        // 기존 코드 유지
        let options = '';     
        
        // 경동,대한,기타로 계산서 발행 주체를 선택함
		options = '<option value="(없음)"> (없음) </option>' + 
                      '<option value="경동(견적가포함)" ' + (rowData['col19_brand'] === '경동(견적가포함)' ? ' selected' : '') + '>경동(견적가포함)</option>' +
                      '<option value="대한" ' + (rowData['col19_brand'] === '대한' ? ' selected' : '') + '>대한</option>' +
                      '<option value="기타" ' + (rowData['col19_brand'] === '기타' ? ' selected' : '') + '>기타</option>';
            
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<select name="col' + i + '_brand[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col' + i + '_brand col-select ">' +
            options +
            '</select></div></td>');
        
		options = '<option value="(없음)">(없음)</option>' + 
                      '<option value="220V" ' + (rowData['col' + i] === '220V' ? ' selected' : '') + '>220V</option>' +
                      '<option value="380V" ' + (rowData['col' + i] === '380V' ? ' selected' : '') + '>380V</option>';
            
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<select name="col' + i + '[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode  col' + i + ' col-select col' + i + '-select">' +
            options +
            '</select></div></td>');
			
		// 유선/무선 선택
        options = '';        
            options = '<option value="(없음)">(없음)</option>' + 
                      '<option value="유선" ' + (rowData['col19_wireless'] === '유선' ? ' selected' : '') + '>유선</option>' +
                      '<option value="무선" ' + (rowData['col19_wireless'] === '무선' ? ' selected' : '') + '>무선</option>';
        		
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<select name="col19_wireless[]" style="font-size:0.7rem; height:30px;" class="form-select w-auto text-center viewmode col19_wireless col-select">' +
				options +
            '</select></div></td>');			
     
    } 
    else if ([5, 12, 13, 24, 38, 49, 52,53,54, 55,56,57,58, 59, 60, 73].includes(i))
    {
        // 기존 코드 유지
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col' + i + '[]" style="width:' + width + ';" class="form-control text-center  col' + i + ' col-input col' + i + '-input" readonly value="' + (rowData['col' + i] || '') + '" autocomplete="off">' + 
            '</div></td>');				

    } else {
        // 기본 텍스트 필드 추가
        newRow.append('<td class="text-center">' +
            '<div class="d-flex justify-content-center">' +
            '<input type="text" name="col' + i + '[]" style="width:' + width + ';" class="form-control text-center  col' + i +' col-input col' + i + '-input" value="' + (rowData['col' + i] || '') + '" autocomplete="off">' + 
            '</div></td>');
    }
}

    // 기준 행 다음에 삽입하거나, 없으면 마지막에 삽입
    if (afterRow && afterRow.length) {
        afterRow.after(newRow);
    } else {
        tableBody.append(newRow);
    }
    

    // KQTS01 선택 시 투시창 옵션 활성화 로직
    newRow.find('.col4-select').on('change', function() {
        const selectedValue = $(this).val();
        const col4QuartzSelect = newRow.find('.col4_quartz');
        if (selectedValue === 'KQTS01') {
            col4QuartzSelect.prop('disabled', false);  // 활성화
			
        } else {
            col4QuartzSelect.prop('disabled', true).val(''); // 비활성화 및 선택 해제
        }
    });    
	
    // col4 모델 변경시
    newRow.find('.col4-select').on('input change', function() {
        var row = $(this).closest('tr');
		modelChange_slat(row);
    });      
    // col22 브라켓 인치변경
    newRow.find('.col22-select').on('input change', function() {
        var row = $(this).closest('tr');        
        Slat_updateCol22_Force(row);
    });
    
    // col37 셔터박스 크기 변경시 강제로 마구리 크기 변경
    newRow.find('.col37').on('input change', function() {
        var row = $(this).closest('tr');
		Slat_updateCol37_Force(row);
    });

    // col20 모터용량 변경시 적용
    newRow.find('.col20-select').on('input change', function() {
        var row = $(this).closest('tr');
        const col20Value = row.find('.col20-select').val();
        // if(col20Value === '(없음)' || col20Value === '') {
        //     row.find('.col10-input').val('');
        //     return;
        // }        
        // 1000K는 380V만 존재함
        if (col20Value === '1000K') {
            row.find('.col19-select').val('380V');
        }  

        Slat_updateCol21(row);        
        Slat_updateCol22(row);        
    });

   // col18 모터회사 변경시 처리
   newRow.find('.col19_brand').on('change', function() {
        var row = $(this).closest('tr');
        const qty = row.find('.col15-input').val();
        const col19_brandValue = row.find('.col19_brand').val();
        if(col19_brandValue === '기타') {
            row.find('.col16-input').val('');
            row.find('.col17-input').val('');
            row.find('.col18-input').val('');
            row.find('.col19_wireless').val('(없음)');
            row.find('.col19-select').val('(없음)');
            row.find('.col20-select').val('(없음)');
            row.find('.col21-input').val('');
            return;
        }      
        else if (col19_brandValue === '(없음)') { // 기타일 경우
            row.find('.col19_wireless').val('(없음)');
            row.find('.col19-select').val('(없음)');
            row.find('.col20-select').val('(없음)');
            row.find('.col21-input').val('');
            return;
        }  
        else { // 경동, 대한일 경우
            row.find('.col16-input').val(qty);
            row.find('.col17-input').val('');
            row.find('.col18-input').val(qty);
            row.find('.col19').val("220V");
            row.find('.col19_wireless').val("유선");
            row.find('.col19_brand').val(col19_brandValue);
            Slat_updateCol22(newRow);	// 샤프트 인치
            Slat_updateCol20(newRow);   // 모터용량산출
            Slat_updateCol21(newRow);   // 브라켓 산출
        }  
    });      
    	
    // col37 셔터박스 크기 변경시 마구리 크기 변경
    newRow.find('.col37_custom').on('input', function() {
        var row = $(this).closest('tr');
		Slat_updateCol37_input(row);		
    });

	
    newRow.find('.col4-select').on('change', function() {
        var col4Value = $(this).val();
        var col5Input = $(this).closest('tr').find('.col5-input');
        var col7Input = $(this).closest('tr').find('.col7-select');	
		
    });
    	
    // console.log('rowData : ' + rowData);
    if(!(rowData['col15'] || '')) {
        newRow.find('.col15-input').val(1);        
        firstinput_slat(newRow);
    }

    newRow.find('.col4-select').trigger('change');
    newRow.find('.col6-select').trigger('change');
    newRow.find('.col8-input').trigger('change');
    newRow.find('.col9-input').trigger('change');	

    // 철재슬렛 제작사이즈 col10_SW, col11_SH 강제 변경시
    newRow.find('.col10_SW-input, .col11_SH-input').on('input change', function() {
        var row = $(this).closest('tr');        
        console.log('철재슬렛 제작사이즈 col10_SW, col11_SH 강제 변경 호출');
        // 제작사이즈 변경과 같이 호출함
        Slat_updateCol10and11_Force(row);
    });        

    // col10, 11 제작사이즈 강제 변경시
    newRow.find('.col10-input, .col11-input').on('input change', function() {
        var row = $(this).closest('tr');        
        console.log('col10, 11 철재 제작사이즈 강제 변경 호출');
        Slat_updateCol12and13(row); // 면적, 중량 계산
        Slat_updateCol10and11_Force(row);
    });      

    updateSerialNumbers(tableBody);  // 일련번호 수정

    // ① data-auto 속성 세팅 및 기존 수동편집 표시
    newRow.find('input, select').each(function() {
            const $el    = $(this);
            // name 속성에서 [] 제거
            const name   = $el.attr('name').replace('[]', '');
            // 자동산출 스냅샷 값
            const aVal   = autoData[name] || '';
            // 실제 로드된 값
            const curVal = $el.val() || '';

            // data-auto 에 저장
            $el.attr('data-auto', aVal);

            // 값이 다르면 수동편집된 것으로 표시
            if (curVal.toString() !== aVal.toString()) {
                $el.addClass('manually-edited');
            }                   
        });

        newRow.find('.calc-slat-btn').on('click', function () {
            if (mode !== 'view') {
                Swal.fire({
                    title: '수량계산을 진행하시겠습니까?',
                    text: '기존 데이터에 덮어씁니다.',
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonText: '예',
                    cancelButtonText: '아니오'
                }).then((result) => {
                    if (result.isConfirmed) {
                        var row = $(this).closest('tr');
                        Slat_commonExe(row);
                        alertToast('산출 완료');
                        // --- col16, col17, col18 에 col15 곱하기 로직 추가 ---
                        var qty15 = parseFloat(row.find('.col15-input').val()) || 0;
                        ['.col16-input', '.col17-input', '.col18-input'].forEach(function (selector) {
                            var $el = row.find(selector);
                            var str = $el.val();
                            if (str !== '') {
                                var v = parseFloat(str);
                                if (!isNaN(v)) {
                                    $el.val(qty15);
                                }
                            }
                        });

                        // 클릭 즉시 data-auto 갱신
                        row.find('input, select').each(function () {
                            $(this)
                                .attr('data-auto', $(this).val())
                                .removeClass('manually-edited');
                        });

                        calculateAmounts();
                    }
                });
            }
        });      

    newRow.find('.col-input, .col-select').on('input change', function() {
        Slat_updateTotals();
        var $el     = $(this);
        var autoVal = $el.attr('data-auto') || '';
        var curVal  = $el.val()         || '';
        $el.toggleClass('manually-edited', curVal.toString() !== autoVal.toString());     
        calculateAmounts();                    
    });


	// 전체 계산           
    Slat_updateTotals();
    calculateAmounts();
}

function firstinput_slat(row) {
    row.find('.col4-select').val('KQTS01');    
    row.find('.col4_quartz').val('(없음)');    
    row.find('.col5-input').val('철재');    
    row.find('.col6-select').val('벽면형(130*75)');    
    row.find('.col7-select').val('SUS마감');   
    row.find('.col19').val("220V");
    row.find('.col19_wireless').val("유선");
    row.find('.col19_brand').val("경동(견적가포함)");
    var col15Value = row.find('.col15-input').val();
    row.find('.col16-input').val(col15Value);    
    row.find('.col18-input').val(col15Value);   
    //모델 변경시킴
    modelChange_slat(row);    
}

// 모델변경시 
function modelChange_slat(row) {
    var model = row.find('.col4-select').val();
	$("#model_name").val(model);    
}

function Slat_commonExeFn(row) {        		
        Slat_updateCol12and13(row);        
        Slat_updateCol14(row);        
		Slat_updateCol22(row); // 브라켓 인치를 먼저 산출한다.				
        Slat_updateCol20(row); // 모터 용량산출
        Slat_updateCol21(row);
		Slat_updateCol23(row);      	
        Slat_updateCol24(row);
        Slat_updateCol30(row);  // 30,31 하부 base1, 2
		Slat_updateCol32to36(row);        
		Slat_updateCol37(row);
        Slat_updateCol38(row);
		Slat_updateCol39to44(row);        
        Slat_updateCol45(row);
        Slat_updateCol46(row); // 마구리 47번도 함께 실행됨
        Slat_updateCol48(row);        
		Slat_updateCol49to51(row);
		Slat_updateCol52to54(row);
        Slat_updateCol55(row);
        Slat_updateCol56to57(row);        
        Slat_updateCol60to71(row);
        Slat_updateCol72(row);
        Slat_updateCol73(row);
        Slat_updateCol74to75(row);
        Slat_updateCo76(row);
        // Slat_updateCo77(row);
		Slat_updateTotals();
	}

function Slat_commonExe(row) {        
		Slat_updateCol10and11(row);
        Slat_commonExeFn(row);
	}


// 각 열에 대한 업데이트 함수들
function Slat_updateCol10and11_Force(row) {
	    // 제작치수 부분 제외한 공통함수 호출
        Slat_commonExeFn(row);
}

// 각 열에 대한 업데이트 함수들
function Slat_updateCol10and11(row) {
	var makeWidth = $("#makeWidth").val();
	var makeHeight = $("#makeHeight").val();
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;
    var col9Value = parseFloat(row.find('.col9-input').val()) || 0;
    row.find('.col10-input').val(col8Value + Number(makeWidth));
    row.find('.col11-input').val(col9Value + Number(makeHeight));

    row.find('.col10_SW-input').val(col8Value + Number(makeWidth));    
    row.find('.col11_SH-input').val(col9Value + Number(makeHeight));    

}

function Slat_updateCol12and13(row) {
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;
    var col10Value = parseFloat(row.find('.col10-input').val()) || 0;
    var col11Value = parseFloat(row.find('.col11-input').val()) || 0;
    var area = (col10Value * col11Value) / 1000000;
    row.find('.col12-input').val(area.toFixed(2));
    var weight = (area * 25) ;		
    row.find('.col13-input').val(weight.toFixed(2));
}

function Slat_updateCol14(row) { // 투시창 수량
    var col4_quartzValue = row.find('.col4_quartz-select').val() ; // D8에 해당하는 값 select 주의
    var col4Value = row.find('.col4-select').val() ;
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0; // H8에 해당하는 값
    var col14Input = row.find('.col14-input'); // 투시창 수량을 설정할 입력 필드

     // console.log('col4Value',col4Value);
     // console.log('col4_quartzValue', col4_quartzValue);
    if (col4Value === "KQTS01" && col4_quartzValue === '투시창') {
        if (col8Value <= 4000) {
            col14Input.val(1);
        } else if (col8Value > 4000 && col8Value <= 7000) {
            col14Input.val(2);
        } else if (col8Value > 7000 && col8Value <= 8000) {
            col14Input.val(3);
        } else {
            col14Input.val(0); // 조건에 맞지 않으면 0 설정
        }
    } else {
        col14Input.val(0); // D8이 "KQTS01투시창"이 아닐 때 기본값 0 설정
    }
}

function Slat_updateCol20(row) {
    // console.log('모터용량변경 함수 호출');
    var col22Value = parseFloat(row.find('.col22-select').val()) || 0; // 샤프트 인치
    var col13Value = parseFloat(row.find('.col13-input').val()) || 0; // 중량
    var col20Select = row.find('.col20-select'); // 모터 용량 select

    var motorCapacity = null;

    // 모터 용량 산출 조건
    if ((col22Value === 4 && col13Value <= 300) ||
        (col22Value === 5 && col13Value <= 246) ||
        (col22Value === 6 && col13Value <= 208)) {
        motorCapacity = '300K';
    } else if ((col22Value === 4 && col13Value > 300 && col13Value <= 400) ||
               (col22Value === 5 && col13Value > 246 && col13Value <= 327) ||
               (col22Value === 6 && col13Value > 208 && col13Value <= 277)) {
        motorCapacity = '400K';
    } else if ((col22Value === 5 && col13Value > 327 && col13Value <= 500) ||
               (col22Value === 6 && col13Value > 277 && col13Value <= 424) ||
               (col22Value === 8 && col13Value <= 324)) {
        motorCapacity = '500K';
    } else if ((col22Value === 5 && col13Value > 500 && col13Value <= 600) ||
               (col22Value === 6 && col13Value > 424 && col13Value <= 508) ||
               (col22Value === 8 && col13Value > 324 && col13Value <= 388)) {
        motorCapacity = '600K';
    } else if ((col22Value === 6 && col13Value > 600 && col13Value <= 800) ||
               (col22Value === 6 && col13Value > 508 && col13Value <= 800) ||
               (col22Value === 8 && col13Value > 388 && col13Value <= 611)) {
        motorCapacity = '800K';
    } else if ((col22Value === 6 && col13Value > 800 && col13Value <= 1000) ||
               (col22Value === 8 && col13Value > 611 && col13Value <= 1000)) {
        motorCapacity = '1000K';
    }

    // select에 값 설정 (option이 있는 경우만)
    if (motorCapacity !== null && col20Select.find(`option[value="${motorCapacity}"]`).length > 0) {
        col20Select.val(motorCapacity);
    } else {
        col20Select.val('');
    }

    // 1000K는 380V만 존재함
    if (motorCapacity === '1000K') {
        row.find('.col19-select').val('380V');
    }  
    Slat_updateCol21(row); // 이후 단계 함수 호출
}


function Slat_updateCol21(row) {
    // console.log('Slat_updateCol21 동작');
    var motorValue = row.find('.col20-select').val();
    var col21Input = row.find('.col21-input');    

    let bracketSize = '';

    if (['300K', '400K'].includes(motorValue)) {
        bracketSize = '530*320';
    } else if (['500K', '600K'].includes(motorValue)) {
        bracketSize = '600*350';
    } else if (['800K', '1000K'].includes(motorValue)) {
        bracketSize = '690*390';
    } else {
        bracketSize = '';
    }

    col21Input.val(bracketSize);
    Slat_updateCol23(row);  // 이후 작업이 있다면 유지
}

function Slat_updateCol22(row) {	    
    var col10Value = parseFloat(row.find('.col10-input').val()) || 0;  // 셔터 길이 기장
    var col13Value = parseFloat(row.find('.col13-input').val()) || 0;  // 중량    
    var col22Input = row.find('.col22-select');  // 브라켓 인치    
    var col59Input = row.find('.col59-input');  // 브라켓 인치    
    var inch = 0;
    
    if (col10Value <= 4500) {
        if (col13Value <= 400) {
            inch = 4;
        } else if (col13Value > 400) {
            inch = 5;
        }
    } else if (col10Value > 4500 && col10Value <= 5600) {
        if (col13Value <= 600) {
            inch = 5;
        } else if (col13Value > 600) {
            inch = 6;
        }
    } else if (col10Value > 5600 && col10Value <= 7800) {
        if (col13Value <= 800) {
            inch = 6;
        } else if (col13Value > 800) {
            inch = 8;
        }
    } else if (col10Value > 7800 && col13Value <= 10000) {
        inch = 8;
    } else {
        inch = 0;  // 조건에 맞지 않는 경우 기본값 0
    }

    col22Input.val(inch);
    col59Input.val(inch);   
}

function Slat_updateCol22_Force(row) {
    // 브라켓 인치값을 col59에 반영
    var col22Value = parseFloat(row.find('.col22-select').val()) || '';
    var col59Input = row.find('.col59-input');
    col59Input.val(col22Value);
    
    Slat_updateCol60to71(row); // 기존로직

    var $el = col59Input;
    var autoVal = $el.attr('data-auto') || '';
    var curVal = $el.val() || '';
    $el.toggleClass('manually-edited', curVal.toString() !== autoVal.toString());

    // 총합/계산 함수 등 호출
    Slat_updateTotals();
    calculateAmounts();
}

function Slat_updateCol23(row) {
    var col21Value = row.find('.col21-input').val();
    var col23Input = row.find('.col23-input');

    if (col21Value === "380*180") {
        col23Input.val("40*40*380");
    } else if (col21Value === "530*320") {
        col23Input.val("50*50*530");
    } else if (col21Value === "600*350") {
        col23Input.val("50*50*600");
    } else if (col21Value === "690*390") {
        col23Input.val("50*50*690");
    } else {
        col23Input.val("50*50*690");
    }
}

function Slat_updateCol24(row) {
    var col9Value = parseFloat(row.find('.col9-input').val()) || 0;
    var col24Input = row.find('.col24-input');
    col24Input.val(col9Value + 250);

    Slat_updateCol25to29(row);
}

function Slat_updateCol25to29(row) {	
    var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량
    var col24Value = parseFloat(row.find('.col24-input').val()) || 0;
    
    var col25Input = row.find('.col25-input');
    col25Input.val(col24Value <= 2438 ? 2 : 0);

    var col26Input = row.find('.col26-input');
    col26Input.val((col24Value > 2438 && col24Value <= 3000) ? 2*col15Value : 0);

    var col27Input = row.find('.col27-input');
    col27Input.val((col24Value > 3000 && col24Value <= 3500) ? 2*col15Value : 0);

    var col28Input = row.find('.col28-input');
    col28Input.val((col24Value > 3500 && col24Value <= 4000) ? 2*col15Value : 0);

    var col29Input = row.find('.col29-input');
    col29Input.val((col24Value > 4000 && col24Value <= 4300) ? 2*col15Value : 0);

    Slat_updateCol30(row);
}

function Slat_updateCol30(row) {
    var col6Value = row.find('.col6-select').val();
    var col30Input = row.find('.col30-input');
    var col31Input = row.find('.col31-input');

    if (col6Value === "벽면형(130*75)") {
        col30Input.val("140*85");
        col31Input.val("140*85");
    } else if (col6Value === "측면형(130*155)") {
        col30Input.val("140*165");
        col31Input.val("140*165");
    } else if (col6Value === "측면형(130*125)") {
        col30Input.val("140*135");
        col31Input.val("140*135");
    } else if (col6Value === "벽면형(120*70)") {
        col30Input.val("130*80");
        col31Input.val("130*80");
    } else if (col6Value === "측면형(120*120)") {
        col30Input.val("130*130");
        col30Input.val("130*130");
    } else if (col6Value === "와이드벽면형(180*70)") {
        col30Input.val("190*80");
        col31Input.val("190*80");
    } else if (col6Value === "와이드측면형(180*120)") {
        col30Input.val("190*130");
        col31Input.val("190*130");
    } else if (col6Value === "혼합형(130*75)(130*125)") {
        col30Input.val("140*85");
        col31Input.val("140*135");
    } else if (col6Value === "혼합형(120*70)(120*120)") {
        col30Input.val("130*80");
        col31Input.val("130*130");
    } else if (col6Value === "와이드혼합형(180*70)(180*120)") {
        col30Input.val("190*80");
        col31Input.val("190*130");
    } else {
        col30Input.val(0); // 조건에 맞지 않으면 0 설정
    }
}

function Slat_updateCol32to36(row) {	
    var col25Value = parseFloat(row.find('.col25-input').val() ) || 0;
    var col26Value = parseFloat(row.find('.col26-input').val() ) || 0;
    var col27Value = parseFloat(row.find('.col27-input').val() ) || 0;
    var col28Value = parseFloat(row.find('.col28-input').val() ) || 0;
    var col29Value = parseFloat(row.find('.col29-input').val() ) || 0;

    row.find('.col32-input').val(col25Value);
    row.find('.col33-input').val(col26Value);
    row.find('.col34-input').val(col27Value);
    row.find('.col35-input').val(col28Value);
    row.find('.col36-input').val(col29Value);
}

function Slat_updateCol37(row) {	
    var col37Input = row.find('.col37-select');
    var col46Input = row.find('.col46-input');			
    var col21Value = row.find('.col21-input').val(); // 브라켓 크기    

    // console.log('셔터크기변경 셔터박스 값 호출'); 
    var currentCol37 = col37Input.val();
		
    if (currentCol37 !== 'custom' ) {  // 직접입력이 아닌경우 'custom'
		if (col21Value === "530*320") {
			if (currentCol37 !== "650*550" && currentCol37 !== "650*500") {
				col37Input.val("650*550");
			}
		} else if (col21Value === "600*350") {
			if (currentCol37 !== "700*600" && currentCol37 !== "700*550") {
				col37Input.val("700*600");
			}
		} else if (col21Value === "690*390") {
			if (currentCol37 !== "780*650" && currentCol37 !== "780*600") {
				col37Input.val("780*650");
			}
		}
	}
	
	// console.log('currentCol37', currentCol37 ); 
    var col37Value = col37Input.val();
    if (col37Value && col37Value.includes('*')) {
        var dimensions = col37Value.split('*');
        var width = parseFloat(dimensions[0]);
        var height = parseFloat(dimensions[1]);

        var newWidth = width + 5;
        var newHeight = height + 5;

        col46Input.val(newWidth + '*' + newHeight);
    }	
}

function Slat_updateCol37_Force(row) {
	// console.log('강제로 셔터박스 강제 호출'); 
    var col37Input = row.find('.col37');
    var col46Input = row.find('.col46-input');
	
    var col37Value = col37Input.val();

    if(col37Value !== '') {    
        // col31Value가 undefined 또는 null이 아닌지 확인
        if (col37Value && col37Value.includes('*')) {
            var dimensions = col37Value.split('*');
            var width = parseFloat(dimensions[0]);  // 첫 번째 값
            var height = parseFloat(dimensions[1]); // 두 번째 값

            // 두 값에 +5를 적용
            var newWidth = width + 5;
            var newHeight = height + 5;

            // 새로운 값 설정
            col46Input.val(newWidth + '*' + newHeight);
        }	
    }
    else
    {
        row.find('.col37_frontbottom').val('');
        row.find('.col37_railwidth').val('');
    }
}

// 수동입력시 마구리 변경하는 로직
function Slat_updateCol37_input(row) {  

    // console.log('강제로 마구리크기 수정 호출'); 
     
    var col37Input = row.find('.col37_custom');
    var col46Input = row.find('.col46-input');

    var col37Value = col37Input.val();
        
    if (col37Value && col37Value.includes('*')) {
        var dimensions = col37Value.split('*');
        var width = parseFloat(dimensions[0]);  // 첫 번째 값
        var height = parseFloat(dimensions[1]); // 두 번째 값

        // 두 값에 +5를 적용
        var newWidth = width + 5;
        var newHeight = height + 5;

        // 새로운 값 설정
        col46Input.val(newWidth + '*' + newHeight);
    }
}

function Slat_updateCol38(row) {
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;
    var col38Input = row.find('.col38-input');
	col38Value = col8Value + 240; // 철재는 기본 240, 스크린은 220
    col38Input.val(col38Value);
}

function Slat_updateCol39to44(row) {
	var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량
    var col38Value = parseFloat(row.find('.col38-input').val() ) || 0;
    

    var col39Value = (col38Value <= 1219) ? 1*col15Value :
                     (col38Value > 4150 && col38Value <= 4219) ? 1*col15Value :
                     (col38Value > 4219 && col38Value <= 4719) ? 1*col15Value :
                     (col38Value > 4876 && col38Value <= 5219) ? 1*col15Value :
                     (col38Value > 5219 && col38Value <= 5369) ? 1*col15Value :
                     (col38Value > 9026 && col38Value <= 9219) ? 1*col15Value :
                     0;
    row.find('.col39-input').val(col39Value);

    var col40Value = (col38Value > 1219 && col38Value <= 2438) ? 1*col15Value :
                     (col38Value > 4719 && col38Value <= 4876) ? 2*col15Value :
                     (col38Value > 5369 && col38Value <= 5938) ? 1*col15Value :
                     (col38Value > 6000 && col38Value <= 6438) ? 1*col15Value :
                     (col38Value > 6500 && col38Value <= 6588) ? 1*col15Value :
                     (col38Value > 8300 && col38Value <= 8376) ? 2*col15Value :
                     (col38Value > 8376 && col38Value <= 8438) ? 1*col15Value :
                     (col38Value > 8438 && col38Value <= 8876) ? 2*col15Value :
                     (col38Value > 9000 && col38Value <= 9026) ? 2*col15Value :
                     (col38Value > 9219 && col38Value <= 9438) ? 1*col15Value :
                     (col38Value > 10150 && col38Value <= 10738) ? 1*col15Value :
                     0;
    row.find('.col40-input').val(col40Value);

    var col41Value = (col38Value > 2438  && col38Value <= 3000) ? 1*col15Value :
                     (col38Value > 4150  && col38Value <= 4219) ? 1*col15Value :
                     (col38Value > 5369  && col38Value <= 5438) ? 1*col15Value :
                     (col38Value > 5938  && col38Value <= 6000) ? 2*col15Value :
                     (col38Value > 6438  && col38Value <= 6500) ? 1*col15Value :
                     (col38Value > 7000  && col38Value <= 7150) ? 1*col15Value :
                     (col38Value > 8376  && col38Value <= 8438) ? 2*col15Value :
                     (col38Value > 8876  && col38Value <= 9000) ? 3*col15Value :
                     (col38Value > 9438  && col38Value <= 10150) ? 2*col15Value :
                     (col38Value > 10738 && col38Value <= 11000) ? 1*col15Value :
                     0;
					 
    row.find('.col41-input').val(col41Value);

    var col42Value = (col38Value > 3000 && col38Value <= 3500) ? 1*col15Value :
                     (col38Value > 4219 && col38Value <= 4719) ? 1*col15Value :
                     (col38Value > 5438 && col38Value <= 5938) ? 1*col15Value :
                     (col38Value > 6438 && col38Value <= 6500) ? 1*col15Value :
                     (col38Value > 6588 && col38Value <= 7000) ? 2*col15Value :
                     (col38Value > 7150 && col38Value <= 7650) ? 1*col15Value :
                     (col38Value > 8300 && col38Value <= 8376) ? 1*col15Value :
                     (col38Value > 9219 && col38Value <= 9438) ? 2*col15Value :
                     (col38Value > 9438 && col38Value <= 9500) ? 1*col15Value :
                     0;
    row.find('.col42-input').val(col42Value);

    var col43Value = (col38Value > 3500 && col38Value <= 4000) ? 1*col15Value :
                     (col38Value > 4876 && col38Value <= 5219) ? 1*col15Value :
                     (col38Value > 6000 && col38Value <= 6438) ? 1*col15Value :
                     (col38Value > 7150 && col38Value <= 7500) ? 1*col15Value :
                     (col38Value > 7650 && col38Value <= 8000) ? 2*col15Value :
                     (col38Value > 8000 && col38Value <= 8150) ? 1*col15Value :
                     (col38Value > 8438 && col38Value <= 8876) ? 1*col15Value :
                     (col38Value > 9026 && col38Value <= 9219) ? 2*col15Value :
                     (col38Value > 9500 && col38Value <= 10000) ? 1*col15Value :
                     (col38Value > 10150 && col38Value <= 10438) ? 2*col15Value :
                     (col38Value > 10738 && col38Value <= 11000) ? 2*col15Value :
                     0;
    row.find('.col43-input').val(col43Value);
    
    var col44Value = (col38Value > 4000 && col38Value <= 4150) ? 1*col15Value :
                     (col38Value > 5219 && col38Value <= 5369) ? 1*col15Value :
                     (col38Value > 6500 && col38Value <= 6588) ? 1*col15Value :
                     (col38Value > 7000 && col38Value <= 7150) ? 1*col15Value :
                     (col38Value > 7500 && col38Value <= 7650) ? 1*col15Value :
                     (col38Value > 8000 && col38Value <= 8150) ? 1*col15Value :
                     (col38Value > 8150 && col38Value <= 8300) ? 2*col15Value :
                     (col38Value > 9000 && col38Value <= 9026) ? 1*col15Value :
                     (col38Value > 10000 && col38Value <= 10150) ? 1*col15Value :
                     (col38Value > 10438 && col38Value <= 10738) ? 2*col15Value :
                     0;
    row.find('.col44-input').val(col44Value);
}

function Slat_updateCol45(row) {
    var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량
    var col38Value = parseFloat(row.find('.col38-input').val()) || 0; // AR8에 해당하는 값
    var col45Input = row.find('.col45-input');
    
    // ROUNDUP(AR8/1219, 0) 계산
    var roundedResult = Math.ceil(col38Value / 1219);

    col45Input.val(roundedResult); // 계산된 ROUNDUP 결과 적용
	
}

function Slat_updateCol46(row) {
    var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량
    var col46Input = row.find('.col46-input');
    var col47Input = row.find('.col47-input');

    // col37Value 값 설정
    var col37Value = row.find('.col37-select').val(); // 셔터박스크기 (예: "500*350")
    if (col37Value === 'custom') { // custom 직접 입력 value가 '직접입력'이다.
        col37Value = row.find('.col37_custom').val();
    }

    // col37Value 값 분리 및 계산
    var result;
    if (col37Value.includes('*')) {
        var parts = col37Value.split('*'); // "*" 기준으로 나누기
        var leftValue = parseInt(parts[0]) || 0; // 좌측 값
        var rightValue = parseInt(parts[1]) || 0; // 우측 값
        result = (leftValue + 5) + '*' + (rightValue + 5); // 각 값에 5를 더하고 다시 조합
    } else {
        result = "0"; // 잘못된 값 처리
    }

    col46Input.val(result); // col46Input에 설정된 값 적용
    col47Input.val(col15Value * 2); // col47Input에 셔터수량 * 2 값 설정
}

function Slat_updateCol48(row) {
	// 셔터 연기차단재 W80 3000mm
    var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량		
    var col38Value = parseFloat(row.find('.col38-input').val()) || 0; // AR8에 해당
    var col48Input = row.find('.col48-input');

    // ROUNDDOWN(AR8*2/3000+1,0)을 JavaScript로 변환
    var calculatedValue = Math.floor((col38Value * 2 / 3000) + 1);
    col48Input.val(calculatedValue * col15Value); // 결과에 셔터수량 곱셈 적용
}

function Slat_updateCol49to51(row) {
    // 스크린에만 해당됨 (하단마감재 하장바)
    var col8Value = parseFloat(row.find('.col8-input').val()) || 0;  // 셔터 오픈사이즈 (가로)
    var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량	
    var col49Input = row.find('.col49-input');
    var col50Input = row.find('.col50-input');
    var col51Input = row.find('.col51-input');

    col49Input.val(col8Value); // 기본값 설정

	// col50Input 계산
	var col50Qty = 0;
	if (col8Value <= 3000) {
		col50Qty = 1;
	} else if (col8Value > 4000 && col8Value <= 6000) { // 4000 초과로 수정
		col50Qty = 2;
	} else if (col8Value > 6000 && col8Value <= 7000) {
		col50Qty = 1;
	} else if (col8Value > 8000 && col8Value <= 9000) {
		col50Qty = 3;
	} else if (col8Value > 9000 && col8Value <= 10000) {
		col50Qty = 2;
	} else if (col8Value > 10000 && col8Value <= 11000) {
		col50Qty = 1;
	}

    col50Input.val(col50Qty * col15Value); // col50 산출 수량에 셔터수량 곱셈 적용
	
	var col51Qty = 0;
    if (col8Value > 3000 && col8Value <= 4000) {
        col51Qty = 1;
    } else if (col8Value > 6000 && col8Value <= 7000) {
        col51Qty = 1;
    } else if (col8Value > 7000 && col8Value <= 8000) {
        col51Qty = 2;
    } else if (col8Value > 9000 && col8Value <= 10000) {
        col51Qty = 1;
    } else if (col8Value > 10000 && col8Value <= 11000) {
        col51Qty = 2;
    } else if (col8Value > 11000 && col8Value <= 12000) {
        col51Qty = 3;
    }
    col51Input.val(col51Qty * col15Value); // col51 산출 수량에 셔터수량 곱셈 적용	
	
}

function Slat_updateCol52to54(row) {
	// 스크린에만 해당됨 (하단마감재 엘바)
    var col52Input = row.find('.col52-input');
    var col53Input = row.find('.col53-input');
    var col54Input = row.find('.col54-input');

	col52Input.val(0); // 기본값 설정	        
	col53Input.val(0); // 기본값 설정        
	col54Input.val(0); // 기본값 설정        
}

function Slat_updateCol55(row) {
	// 스크린에만 해당됨 (하단마감재 보강평철)
    var col55Input = row.find('.col55-input');
	col55Input.val(0); // 기본값 설정	 	
}

function Slat_updateCol56to57(row) {
	// 스크린에만 해당됨 (하단마감재 보강평철)
    var col56Input = row.find('.col56-input');
    var col57Input = row.find('.col57-input');

	col56Input.val(0); // 기본값 설정	        
	col57Input.val(0); // 기본값 설정        
}

function Slat_updateCol58(row) {
    var col58Input = row.find('.col58-input'); // 12T 무게평철 스크린에만 해당됨 (철재는 해당없음)
        col58Input.val(0);    
}

function Slat_updateCol59(row) {
    var col10Value = parseFloat(row.find('.col10-input').val()) || 0;  // 셔터 길이 기장
    var col13Value = parseFloat(row.find('.col13-input').val()) || 0;  // 중량    
    var col59Input = row.find('.col59-input');
    
	if (col10Value <= 4500) {
		if (col13Value <= 400) {
			col59Input.val(4);
		} else if (col13Value > 400) {
			col59Input.val(5);
		}
	} else if (col10Value > 4500 && col10Value <= 5600) {
		if (col13Value <= 600) {
			col59Input.val(5);
		} else if (col13Value > 600) {
			col59Input.val(6);
		}
	} else if (col10Value > 5600 && col10Value <= 7800) {
		if (col13Value <= 800) {
			col59Input.val(6);
		} else if (col13Value > 800) {
			col59Input.val(8);
		}
	} else if (col10Value > 7800 && col13Value <= 10000) {
		col59Input.val(8);
	} else {
		col59Input.val(0);  // 조건에 맞지 않는 경우 기본값 0
	}
}

function Slat_updateCol60to71(row) {
	var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량			
    var col59Value = parseFloat(row.find('.col22-select').val()) || 0; // 브라켓인치 샤프트 인치
    var col10Value = parseFloat(row.find('.col10-input').val()) || 0; // 제작사이즈 가로
	
	// console.log('샤프트 길이산출',col10Value);

    row.find('.col61-input').val((col59Value === 4 && col10Value <= 3050) ?   col15Value : 0);
    row.find('.col62-input').val((col59Value === 4 && col10Value > 3050 && col10Value <= 4550) ?   col15Value : 0);
    row.find('.col63-input').val((col59Value === 4 && col10Value > 4550 && col10Value <= 6050) ?   col15Value : 0);
    row.find('.col64-input').val((col59Value === 5 && col10Value <= 5900 ) ?  col15Value : 0);
    row.find('.col65-input').val((col59Value === 5 && col10Value > 5900 && col10Value <= 6900) ?   col15Value : 0);
    row.find('.col66-input').val((col59Value === 5 && col10Value > 6900 && col10Value <= 8250) ?   col15Value : 0);
    row.find('.col67-input').val(0); // 철재는 0
    row.find('.col68-input').val((col59Value === 6 && col10Value <= 6000) ?   col15Value : 0);
    row.find('.col69-input').val((col59Value === 6 && col10Value > 6000 && col10Value <= 7000) ?   col15Value : 0);
    row.find('.col70-input').val((col59Value === 6 && col10Value > 7000 && col10Value <= 7800) ?   col15Value : 0);
    row.find('.col71-input').val((col59Value === 8 ) ?   col15Value : 0);
}

function Slat_updateCol72(row) {
    var col38Value = parseFloat(row.find('.col38-input').val()) || 0; // 셔터박스 사이즈
    var col72Input = row.find('.col72-input');
    
    col72Input.val((col38Value <= 1600) ? 3 :
                  (col38Value <= 2800) ? 4 :
                  (col38Value <= 4000) ? 5 :
                  (col38Value <= 5200) ? 6 :
                  (col38Value <= 6400) ? 7 :
                  (col38Value <= 7600) ? 8 :
                  (col38Value <= 8800) ? 9 :
                  (col38Value <= 10000) ? 10 :
                  (col38Value <= 12000) ? 11 : 0);
}


function Slat_updateCol73(row) {		
    var col38Value = parseFloat(row.find('.col38-input').val()) || 0; // 서터박스 사이즈
    var col72Value = parseFloat(row.find('.col72-input').val()) || 0;

    row.find('.col73-input').val(col38Value + 3000 * col72Value);	
}

function Slat_updateCol74to75(row) {
	var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량			
    var col73Value = parseFloat(row.find('.col73-input').val()) || 0;
	
    var col74Input = row.find('.col74-input');
    col74Input.val((col73Value <= 9000) ? 3 * col15Value:
                   (col73Value > 9000 && col73Value <= 12000) ? 4 * col15Value:
                   (col73Value > 12000 && col73Value <= 15000) ? 5 * col15Value :
                   (col73Value > 15000 && col73Value <= 18000) ? 6 * col15Value : 0) ;
				
    var col75Input = row.find('.col75-input');
    col75Input.val((col73Value > 18000 && col73Value <= 24000) ? 4 * col15Value :
                   (col73Value > 24000 && col73Value <= 30000) ? 5 * col15Value :
                   (col73Value > 30000 && col73Value <= 36000) ? 6 * col15Value :
                   (col73Value > 36000 && col73Value <= 42000) ? 7 * col15Value :
                   (col73Value > 42000 && col73Value <= 48000) ? 8 * col15Value : 0) ;
}

function Slat_updateCo76(row) {
    // 조인트바
    var col15Value = parseFloat(row.find('.col15-input').val()) || 0; // 셔터수량
    var col10Value = parseFloat(row.find('.col10-input').val()) || 0; // 제작사이즈 (가로)    
    var col76Input = row.find('.col76-input');

    console.log('조인트바 계산 col10Value : ', col10Value);
    console.log('조인트바 계산 col15Value : ', col15Value);
    
	var calculatedValue = 2 + Math.floor((col10Value - 500) / 1000);
	col76Input.val(calculatedValue * col15Value);

    console.log('조인트바 계산 col76 : ', col76Input.val());
    
}

	
function Slat_updateTotals() {
    var sumColumns = [16, 17, 18, 19, 20, 21, 22, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 50, 51, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84];
    
    sumColumns.forEach(function (colIndex) {
        var total = 0;

        $('#estimateSlatTable tbody tr').each(function () {
            var $cell = $(this).find('td').eq(colIndex - 1);

            var val = '';
            if ($cell.find('input').length > 0) {
                val = $cell.find('input').val() || '';
            } else if ($cell.find('select').length > 0) {
                val = $cell.find('select').val() || '';
            }

            var numericValue = parseFloat(val.toString().replace(/,/g, '')) || 0;
            total += numericValue;
        });

        // 합계를 해당 열의 footer에 업데이트 (0일 경우 공백)
        var formattedTotal = total === 0 ? '' : total.toLocaleString();
        $('#estimateSlattotalCol' + colIndex).text(formattedTotal);
    });
}

</script>
