From 2fafff5ee5c74683844816a059fcd8342e198396 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Wed, 22 Oct 2025 16:18:07 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=AC=EC=A0=81=EA=B4=80=EB=A6=AC,=20?= =?UTF-8?q?=EC=A3=BC=EB=AC=B8=EC=84=9C=EA=B4=80=EB=A6=AC=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/contractMgmt/estimateList_new.jsp | 7 +- .../contractMgmt/estimateRegistFormPopup.jsp | 180 +++-- .../view/contractMgmt/estimateTemplate1.jsp | 757 ++++++++++++++---- .../template/PART_EXCEL_IMPORT_TEMPLATE.xlsx | Bin 76928 -> 78837 bytes .../controller/ContractMgmtController.java | 58 +- src/com/pms/salesmgmt/mapper/contractMgmt.xml | 45 +- .../service/ContractMgmtService.java | 52 +- 7 files changed, 817 insertions(+), 282 deletions(-) diff --git a/WebContent/WEB-INF/view/contractMgmt/estimateList_new.jsp b/WebContent/WEB-INF/view/contractMgmt/estimateList_new.jsp index 50547d7..74fd096 100644 --- a/WebContent/WEB-INF/view/contractMgmt/estimateList_new.jsp +++ b/WebContent/WEB-INF/view/contractMgmt/estimateList_new.jsp @@ -596,7 +596,7 @@ function fn_openEstimateByObjId(templateObjId, templateType){ Swal.close(); var popup_width = 900; - var popup_height = 800; + var popup_height = 1200; var url = ""; if(templateType === "1"){ @@ -613,7 +613,7 @@ function fn_openEstimateByObjId(templateObjId, templateType){ //견적서 양식 열기 (CONTRACT_OBJID로) function fn_openEstimateTemplate(objId, templateType){ var popup_width = 900; - var popup_height = 800; + var popup_height = 1200; var url = ""; if(templateType === "1"){ @@ -686,6 +686,9 @@ function fn_sendEstimateMail(contractObjId){ text: '견적서가 성공적으로 발송되었습니다.', icon: 'success', confirmButtonText: '확인' + }).then(() => { + // 메일 발송 상태 업데이트를 위해 목록 새로고침 + fn_search(); }); } else { Swal.fire({ diff --git a/WebContent/WEB-INF/view/contractMgmt/estimateRegistFormPopup.jsp b/WebContent/WEB-INF/view/contractMgmt/estimateRegistFormPopup.jsp index 7ad8c60..75ec44d 100644 --- a/WebContent/WEB-INF/view/contractMgmt/estimateRegistFormPopup.jsp +++ b/WebContent/WEB-INF/view/contractMgmt/estimateRegistFormPopup.jsp @@ -42,9 +42,15 @@ var itemCounter = 1; var itemList = []; + // 반납사유 공통코드 옵션 (숨겨진 div에서 읽어옴) + var returnReasonOptions = ''; + // 품번 데이터는 AJAX로 검색하므로 초기 데이터 없음 $(function() { + // 반납사유 옵션을 템플릿에서 읽어옴 + returnReasonOptions = $('#return_reason_template').html(); + //alert("${info.CATEGORY_CD}") if("${info.CATEGORY_CD}" == '0000170' || "${info.CATEGORY_CD}" == '0000171'){//오버홀, 개조 $(".DIRECT").show(); @@ -480,7 +486,8 @@ var serialNos = "<%= item.get("SERIAL_NOS") != null ? item.get("SERIAL_NOS") : (item.get("serial_nos") != null ? item.get("serial_nos") : "") %>"; var quantity = "<%= item.get("QUANTITY") != null ? item.get("QUANTITY") : (item.get("quantity") != null ? item.get("quantity") : "") %>"; var dueDate = "<%= item.get("DUE_DATE") != null ? item.get("DUE_DATE") : (item.get("due_date") != null ? item.get("due_date") : "") %>"; - var customerRequest = "<%= item.get("CUSTOMER_REQUEST") != null ? item.get("CUSTOMER_REQUEST") : (item.get("customer_request") != null ? item.get("customer_request") : "") %>"; + // 고객요청사항 - 특수문자 이스케이프 처리 + var customerRequest = <%= new com.google.gson.Gson().toJson(item.get("CUSTOMER_REQUEST") != null ? item.get("CUSTOMER_REQUEST") : (item.get("customer_request") != null ? item.get("customer_request") : "")) %>; var returnReason = "<%= item.get("RETURN_REASON") != null ? item.get("RETURN_REASON") : (item.get("return_reason") != null ? item.get("return_reason") : "") %>"; html += ''; @@ -493,43 +500,71 @@ html += ''; html += ''; html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + html += ''; + + $("#itemListBody").append(html); + + // 고객요청사항 값 설정 (안전하게 text로 설정) + if(customerRequest) { + $("#" + itemId + " .item-customer-request").val(customerRequest); + } - $("#itemListBody").append(html); - - // S/N 데이터 설정 - JSON 객체를 문자열로 변환하여 저장 - var snJsonString = JSON.stringify(snJsonData); - - // DOM이 완전히 준비된 후 값 설정 - setTimeout(function() { - $("#" + itemId + "_sn_list").val(snJsonString); - }, 10); - - // 품번/품명 옵션 채우기 (저장된 품번/품명도 함께 전달) - fn_fillPartOptions(itemId, savedPartObjId, savedPartNo, savedPartName); - - // datepicker 적용 - $("#" + itemId + " .date_icon").datepicker({ - changeMonth: true, - changeYear: true - }); - - // 숫자만 입력 처리 및 콤마 추가 - $("#" + itemId + " .item-quantity").on("keyup", function() { - $(this).val(addComma($(this).val().replace(/[^0-9]/g, ""))); - }); - // 이미 저장된 수량에 콤마 추가 - var qtyInput = $("#" + itemId + " .item-quantity"); - qtyInput.val(addComma(qtyInput.val())); + // S/N 데이터 설정 - JSON 객체를 문자열로 변환하여 저장 + var snJsonString = JSON.stringify(snJsonData); + + // DOM이 완전히 준비된 후 값 설정 + setTimeout(function() { + $("#" + itemId + "_sn_list").val(snJsonString); + // 반납사유 select 값 설정 + if(returnReason) { + $("#" + itemId + " .item-return-reason").val(returnReason).trigger('change'); + } + }, 10); + + // 품번/품명 옵션 채우기 (저장된 품번/품명도 함께 전달) + fn_fillPartOptions(itemId, savedPartObjId, savedPartNo, savedPartName); + + // datepicker 적용 + $("#" + itemId + " .date_icon").datepicker({ + changeMonth: true, + changeYear: true + }); + + // 반납사유 옵션 추가 및 select2 초기화 + $("#" + itemId + " .item-return-reason").html(returnReasonOptions).select2({ + width: '100%' + }); + + // 고객요청사항 textarea 자동 높이 조절 + var $textarea = $("#" + itemId + " .item-customer-request"); + $textarea.on('input', function() { + this.style.height = 'auto'; + this.style.height = (this.scrollHeight) + 'px'; + }); + // 기존 데이터가 있으면 높이 조절 (약간의 지연 후 실행) + setTimeout(function() { + if($textarea.val()) { + $textarea[0].style.height = 'auto'; + $textarea[0].style.height = ($textarea[0].scrollHeight) + 'px'; + } + }, 50); + + // 숫자만 입력 처리 및 콤마 추가 + $("#" + itemId + " .item-quantity").on("keyup", function() { + $(this).val(addComma($(this).val().replace(/[^0-9]/g, ""))); + }); + // 이미 저장된 수량에 콤마 추가 + var qtyInput = $("#" + itemId + " .item-quantity"); + qtyInput.val(addComma(qtyInput.val())); // 품목 정보 저장 itemList.push({ @@ -1180,10 +1215,10 @@ html += ''; html += ''; html += ''; - html += ''; + html += ''; html += ''; html += ''; - html += ''; + html += ''; html += ''; html += ''; html += ''; @@ -1195,18 +1230,29 @@ // 품번/품명 옵션 채우기 (신규 추가) fn_fillPartOptions(itemId, null, null, null); - // 추가된 행의 날짜 필드에 datepicker 적용 - $("#" + itemId + " .date_icon").datepicker({ - changeMonth: true, - changeYear: true - }); - - // 숫자만 입력 처리 - $("#" + itemId + " .item-quantity").on("keyup", function() { - $(this).val(addComma($(this).val().replace(/[^0-9]/g, ""))); - }); - - // 품목 정보 저장 + // 추가된 행의 날짜 필드에 datepicker 적용 + $("#" + itemId + " .date_icon").datepicker({ + changeMonth: true, + changeYear: true + }); + + // 반납사유 옵션 추가 및 select2 초기화 + $("#" + itemId + " .item-return-reason").html(returnReasonOptions).select2({ + width: '100%' + }); + + // 고객요청사항 textarea 자동 높이 조절 + $("#" + itemId + " .item-customer-request").on('input', function() { + this.style.height = 'auto'; + this.style.height = (this.scrollHeight) + 'px'; + }); + + // 숫자만 입력 처리 + $("#" + itemId + " .item-quantity").on("keyup", function() { + $(this).val(addComma($(this).val().replace(/[^0-9]/g, ""))); + }); + + // 품목 정보 저장 itemList.push({ id: itemId, snList: [] @@ -1765,18 +1811,24 @@ -
-
-

- 영업관리_견적관리_견적요청등록 -

-
+ + + +
+
+

+ 영업관리_견적관리_견적요청등록 +

+
-
- -
- 견적요청 기본정보 -
+
+ +
+ 견적요청 기본정보 +
@@ -1841,14 +1893,14 @@ - + - + diff --git a/WebContent/WEB-INF/view/contractMgmt/estimateTemplate1.jsp b/WebContent/WEB-INF/view/contractMgmt/estimateTemplate1.jsp index 669d267..11b6fe4 100644 --- a/WebContent/WEB-INF/view/contractMgmt/estimateTemplate1.jsp +++ b/WebContent/WEB-INF/view/contractMgmt/estimateTemplate1.jsp @@ -4,8 +4,45 @@ <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <%@include file= "/init.jsp" %> <% -PersonBean person = (PersonBean)session.getAttribute(Constants.PERSON_BEAN); -String userId = CommonUtils.checkNull(person.getUserId()); +// init.jsp에서 이미 connectUserName이 설정되어 있음 +String userName = connectUserName; +String userId = connectUserId; + +// 전화번호는 별도로 조회 필요 +String userPhone = ""; +try { + com.pms.common.SqlMapConfig sqlMapConfig = com.pms.common.SqlMapConfig.getInstance(); + org.apache.ibatis.session.SqlSession sqlSession = sqlMapConfig.getSqlSession(false); + + Map paramMap = new HashMap(); + paramMap.put("userId", userId); + + Map userInfo = (Map) sqlSession.selectOne("login.getUserInfo", paramMap); + + if(userInfo != null) { + // MyBatis가 소문자로 변환하므로 소문자 우선 시도 + String cellPhone = (String)userInfo.get("cell_phone"); + String tel = (String)userInfo.get("tel"); + + // 소문자로 안되면 대문자 시도 (호환성) + if(cellPhone == null) { + cellPhone = (String)userInfo.get("CELL_PHONE"); + } + if(tel == null) { + tel = (String)userInfo.get("TEL"); + } + + userPhone = CommonUtils.checkNull(cellPhone); + if("".equals(userPhone)) { + userPhone = CommonUtils.checkNull(tel); + } + } + sqlSession.close(); +} catch(Exception e) { + System.out.println("전화번호 조회 오류: " + e.getMessage()); + e.printStackTrace(); +} + String objId = CommonUtils.checkNull(request.getParameter("objId")); String templateObjId = CommonUtils.checkNull(request.getParameter("templateObjId")); %> @@ -34,6 +71,7 @@ body { font-size: 12pt; margin: 0; padding: 20px; + padding-bottom: 100px; /* 고정 버튼 영역을 위한 하단 여백 */ background-color: #f5f5f5; } @@ -173,24 +211,48 @@ body { } .btn-area { + position: fixed; + bottom: 0; + left: 0; + right: 0; text-align: right; - margin-top: 20px; - padding: 10px; + padding: 15px 30px; + background-color: #ffffff; + border-top: 3px solid #007bff; + box-shadow: 0 -2px 10px rgba(0,0,0,0.1); + z-index: 1000; } -.plm_btns { - padding: 10px 30px; - margin: 0 5px; - font-size: 14px; - cursor: pointer; - border: 1px solid #ddd; - background-color: #f8f9fa; - transition: background-color 0.2s; +.plm_btns:first-child { + margin-left: 600px; } +/* .plm_btns { + display: inline-block; + padding: 12px 40px; + margin: 0 5px; + font-size: 15px; + font-weight: bold; + cursor: pointer; + border: 2px solid #007bff; + background-color: #007bff; + color: white; + border-radius: 5px; + transition: all 0.3s; + line-height: 1; + vertical-align: middle; + white-space: nowrap; +} */ .plm_btns:hover { - background-color: #e2e6ea; - border-color: #dae0e5; + background-color: #0056b3; + border-color: #0056b3; + box-shadow: 0 2px 6px rgba(0,123,255,0.4); +} + +.plm_btns:active { + background-color: #004085; + border-color: #004085; + box-shadow: 0 1px 3px rgba(0,123,255,0.2); } input[type="text"], @@ -225,9 +287,42 @@ var g_templateObjId = "<%=templateObjId%>"; var g_exchangeRate = 1; // 환율 (기본값 1) var g_currencyName = "KRW"; // 통화명 (기본값 원화) var g_apprStatus = ""; // 결재상태 +var g_userPhone = "<%=userPhone%>"; // 로그인 사용자 연락처 $(function(){ + // 로그인 사용자 정보 디버깅 + //console.log("=== 로그인 사용자 정보 ==="); + //console.log("g_userPhone:", g_userPhone); + + // 로그인 사용자 정보 자동 입력 + // HTML에서 이미 초기값이 설정되어 있으므로 연락처만 설정 + $("#manager_contact").val(g_userPhone || ""); + $("#manager_name").val('<%=connectUserDeptName%> '+' <%=connectUserName%>'); + + //console.log("manager_contact 설정값:", $("#manager_contact").val()); + + // 시행일자 datepicker 초기화 + $("#executor").datepicker({ + changeMonth: true, + changeYear: true, + dateFormat: 'yy-mm-dd' + }); + + // 수신처(고객사) select2 초기화 + $("#recipient").select2({ + width: '100%', + placeholder: '고객사 선택' + }); + + // 수신처 변경 시 수신인 자동 입력 + $("#recipient").change(function(){ + // 데이터 로드 중이 아닐 때만 수신인 자동 로드 + if(!window.isLoadingData) { + fn_loadCustomerContact($(this).val()); + } + }); + // templateObjId가 있으면 기존 데이터 로드 var templateObjId = "<%=templateObjId%>"; if(templateObjId && templateObjId !== ""){ @@ -262,12 +357,18 @@ $(function(){ fn_calculateTotal(); // 합계 재계산 }); + // 금액 필드 직접 수정 시에도 합계 재계산 + $(document).on("change keyup", ".item-amount", function(){ + fn_calculateTotal(); // 합계 재계산 + }); + // 콤마 자동 추가 (동적 요소 포함) $(document).on("blur", ".item-price, .item-amount", function(){ var val = $(this).val().replace(/,/g, "").replace(/₩/g, ""); if(!isNaN(val) && val !== "") { $(this).val(addComma(val)); } + fn_calculateTotal(); // blur 시에도 합계 재계산 }); // 단가 입력 시 실시간 콤마 처리 @@ -289,33 +390,60 @@ $(function(){ if("<%=objId%>" !== "" && "<%=objId%>" !== "-1") { fn_loadData(); } else { + // 새 견적서 작성 시 기본 행의 셀렉트박스 초기화 + fn_initItemDescSelect('default_item_1'); + fn_initItemDescSelect('default_item_2'); + // 초기 로드 시 합계 계산 fn_calculateTotal(); + + // 새로 등록 시 명시적으로 작성중 상태 설정 + g_apprStatus = "작성중"; + fn_controlButtons(); } }); // 결재상태에 따라 버튼 표시 제어 function fn_controlButtons() { + console.log("=== fn_controlButtons 호출 ==="); + console.log("g_apprStatus:", g_apprStatus); + if(g_apprStatus === "결재완료") { + console.log("결재완료 상태 - 입력 필드 비활성화"); // 결재완료된 경우 행추가, 저장 버튼 숨김 - $("#btnAddItem").hide(); + $("#btnAddRow").hide(); $("#btnSave").hide(); // 모든 입력 필드를 읽기 전용으로 변경 $("input, textarea").attr("readonly", true); $("input, textarea").css("background-color", "#f5f5f5"); + // select 박스 비활성화 (고객사 선택 등) + $("select").attr("disabled", true); + $("select").css("background-color", "#f5f5f5"); + + // datepicker 비활성화 + $("#executor").datepicker("option", "disabled", true); + // 삭제 버튼 숨김 $(".btn-delete-row").hide(); } else { + console.log("결재완료 아님 - 입력 필드 활성화"); // 결재완료가 아닌 경우 버튼 표시 - $("#btnAddItem").show(); + $("#btnAddRow").show(); $("#btnSave").show(); // 입력 필드 활성화 $("input, textarea").attr("readonly", false); $("input, textarea").css("background-color", ""); + // select 박스 활성화 + $("select").attr("disabled", false); + $("select").css("background-color", ""); + + // datepicker 활성화 + $("#executor").datepicker("option", "disabled", false); + // 삭제 버튼 표시 $(".btn-delete-row").show(); } @@ -339,14 +467,15 @@ function fn_calculateTotal() { // 품목 행만 순회 (계 행, 원화환산 행, 비고 행 제외) $("#itemsTableBody tr").not(".total-row, .total-krw-row, .remarks-row").each(function(){ var amount = $(this).find(".item-amount").val() || "0"; - // 콤마와 ₩ 기호 제거 후 숫자로 변환 - amount = amount.replace(/,/g, "").replace(/₩/g, ""); + // 콤마와 통화 기호 제거 후 숫자로 변환 + amount = amount.replace(/,/g, "").replace(/₩/g, "").replace(/\$/g, "").replace(/€/g, "").replace(/¥/g, ""); var numAmount = parseInt(amount) || 0; total += numAmount; }); - // 합계 행에 표시 - $("#totalAmount").text(addComma(total)); + // 합계 행에 통화 기호와 함께 표시 + var currencySymbol = getCurrencySymbol(); + $("#totalAmount").text(currencySymbol + addComma(total)); // 원화환산 금액 계산 및 표시 fn_calculateTotalKRW(total); @@ -355,7 +484,7 @@ function fn_calculateTotal() { // 원화환산 공급가액 계산 function fn_calculateTotalKRW(total) { var totalKRW = total * g_exchangeRate; - $("#totalAmountKRW").text(addComma(Math.round(totalKRW))); + $("#totalAmountKRW").text("₩" + addComma(Math.round(totalKRW))); } // 콤마 추가 @@ -364,6 +493,90 @@ function addComma(num) { return num.toString().replace(regexp, ','); } +// 통화 기호 반환 +function getCurrencySymbol() { + if(g_currencyName.indexOf("달러") >= 0 || g_currencyName === "USD") { + return "$"; + } else if(g_currencyName.indexOf("유로") >= 0 || g_currencyName === "EUR") { + return "€"; + } else if(g_currencyName.indexOf("엔") >= 0 || g_currencyName === "JPY") { + return "¥"; + } else if(g_currencyName.indexOf("위안") >= 0 || g_currencyName === "CNY") { + return "¥"; + } else { + return "₩"; // 기본값 원화 + } +} + +// 품명 셀렉트박스 초기화 함수 +function fn_initItemDescSelect(itemId) { + $("#" + itemId + " .item-desc-select").select2({ + placeholder: "품명 입력하여 검색...", + allowClear: true, + width: '100%', + minimumInputLength: 1, + language: { + inputTooShort: function() { + return "최소 1글자 이상 입력하세요"; + }, + searching: function() { + return "검색 중..."; + }, + noResults: function() { + return "검색 결과가 없습니다"; + } + }, + ajax: { + url: '/contractMgmt/searchPartList.do', + dataType: 'json', + type: 'POST', + contentType: 'application/x-www-form-urlencoded; charset=UTF-8', + delay: 250, + data: function(params) { + return { + searchTerm: params.term + }; + }, + processResults: function(data) { + var results = $.map(data, function(item) { + var objId = item.OBJID || item.objid || item.objId; + var partNo = item.PART_NO || item.part_no || item.partNo; + var partName = item.PART_NAME || item.part_name || item.partName; + var spec = item.SPECIFICATION || item.specification || ''; + + return { + id: objId, + text: partName, + partName: partName, + partNo: partNo, + spec: spec + }; + }); + + return { + results: results + }; + }, + cache: true + } + }); + + // 품명 선택 시 hidden 필드와 규격 자동 입력 + $("#" + itemId + " .item-desc-select").on('change', function() { + var selectedData = $(this).select2('data')[0]; + if(selectedData) { + $("#" + itemId + " .item-desc").val(selectedData.text); + $("#" + itemId + " .item-part-objid").val(selectedData.id); // part_objid 저장 + if(selectedData.spec) { + $("#" + itemId + " .item-spec").val(selectedData.spec); + } + } else { + $("#" + itemId + " .item-desc").val(''); + $("#" + itemId + " .item-part-objid").val(''); // part_objid 초기화 + } + }); +} + // 행 추가 함수 function fn_addItemRow() { // 계 행, 원화환산 행, 비고 행 제외하고 품목 행 개수 계산 @@ -371,20 +584,28 @@ function fn_addItemRow() { var nextNo = itemRows.length + 1; // 새 행 생성 - var newRow = '' + + var itemId = 'item_' + new Date().getTime(); + var newRow = '' + '' + - '' + + '' + '' + '' + '' + '' + - '' + + '' + '' + ''; // 계 행 바로 위에 추가 $(".total-row").before(newRow); + // 품명 셀렉트박스 초기화 + fn_initItemDescSelect(itemId); + // 합계 재계산 fn_calculateTotal(); } @@ -399,39 +620,69 @@ function fn_loadData() { }, dataType: "json", success: function(data) { - if(data && data.estimate) { - // 환율 정보 저장 - g_exchangeRate = parseFloat(data.estimate.EXCHANGE_RATE || "1"); - g_currencyName = data.estimate.CONTRACT_CURRENCY_NAME || "KRW"; + if(data && data.estimate) { + // 환율 정보 저장 (소문자 우선) + var exchangeRate = data.estimate.exchange_rate || data.estimate.EXCHANGE_RATE || "1"; + var currencyName = data.estimate.contract_currency_name || data.estimate.CONTRACT_CURRENCY_NAME || "KRW"; + + g_exchangeRate = parseFloat(exchangeRate); + g_currencyName = currencyName; + + // 결재상태 저장 + g_apprStatus = data.estimate.APPR_STATUS || "작성중"; - // 결재상태 저장 - g_apprStatus = data.estimate.APPR_STATUS || "작성중"; - - // 데이터 바인딩 - $("#executor").val(data.estimate.EXECUTOR || ""); - $("#recipient").val(data.estimate.RECIPIENT || ""); - $("#estimate_no").val(data.estimate.ESTIMATE_NO || ""); - $("#contact_person").val(data.estimate.CONTACT_PERSON || ""); - $("#greeting_text").val(data.estimate.GREETING_TEXT || "견적을 요청해 주셔서 대단히 감사합니다.\n하기와 같이 견적서를 제출합니다."); - $("#manager_name").val(data.estimate.MANAGER_NAME || "영업부"); - $("#manager_contact").val(data.estimate.MANAGER_CONTACT || ""); + // 데이터 바인딩 + $("#executor").val(data.estimate.EXECUTOR || ""); + + // 데이터 로드 중 플래그 설정 (수신인 자동 로드 방지) + window.isLoadingData = true; + + // 수신처 설정 + var recipientValue = data.estimate.RECIPIENT || ""; + $("#recipient").val(recipientValue).trigger('change'); + + // 플래그 해제 + setTimeout(function() { + window.isLoadingData = false; + }, 100); + + $("#estimate_no").val(data.estimate.ESTIMATE_NO || ""); + $("#contact_person").val(data.estimate.CONTACT_PERSON || ""); + $("#greeting_text").val(data.estimate.GREETING_TEXT || "견적을 요청해 주셔서 대단히 감사합니다.\n하기와 같이 견적서를 제출합니다."); + + // 담당자/연락처는 저장된 값이 있을 때만 덮어씀 + var managerName = data.estimate.MANAGER_NAME || ""; + var managerContact = data.estimate.MANAGER_CONTACT || ""; + if(managerName && managerName !== "" && managerName !== "영업부") { + $("#manager_name").val(managerName); + } + if(managerContact && managerContact !== "") { + $("#manager_contact").val(managerContact); + } // 품목 데이터 로드 if(data.items && data.items.length > 0) { // 기존 행 초기화 후 데이터 추가 var itemsHtml = ""; for(var i = 0; i < data.items.length; i++) { - var item = data.items[i]; - itemsHtml += ''; - itemsHtml += ''; - itemsHtml += ''; - itemsHtml += ''; - itemsHtml += ''; - itemsHtml += ''; - itemsHtml += ''; - itemsHtml += ''; - itemsHtml += ''; - itemsHtml += ''; + var item = data.items[i]; + var itemId = 'loaded_item_' + i; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; } // 계 행 추가 @@ -441,8 +692,8 @@ function fn_loadData() { itemsHtml += ''; itemsHtml += ''; - // 원화환산 공급가액 행 추가 - itemsHtml += ''; + // 원화환산 공급가액 행 추가 (숨김) + itemsHtml += ''; itemsHtml += ''; itemsHtml += ''; itemsHtml += ''; @@ -456,15 +707,58 @@ function fn_loadData() { itemsHtml += ''; itemsHtml += ''; - $("#itemsTableBody").html(itemsHtml); + $("#itemsTableBody").html(itemsHtml); + + // 로드된 품목의 셀렉트박스 초기화 및 데이터 설정 + for(var i = 0; i < data.items.length; i++) { + var item = data.items[i]; + var itemId = 'loaded_item_' + i; + var partObjId = item.PART_OBJID || item.part_objid || ''; - // 비고 로드 (테이블 생성 직후) - $("#note_remarks").val(data.estimate.NOTE_REMARKS || ""); + // PART_OBJID가 있으면 해당 품목을 셀렉트박스에 설정 + if(partObjId) { + // AJAX로 품목 정보 조회하여 셀렉트박스에 옵션 추가 + $.ajax({ + url: '/contractMgmt/searchPartList.do', + type: 'POST', + data: { partObjId: partObjId }, + dataType: 'json', + async: false, // 동기 처리 + success: function(partData) { + if(partData && partData.length > 0) { + var part = partData[0]; + var objId = part.OBJID || part.objid || part.objId; + var partName = part.PART_NAME || part.part_name || part.partName; + var spec = part.SPEC || part.spec || ''; + + // 옵션 생성 및 추가 (selected 상태로) + var newOption = new Option(partName, objId, true, true); + $("#" + itemId + " .item-desc-select").append(newOption); + + // hidden 필드 업데이트 + $("#" + itemId + " .item-desc").val(partName); + $("#" + itemId + " .item-part-objid").val(objId); + + // 규격이 있으면 자동 입력 + if(spec) { + $("#" + itemId + " .item-spec").val(spec); + } + } + } + }); + } - // 합계 계산 - fn_calculateTotal(); + // 셀렉트박스 초기화 (옵션 추가 후) + fn_initItemDescSelect(itemId); } + // 비고 로드 (테이블 생성 직후) + $("#note_remarks").val(data.estimate.NOTE_REMARKS || ""); + + // 합계 계산 + fn_calculateTotal(); + } + // 하단 비고 로드 $("#note1").val(data.estimate.NOTE1 || "1. 견적유효기간: 일"); $("#note2").val(data.estimate.NOTE2 || "2. 납품기간: 발주 후 1주 이내"); @@ -500,19 +794,22 @@ function fn_loadTemplateData(templateObjId){ g_contractObjId = contractObjId; } - // 환율 정보 저장 - g_exchangeRate = parseFloat(template.EXCHANGE_RATE || template.exchange_rate || template.exchangeRate || "1"); - g_currencyName = template.CONTRACT_CURRENCY_NAME || template.contract_currency_name || template.contractCurrencyName || "KRW"; + // 환율 정보 저장 (소문자 우선) + var exchangeRate = template.exchange_rate || template.EXCHANGE_RATE || template.exchangeRate || "1"; + var currencyName = template.contract_currency_name || template.CONTRACT_CURRENCY_NAME || template.contractCurrencyName || "KRW"; + + g_exchangeRate = parseFloat(exchangeRate); + g_currencyName = currencyName; // 결재상태 저장 - g_apprStatus = template.APPR_STATUS || template.appr_status || template.apprStatus || "작성중"; + g_apprStatus = template.appr_status || template.APPR_STATUS || template.apprStatus || "작성중"; // 대문자/소문자 모두 지원 - var executor = template.EXECUTOR || template.executor || ""; - var recipient = template.RECIPIENT || template.recipient || ""; - var estimateNo = template.ESTIMATE_NO || template.estimate_no || template.estimateNo || ""; - var contactPerson = template.CONTACT_PERSON || template.contact_person || template.contactPerson || ""; - var greetingText = template.GREETING_TEXT || template.greeting_text || template.greetingText || ""; + var executor = template.EXECUTOR || template.executor || ""; + var recipient = template.RECIPIENT || template.recipient || ""; + var estimateNo = template.ESTIMATE_NO || template.estimate_no || template.estimateNo || ""; + var contactPerson = template.CONTACT_PERSON || template.contact_person || template.contactPerson || ""; + var greetingText = template.GREETING_TEXT || template.greeting_text || template.greetingText || ""; var note1 = template.NOTE1 || template.note1 || ""; var note2 = template.NOTE2 || template.note2 || ""; var note3 = template.NOTE3 || template.note3 || ""; @@ -520,14 +817,31 @@ function fn_loadTemplateData(templateObjId){ var managerName = template.MANAGER_NAME || template.manager_name || template.managerName || "영업부"; var managerContact = template.MANAGER_CONTACT || template.manager_contact || template.managerContact || ""; - // 기본 정보 채우기 - $("#executor").val(executor); - $("#recipient").val(recipient); - $("#estimate_no").val(estimateNo); - $("#contact_person").val(contactPerson); + // 기본 정보 채우기 + $("#executor").val(executor); + + // 데이터 로드 중 플래그 설정 (수신인 자동 로드 방지) + window.isLoadingData = true; + + // 수신처 설정 + $("#recipient").val(recipient).trigger('change'); + + // 플래그 해제 + setTimeout(function() { + window.isLoadingData = false; + }, 100); + + $("#estimate_no").val(estimateNo); + $("#contact_person").val(contactPerson); $("#greeting_text").val(greetingText); - $("#manager_name").val(managerName); - $("#manager_contact").val(managerContact); + + // 담당자/연락처는 저장된 값이 있을 때만 덮어씀 + if(managerName && managerName !== "" && managerName !== "영업부") { + $("#manager_name").val(managerName); + } + if(managerContact && managerContact !== "") { + $("#manager_contact").val(managerContact); + } // 하단 비고 로드 $("#note1").val(note1); @@ -538,55 +852,111 @@ function fn_loadTemplateData(templateObjId){ // 테이블 내 비고는 나중에 설정 (textarea 생성 후) var noteRemarks = template.NOTE_REMARKS || template.note_remarks || template.noteRemarks || ""; - // 품목 데이터 채우기 - if(data.items && data.items.length > 0){ - $("#itemsTableBody").empty(); - data.items.forEach(function(item, idx){ - var description = item.DESCRIPTION || item.description || ''; - var specification = item.SPECIFICATION || item.specification || ''; - var quantity = item.QUANTITY || item.quantity || ''; - var unit = item.UNIT || item.unit || ''; - var unitPrice = item.UNIT_PRICE || item.unit_price || item.unitPrice || ''; - var amount = item.AMOUNT || item.amount || ''; - var note = item.NOTE || item.note || ''; - - // 단가와 금액에 콤마 추가 - var unitPriceFormatted = unitPrice ? addComma(unitPrice) : ''; - var amountFormatted = amount ? addComma(amount) : '₩0'; - - var row = $(""); - row.append(''); - row.append(''); - row.append(''); - row.append(''); - row.append(''); - row.append(''); - row.append(''); - row.append(''); - $("#itemsTableBody").append(row); - }); + // 품목 데이터 채우기 + if(data.items && data.items.length > 0){ + $("#itemsTableBody").empty(); + + // 품목 HTML 생성 + var itemsHtml = ""; + for(var i = 0; i < data.items.length; i++) { + var item = data.items[i]; + var itemId = 'template_item_' + i; + var description = item.DESCRIPTION || item.description || ''; + var specification = item.SPECIFICATION || item.specification || ''; + var quantity = item.QUANTITY || item.quantity || ''; + var unit = item.UNIT || item.unit || ''; + var unitPrice = item.UNIT_PRICE || item.unit_price || item.unitPrice || ''; + var amount = item.AMOUNT || item.amount || ''; + var note = item.NOTE || item.note || ''; + var partObjId = item.PART_OBJID || item.part_objid || ''; - // 계 행 추가 - var totalRow = $(""); - totalRow.append(''); - totalRow.append(''); - totalRow.append(''); - $("#itemsTableBody").append(totalRow); + // 단가와 금액에 콤마 추가 + var unitPriceFormatted = unitPrice ? addComma(unitPrice) : ''; + var amountFormatted = amount ? addComma(amount) : ''; - // 원화환산 공급가액 행 추가 - var totalKRWRow = $(""); - totalKRWRow.append(''); - totalKRWRow.append(''); - totalKRWRow.append(''); - $("#itemsTableBody").append(totalKRWRow); + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + } + + // 계 행 추가 + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + + // 원화환산 공급가액 행 추가 (숨김) + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + + // 비고 행 추가 + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + + // HTML 삽입 + $("#itemsTableBody").html(itemsHtml); + + // 셀렉트박스 초기화 및 데이터 설정 + for(var i = 0; i < data.items.length; i++) { + var item = data.items[i]; + var itemId = 'template_item_' + i; + var partObjId = item.PART_OBJID || item.part_objid || ''; - // 비고 행 추가 - var remarksRow = $(""); - remarksRow.append(''); - $("#itemsTableBody").append(remarksRow); + // PART_OBJID가 있으면 해당 품목을 셀렉트박스에 설정 + if(partObjId) { + // AJAX로 품목 정보 조회하여 셀렉트박스에 옵션 추가 + $.ajax({ + url: '/contractMgmt/searchPartList.do', + type: 'POST', + data: { partObjId: partObjId }, + dataType: 'json', + async: false, // 동기 처리 + success: function(partData) { + if(partData && partData.length > 0) { + var part = partData[0]; + var objId = part.OBJID || part.objid || part.objId; + var partName = part.PART_NAME || part.part_name || part.partName; + var spec = part.SPEC || part.spec || ''; + + // 옵션 생성 및 추가 (selected 상태로) + var newOption = new Option(partName, objId, true, true); + $("#" + itemId + " .item-desc-select").append(newOption); + + // hidden 필드 업데이트 + $("#" + itemId + " .item-desc").val(partName); + $("#" + itemId + " .item-part-objid").val(objId); + + // 규격이 있으면 자동 입력 (기존 값이 없을 때만) + if(spec && !$("#" + itemId + " .item-spec").val()) { + $("#" + itemId + " .item-spec").val(spec); + } + } + } + }); + } + + // 셀렉트박스 초기화 (옵션 추가 후) + fn_initItemDescSelect(itemId); + } // 테이블 내 비고 값 설정 (textarea 생성 직후) $("#note_remarks").val(noteRemarks); @@ -610,6 +980,31 @@ function fn_loadTemplateData(templateObjId){ } // 저장 +// 고객사 담당자 정보 로드 +function fn_loadCustomerContact(customerObjId) { + if(!customerObjId || customerObjId === "") { + $("#contact_person").val(""); + return; + } + + $.ajax({ + url: "/contractMgmt/getCustomerContactInfo.do", + type: "POST", + data: { customerObjId: customerObjId }, + dataType: "json", + success: function(data) { + if(data && data.contactPerson) { + $("#contact_person").val(data.contactPerson + " 귀하"); + } else { + $("#contact_person").val("구매 담당자님 귀하"); + } + }, + error: function() { + $("#contact_person").val("구매 담당자님 귀하"); + } + }); +} + function fn_save() { var items = []; // 계 행, 원화환산 행, 비고 행 제외하고 품목 행만 저장 @@ -621,6 +1016,7 @@ function fn_save() { items.push({ seq: idx + 1, + part_objid: row.find(".item-part-objid").val() || "", // part_objid 추가 description: row.find(".item-desc").val() || "", specification: row.find(".item-spec").val() || "", quantity: quantity.replace(/,/g, ""), // 콤마 제거 @@ -716,37 +1112,40 @@ function fn_save() { - - - - + + + - - - - - - - - - +
+ 담당자 :
+ 연락처 : +
+ + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - + + @@ -840,10 +1247,10 @@ function fn_save() {
- - - - + + + +
diff --git a/WebContent/template/PART_EXCEL_IMPORT_TEMPLATE.xlsx b/WebContent/template/PART_EXCEL_IMPORT_TEMPLATE.xlsx index fcee375b3280a11dcc30c146d2a0c7486d18a768..e6822b5bfab0a9a1d8bb94a58eb75c68d07af7c9 100644 GIT binary patch literal 78837 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

rT+4rHSnMQ2y}gFy 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 *ec&?pe75 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 CJA9M? diff --git a/src/com/pms/salesmgmt/controller/ContractMgmtController.java b/src/com/pms/salesmgmt/controller/ContractMgmtController.java index 6983be0..8519551 100644 --- a/src/com/pms/salesmgmt/controller/ContractMgmtController.java +++ b/src/com/pms/salesmgmt/controller/ContractMgmtController.java @@ -1698,6 +1698,7 @@ public class ContractMgmtController { String target_project_no ="";//대상프로젝트번호 String mechanical_type ="";//기계형식 String overhaul_order ="";//오버홀차수 + String return_reason_cd ="";//반납사유 Map info = null; List> itemList = new ArrayList>(); @@ -1727,7 +1728,7 @@ public class ContractMgmtController { target_project_no = CommonUtils.nullToEmpty((String)info.get("TARGET_PROJECT_NO")); mechanical_type = CommonUtils.nullToEmpty((String)info.get("MECHANICAL_TYPE")); overhaul_order = CommonUtils.nullToEmpty((String)info.get("OVERHAUL_ORDER")); - + return_reason_cd = CommonUtils.nullToEmpty((String)info.get("RETURN_REASON_CD")); // 품목 목록 조회 itemList = contractMgmtService.getContractItemList(objId); } @@ -1794,7 +1795,8 @@ public class ContractMgmtController { code_map.put("project_no",commonService.bizMakeOptionList("", target_project_no,"common.getCusProjectNoList")); //기계형식 code_map.put("mechanical_type", commonService.bizMakeOptionList("", mechanical_type,"common.getMechanicalTypeList")); - + //반납사유 + code_map.put("return_reason_cd", commonService.bizMakeOptionList("0001810", return_reason_cd, "common.getCodeselect")); // 품번 목록은 AJAX로 검색하므로 제거 @@ -1858,6 +1860,7 @@ public class ContractMgmtController { try{ Map estimate = null; List items = new ArrayList(); + Map code_map = new HashMap(); // templateObjId가 있으면 기존 견적서 조회 (견적현황에서 클릭한 경우) if(!"".equals(templateObjId) && !"-1".equals(templateObjId)){ @@ -1871,8 +1874,16 @@ public class ContractMgmtController { items = contractMgmtService.getEstimateTemplateItems(paramMap); } + // 고객사 코드맵 추가 + String customer_cd = ""; + if(estimate != null && estimate.get("CUSTOMER_OBJID") != null) { + customer_cd = CommonUtils.nullToEmpty((String)estimate.get("CUSTOMER_OBJID")); + } + code_map.put("customer_cd", commonService.bizMakeOptionList("", customer_cd, "common.getsupplyselect")); + request.setAttribute("estimate", estimate); request.setAttribute("items", items); + request.setAttribute("code_map", code_map); } catch (Exception e) { e.printStackTrace(); @@ -1881,6 +1892,49 @@ public class ContractMgmtController { return "/contractMgmt/estimateTemplate1"; } + /** + * 고객사 담당자 정보 조회 (AJAX) + */ + @ResponseBody + @RequestMapping(value="/contractMgmt/getCustomerContactInfo.do", method=RequestMethod.POST) + public Map getCustomerContactInfo(HttpServletRequest request, @RequestParam Map paramMap){ + Map resultMap = new HashMap(); + + try { + String customerObjId = CommonUtils.checkNull(paramMap.get("customerObjId")); + + if(!"".equals(customerObjId)) { + // 고객사 담당자 정보 조회 + Map customerInfo = contractMgmtService.getCustomerContactInfo(paramMap); + + if(customerInfo != null) { + // 소문자 우선 시도 (MyBatis가 소문자로 변환) + String contactPerson = CommonUtils.checkNull(customerInfo.get("contact_person")); + if("".equals(contactPerson)) { + contactPerson = CommonUtils.checkNull(customerInfo.get("CONTACT_PERSON")); + } + + if(!"".equals(contactPerson)) { + resultMap.put("contactPerson", contactPerson); + resultMap.put("result", "success"); + } else { + resultMap.put("result", "no_contact"); + } + } else { + resultMap.put("result", "no_data"); + } + } else { + resultMap.put("result", "no_customer"); + } + + } catch (Exception e) { + e.printStackTrace(); + resultMap.put("result", "error"); + } + + return resultMap; + } + /** * 견적서 양식2 (장비 견적서) 팝업 * @param session diff --git a/src/com/pms/salesmgmt/mapper/contractMgmt.xml b/src/com/pms/salesmgmt/mapper/contractMgmt.xml index 635c225..ce87ce7 100644 --- a/src/com/pms/salesmgmt/mapper/contractMgmt.xml +++ b/src/com/pms/salesmgmt/mapper/contractMgmt.xml @@ -574,7 +574,7 @@ AND DUE_DATE != '' ) AS OTHER_DUE_DATE_COUNT ,( - SELECT RETURN_REASON + SELECT CODE_NAME(RETURN_REASON) FROM CONTRACT_ITEM WHERE CONTRACT_OBJID = T.OBJID AND STATUS = 'ACTIVE' @@ -942,9 +942,7 @@ ,CONTRACT_DEL_DATE ,CONTRACT_COMPANY ,CONTRACT_DATE - ,PO_NO ,MANUFACTURE_PLANT - ,CONTRACT_RESULT ,PROJECT_NAME ,SPEC_USER_ID ,SPEC_PLAN_DATE @@ -968,12 +966,7 @@ ,QUANTITY ,CUSTOMER_REQUEST ,EXCHANGE_RATE - ,ORDER_DATE - ,ORDER_UNIT_PRICE - ,ORDER_SUPPLY_PRICE - ,ORDER_VAT - ,ORDER_TOTAL_AMOUNT - ) + ) VALUES ( #{objId} @@ -1009,9 +1002,7 @@ ,#{contract_del_date} ,#{contract_company} ,#{contract_date} - ,#{po_no} ,#{manufacture_plant} - ,#{contract_result} ,#{project_name} ,#{spec_user_id} ,#{spec_plan_date} @@ -1035,12 +1026,7 @@ ,#{quantity} ,#{customer_request} ,#{exchange_rate} - ,#{order_date} - ,#{unit_price} - ,#{supply_price} - ,#{vat} - ,#{total_amount} - ) + ) ON CONFLICT (OBJID) DO UPDATE SET @@ -1073,11 +1059,9 @@ ,CONTRACT_DEL_DATE = #{contract_del_date} ,CONTRACT_COMPANY = #{contract_company} ,CONTRACT_DATE = #{contract_date} - ,PO_NO = #{po_no} ,MANUFACTURE_PLANT = #{manufacture_plant} - ,CONTRACT_RESULT = #{contract_result} ,PROJECT_NAME = #{project_name} - ,SPEC_USER_ID = #{spec_user_id} + ,SPEC_USER_ID = #{spec_user_id} ,SPEC_PLAN_DATE = #{spec_plan_date} ,SPEC_COMP_DATE = #{spec_comp_date} ,SPEC_RESULT_CD = #{spec_result_cd} @@ -1098,12 +1082,7 @@ ,SERIAL_NO = #{serial_no} ,QUANTITY = #{quantity} ,CUSTOMER_REQUEST = #{customer_request} - ,EXCHANGE_RATE = #{exchange_rate} - ,ORDER_DATE = #{order_date} - ,ORDER_UNIT_PRICE = #{unit_price} - ,ORDER_SUPPLY_PRICE = #{supply_price} - ,ORDER_VAT = #{vat} - ,ORDER_TOTAL_AMOUNT = #{total_amount} + ,EXCHANGE_RATE = #{exchange_rate} @@ -3979,6 +3958,7 @@ ORDER BY ASM.SUPPLY_NAME TEMPLATE_OBJID, SEQ, CATEGORY, + PART_OBJID, DESCRIPTION, SPECIFICATION, QUANTITY, @@ -4001,6 +3981,7 @@ ORDER BY ASM.SUPPLY_NAME TEMPLATE_OBJID, SEQ, CATEGORY, + PART_OBJID, DESCRIPTION, SPECIFICATION, QUANTITY, @@ -4115,6 +4096,7 @@ WHERE TEMPLATE_OBJID, SEQ, CATEGORY, + PART_OBJID, DESCRIPTION, SPECIFICATION, QUANTITY, @@ -4128,6 +4110,7 @@ WHERE #{template_objid}, (item->>'seq')::INTEGER, item->>'category', + item->>'part_objid', item->>'description', item->>'specification', item->>'quantity', @@ -4701,4 +4684,14 @@ WHERE WHERE ITEM_OBJID = #{itemObjId} + + + \ No newline at end of file diff --git a/src/com/pms/salesmgmt/service/ContractMgmtService.java b/src/com/pms/salesmgmt/service/ContractMgmtService.java index 820df4c..67507f7 100644 --- a/src/com/pms/salesmgmt/service/ContractMgmtService.java +++ b/src/com/pms/salesmgmt/service/ContractMgmtService.java @@ -1215,6 +1215,27 @@ public class ContractMgmtService { return resultMap; } + /** + * 고객사 담당자 정보 조회 + * @param paramMap + * @return + */ + public Map getCustomerContactInfo(Map paramMap){ + Map resultMap = new HashMap(); + SqlSession sqlSession = null; + + try{ + sqlSession = SqlMapConfig.getInstance().getSqlSession(false); + resultMap = (Map) sqlSession.selectOne("contractMgmt.getCustomerContactInfo", paramMap); + } catch(Exception e){ + e.printStackTrace(); + } finally { + if(sqlSession != null) sqlSession.close(); + } + + return resultMap; + } + /** * 견적서 템플릿 기본 정보 조회 * @param paramMap @@ -1773,7 +1794,7 @@ private String makeEstimateMailContents(Map contractInfo, Map estimateTemplate, contents.append("

"); } - // 계 (총 합계) + // 계 (총 합계) - 통화 기호 포함 String totalAmountStr = CommonUtils.checkNull(estimateTemplate.get("total_amount")); if("".equals(totalAmountStr)) totalAmountStr = CommonUtils.checkNull(estimateTemplate.get("TOTAL_AMOUNT")); @@ -1782,23 +1803,28 @@ private String makeEstimateMailContents(Map contractInfo, Map estimateTemplate, totalAmountStr = String.format("%,d", totalAmount); } + // 통화 기호 가져오기 + String currencyName = CommonUtils.checkNull(estimateTemplate.get("contract_currency_name")); + if("".equals(currencyName)) currencyName = CommonUtils.checkNull(estimateTemplate.get("CONTRACT_CURRENCY_NAME")); + + String currencySymbol = "₩"; // 기본값 + if(currencyName.indexOf("달러") >= 0 || "USD".equals(currencyName)) { + currencySymbol = "$"; + } else if(currencyName.indexOf("유로") >= 0 || "EUR".equals(currencyName)) { + currencySymbol = "€"; + } else if(currencyName.indexOf("엔") >= 0 || "JPY".equals(currencyName)) { + currencySymbol = "¥"; + } else if(currencyName.indexOf("위안") >= 0 || "CNY".equals(currencyName)) { + currencySymbol = "¥"; + } + contents.append(""); contents.append(""); - contents.append(""); + contents.append(""); contents.append(""); contents.append(""); - // 원화환산 공급가액 - String totalAmountKrw = CommonUtils.checkNull(estimateTemplate.get("total_amount_krw")); - if("".equals(totalAmountKrw)) totalAmountKrw = CommonUtils.checkNull(estimateTemplate.get("TOTAL_AMOUNT_KRW")); - - if(!"".equals(totalAmountKrw)){ - contents.append(""); - contents.append(""); - contents.append(""); - contents.append(""); - contents.append(""); - } + // 원화환산 공급가액 - 제거 (화면에서도 숨김 처리) // 테이블 내 비고 String noteRemarks = CommonUtils.checkNull(estimateTemplate.get("note_remarks"));
' + nextNo + '' + + '' + + '' + + '' + + '
' + (i + 1) + '
' + (i + 1) + ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += '
' + (idx + 1) + '
0
원화환산 공급가액 (KRW)0
' + (i + 1) + ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += ''; + itemsHtml += '
0
'; + itemsHtml += '
<비고>
'; + itemsHtml += ''; + itemsHtml += '
' + - '
<비고>
' + - '' + - '
시행일자 - - -
- 회사 도장 - +
시행일자 + + +
+ 회사 도장 + -
- 담당자 :
- 연락처 :
-
수신처 - -
수신인 - -
수신처 + +
수신인 + +
견적번호 @@ -780,35 +1179,43 @@ function fn_save() { 비고
1
2
1 + + + +
2 + + + +
0
" + totalAmountStr + "" + currencySymbol + totalAmountStr + "
원화환산 공급가액 (KRW)" + totalAmountKrw + "