From c4eeec14504d85ae8b3b6c2aadad7d1f30b150dc Mon Sep 17 00:00:00 2001 From: hjjeong Date: Fri, 20 Mar 2026 17:42:59 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AC=EB=A7=A4=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=9E=85=EA=B3=A0/=EB=A7=A4=EC=9E=85=EB=A7=88=EA=B0=90=20?= =?UTF-8?q?=EA=B8=88=EC=95=A1=20=EC=86=8C=EC=88=98=EC=A0=90=202=EC=9E=90?= =?UTF-8?q?=EB=A6=AC=20=ED=8F=AC=EB=A7=B7=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - deliveryMngAcceptanceList: 발주/입고/미입고 금액 및 합계 소수점 2자리 적용 - purchaseCloseList: 입고금액/환율/관세/수입부가세 그리드 포맷 적용 - purchaseCloseList: 마감정보입력 팝업 금액 입력/표시/저장 포맷 처리 Made-with: Cursor --- .../deliveryMngAcceptanceList.jsp | 68 +++++++++---------- .../view/purchaseOrder/purchaseCloseList.jsp | 64 ++++++++++------- 2 files changed, 75 insertions(+), 57 deletions(-) diff --git a/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp b/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp index 5521539..ebcc627 100644 --- a/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp +++ b/WebContent/WEB-INF/view/purchaseOrder/deliveryMngAcceptanceList.jsp @@ -133,37 +133,37 @@ var columns = [ else if(cn.includes('유로') || cn === 'EUR') s = '€'; else if(cn.includes('엔') || cn === 'JPY') s = '¥'; else if(cn.includes('위안') || cn === 'CNY') s = '¥'; - return s + Number(value).toLocaleString(); - } - }, - {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '입고금액', field : 'TOTAL_DELIVERY_PRICE', - formatter: function(cell) { - var value = cell.getValue(); - if(!value || value === '' || value === '0') return ''; - var cn = cell.getRow().getData().CURRENCY_NAME || ''; - var s = ''; - if(cn.includes('원') || cn === 'KRW') s = '₩'; - else if(cn.includes('달러') || cn === 'USD') s = '$'; - else if(cn.includes('유로') || cn === 'EUR') s = '€'; - else if(cn.includes('엔') || cn === 'JPY') s = '¥'; - else if(cn.includes('위안') || cn === 'CNY') s = '¥'; - return s + Number(value).toLocaleString(); - } - }, - {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '미입고금액', field : 'TOTAL_NOT_DELIVERY_PRICE', - formatter: function(cell) { - var value = cell.getValue(); - if(!value || value === '' || value === '0') return ''; - var cn = cell.getRow().getData().CURRENCY_NAME || ''; - var s = ''; - if(cn.includes('원') || cn === 'KRW') s = '₩'; - else if(cn.includes('달러') || cn === 'USD') s = '$'; - else if(cn.includes('유로') || cn === 'EUR') s = '€'; - else if(cn.includes('엔') || cn === 'JPY') s = '¥'; - else if(cn.includes('위안') || cn === 'CNY') s = '¥'; - return s + Number(value).toLocaleString(); - } - }, + return s + Number(value).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); + } + }, + {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '입고금액', field : 'TOTAL_DELIVERY_PRICE', + formatter: function(cell) { + var value = cell.getValue(); + if(!value || value === '' || value === '0') return ''; + var cn = cell.getRow().getData().CURRENCY_NAME || ''; + var s = ''; + if(cn.includes('원') || cn === 'KRW') s = '₩'; + else if(cn.includes('달러') || cn === 'USD') s = '$'; + else if(cn.includes('유로') || cn === 'EUR') s = '€'; + else if(cn.includes('엔') || cn === 'JPY') s = '¥'; + else if(cn.includes('위안') || cn === 'CNY') s = '¥'; + return s + Number(value).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); + } + }, + {headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '미입고금액', field : 'TOTAL_NOT_DELIVERY_PRICE', + formatter: function(cell) { + var value = cell.getValue(); + if(!value || value === '' || value === '0') return ''; + var cn = cell.getRow().getData().CURRENCY_NAME || ''; + var s = ''; + if(cn.includes('원') || cn === 'KRW') s = '₩'; + else if(cn.includes('달러') || cn === 'USD') s = '$'; + else if(cn.includes('유로') || cn === 'EUR') s = '€'; + else if(cn.includes('엔') || cn === 'JPY') s = '¥'; + else if(cn.includes('위안') || cn === 'CNY') s = '¥'; + return s + Number(value).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); + } + }, {headerHozAlign : 'center', hozAlign : 'center', minWidth : 100, widthGrow : 1, title : '업체성적서', field : 'INSPECTION_FILE_CNT', formatter:fnc_subInfoValueFormatter, cellClick:function(e, cell){ @@ -269,9 +269,9 @@ function fn_calculateTotalAmount(){ } // 합계 표시 - $("#totalOrderAmount").text(Number(Math.round(totalOrderAmount)).toLocaleString()); - $("#deliveredAmount").text(Number(Math.round(totalDeliveredAmount)).toLocaleString()); - $("#notDeliveredAmount").text(Number(Math.round(totalNotDeliveredAmount)).toLocaleString()); + $("#totalOrderAmount").text(Number(totalOrderAmount).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})); + $("#deliveredAmount").text(Number(totalDeliveredAmount).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})); + $("#notDeliveredAmount").text(Number(totalNotDeliveredAmount).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})); } //수입검사등록 diff --git a/WebContent/WEB-INF/view/purchaseOrder/purchaseCloseList.jsp b/WebContent/WEB-INF/view/purchaseOrder/purchaseCloseList.jsp index de1823b..2b661b1 100644 --- a/WebContent/WEB-INF/view/purchaseOrder/purchaseCloseList.jsp +++ b/WebContent/WEB-INF/view/purchaseOrder/purchaseCloseList.jsp @@ -172,27 +172,39 @@ $(document).ready(function(){ changeMonth: true, changeYear: true }); - // 기존 데이터 세팅 - if(taxType) $('#swal_taxType').val(taxType); - if(taxInvoiceDate) $('#swal_taxInvoiceDate').val(taxInvoiceDate); - if(exportDeclNo) $('#swal_exportDeclNo').val(exportDeclNo); - if(loadingDate) $('#swal_loadingDate').val(loadingDate); - if(foreignType) $('#swal_foreignType').val(foreignType); - if(duty) $('#swal_duty').val(duty); - if(importVat) $('#swal_importVat').val(importVat); - if(exchangeRate) $('#swal_exchangeRate').val(exchangeRate); + // 기존 데이터 세팅 + if(taxType) $('#swal_taxType').val(taxType); + if(taxInvoiceDate) $('#swal_taxInvoiceDate').val(taxInvoiceDate); + if(exportDeclNo) $('#swal_exportDeclNo').val(exportDeclNo); + if(loadingDate) $('#swal_loadingDate').val(loadingDate); + if(foreignType) $('#swal_foreignType').val(foreignType); + if(duty) $('#swal_duty').val(formatMoney(duty)); + if(importVat) $('#swal_importVat').val(formatMoney(importVat)); + if(exchangeRate) $('#swal_exchangeRate').val(formatMoney(exchangeRate)); + + // 금액 입력 필드 포맷 (keyup: 천단위 콤마, blur: 소수점 2자리) + $('#swal_exchangeRate, #swal_duty, #swal_importVat').on('keyup', function(){ + var val = this.value.replace(/[^0-9.]/g, ''); + var parts = val.split('.'); + if(parts.length > 2) val = parts[0] + '.' + parts.slice(1).join(''); + if(parts[0]) parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); + this.value = parts.join('.'); + }).on('blur', function(){ + var v = this.value.replace(/,/g, ''); + if(v && !isNaN(v)) this.value = formatMoney(v); + }); }, preConfirm: function() { - return { - taxType: $('#swal_taxType').val(), - taxInvoiceDate: $('#swal_taxInvoiceDate').val(), - exportDeclNo: $('#swal_exportDeclNo').val(), - loadingDate: $('#swal_loadingDate').val(), - foreignType: $('#swal_foreignType').val(), - duty: $('#swal_duty').val(), - importVat: $('#swal_importVat').val(), - exchangeRate: $('#swal_exchangeRate').val() - }; + return { + taxType: $('#swal_taxType').val(), + taxInvoiceDate: $('#swal_taxInvoiceDate').val(), + exportDeclNo: $('#swal_exportDeclNo').val(), + loadingDate: $('#swal_loadingDate').val(), + foreignType: $('#swal_foreignType').val(), + duty: removeComma($('#swal_duty').val()), + importVat: removeComma($('#swal_importVat').val()), + exchangeRate: removeComma($('#swal_exchangeRate').val()) + }; } }).then(function(result) { if (result.isConfirmed) { @@ -307,7 +319,7 @@ var columns = [ else if(cn.includes('유로') || cn === 'EUR') s = '€'; else if(cn.includes('엔') || cn === 'JPY') s = '¥'; else if(cn.includes('위안') || cn === 'CNY') s = '¥'; - return s + Number(value).toLocaleString(); + return s + Number(value).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2}); } }, // {headerHozAlign:'center', hozAlign:'right', minWidth:90, widthGrow:1, title:'미입고금액', field:'TOTAL_NOT_DELIVERY_PRICE', @@ -322,13 +334,19 @@ var columns = [ }, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1.2, title:'계정과목', field:'SUB_LOCATION_NAME'}, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1.2, title:'국내/해외', field:'FOREIGN_TYPE_NAME'}, - {headerHozAlign:'center', hozAlign:'right', minWidth:100, widthGrow:1.2, title:'환율', field:'EXCHANGE_RATE'}, + {headerHozAlign:'center', hozAlign:'right', minWidth:100, widthGrow:1.2, title:'환율', field:'EXCHANGE_RATE', + formatter: function(cell){ var v = cell.getValue(); if(!v || v === '') return ''; return formatMoney(v); } + }, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1.2, title:'과세구분', field:'TAX_TYPE_NAME'}, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1.2, title:'세금계산서발행일', field:'TAX_INVOICE_DATE'}, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1.2, title:'수출신고필증신고번호', field:'EXPORT_DECL_NO'}, {headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1.2, title:'선적일자', field:'LOADING_DATE'}, - {headerHozAlign:'center', hozAlign:'right', minWidth:100, widthGrow:1.2, title:'관세', field:'DUTY'}, - {headerHozAlign:'center', hozAlign:'right', minWidth:100, widthGrow:1.2, title:'수입부가세', field:'IMPORT_VAT'}, + {headerHozAlign:'center', hozAlign:'right', minWidth:100, widthGrow:1.2, title:'관세', field:'DUTY', + formatter: function(cell){ var v = cell.getValue(); if(!v || v === '') return ''; return formatMoney(v); } + }, + {headerHozAlign:'center', hozAlign:'right', minWidth:100, widthGrow:1.2, title:'수입부가세', field:'IMPORT_VAT', + formatter: function(cell){ var v = cell.getValue(); if(!v || v === '') return ''; return formatMoney(v); } + }, {headerHozAlign:'center', hozAlign:'center', minWidth:85, widthGrow:0.6, title:'매입마감', field:'PURCHASE_CLOSE_DATE'} ];