diff --git a/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderFormPopup_general.jsp b/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderFormPopup_general.jsp index 697799d..948c3a5 100644 --- a/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderFormPopup_general.jsp +++ b/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderFormPopup_general.jsp @@ -281,12 +281,12 @@ $(document).ready(function(){ $(this).jqGrid('setCell', ids[i], 'ROW_NUM', i+1); } - setTimeout(function(){ gridFn.footerSummary(); }, 100); + setTimeout(function(){ gridFn.calcAllRows(); }, 100); } }); gridFn.opennEdit(); - gridFn.footerSummary(); + gridFn.calcAllRows(); <% if(isModify){ %> // 수정 가능 상태 @@ -368,7 +368,7 @@ $(document).ready(function(){ $(".select2").select2(); gridFn.opennEdit(); - gridFn.footerSummary(); + gridFn.calcAllRows(); }); // 결재라인 가져오기 @@ -511,6 +511,19 @@ var gridFn = { this.footerSummary(); } + ,calcAllRows: function(){ + var $g = $("#grid1"); + var ids = grid.jqGrid('getDataIDs'); + for(var i = 0; i < ids.length; i++){ + var rowId = ids[i]; + var qtyVal = $g.find("#"+rowId+"_ORDER_QTY").val(); + var priceVal = $g.find("#"+rowId+"_PARTNER_PRICE").val(); + var qty = Number(fnc_checkNullDefaultValue(qtyVal, grid.jqGrid('getCell', rowId, "ORDER_QTY")).toString().replace(/,/g,"")); + var unitPrice = Number(fnc_checkNullDefaultValue(priceVal, grid.jqGrid('getCell', rowId, "PARTNER_PRICE")).toString().replace(/,/g,"")); + grid.jqGrid('setCell', rowId, "SUPPLY_UNIT_PRICE", qty * unitPrice); + } + this.footerSummary(); + } ,footerSummary: function(){ var totalSupplyPrice = 0; diff --git a/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderFormPopup_outsourcing.jsp b/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderFormPopup_outsourcing.jsp index 85fa4eb..0cb1254 100644 --- a/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderFormPopup_outsourcing.jsp +++ b/WebContent/WEB-INF/view/purchaseOrder/purchaseOrderFormPopup_outsourcing.jsp @@ -280,12 +280,12 @@ $(document).ready(function(){ $(this).jqGrid('setCell', ids[i], 'ROW_NUM', i+2); // 2부터 시작 (PDF 양식 참고) } - setTimeout(function(){ gridFn.footerSummary(); }, 100); + setTimeout(function(){ gridFn.calcAllRows(); }, 100); } }); gridFn.opennEdit(); - gridFn.footerSummary(); + gridFn.calcAllRows(); <% if(isModify){ %> // 수정 가능 상태 @@ -474,6 +474,19 @@ var gridFn = { this.footerSummary(); } + ,calcAllRows: function(){ + var $g = $("#grid1"); + var ids = grid.jqGrid('getDataIDs'); + for(var i = 0; i < ids.length; i++){ + var rowId = ids[i]; + var qtyVal = $g.find("#"+rowId+"_ORDER_QTY").val(); + var priceVal = $g.find("#"+rowId+"_PARTNER_PRICE").val(); + var qty = Number(fnc_checkNullDefaultValue(qtyVal, grid.jqGrid('getCell', rowId, "ORDER_QTY")).toString().replace(/,/g,"")); + var unitPrice = Number(fnc_checkNullDefaultValue(priceVal, grid.jqGrid('getCell', rowId, "PARTNER_PRICE")).toString().replace(/,/g,"")); + grid.jqGrid('setCell', rowId, "SUPPLY_UNIT_PRICE", qty * unitPrice); + } + this.footerSummary(); + } ,footerSummary: function(){ var totalSupplyPrice = 0; diff --git a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp index 7cb14b8..9636055 100644 --- a/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp +++ b/WebContent/WEB-INF/view/salesMng/purchaseListFormPopUp.jsp @@ -271,11 +271,22 @@ function createSelect2Editor(options) { $(select).select2('open'); }); - $(select).on('select2:select select2:clear', function(e) { + var isCleared = false; + + $(select).on('select2:select', function(e) { success($(select).val()); }); + $(select).on('select2:clear', function(e) { + isCleared = true; + setTimeout(function() { + $(select).select2('close'); + success(''); + }, 0); + }); + $(select).on('select2:close', function() { + if(isCleared) return; setTimeout(function() { success($(select).val()); }, 100); @@ -672,19 +683,12 @@ function fn_initGrid() { title: '가공업체', field: 'PROCESSING_VENDOR', editor: function(cell, onRendered, success, cancel, editorParams) { - // Select2 에디터 return createSelect2Editor(processingVendorList)(cell, onRendered, success, cancel, editorParams); }, formatter: function(cell) { var value = cell.getValue(); + if(!value) return ''; - // 저장된 값이 없으면 기본값 '0000008377'(RPS) 설정 - if(value === undefined || value === null || value === '') { - value = '0000008377'; - cell.getRow().update({PROCESSING_VENDOR: value}, false); - } - - // OBJID로 업체명 조회하여 표시 for(var i = 0; i < processingVendorList.length; i++) { if(processingVendorList[i].id == value) { return processingVendorList[i].text; diff --git a/src/com/pms/mapper/purchaseOrder.xml b/src/com/pms/mapper/purchaseOrder.xml index e1295fb..7e97835 100644 --- a/src/com/pms/mapper/purchaseOrder.xml +++ b/src/com/pms/mapper/purchaseOrder.xml @@ -880,12 +880,7 @@ SRP.OBJID, SRP.PART_OBJID, COALESCE(NULLIF(SRP.QTY::VARCHAR, ''), '0') AS QTY, - -- 발주수량: PO_QTY가 있고 0보다 크면 사용, 아니면 QTY 사용 - CASE - WHEN SRP.PO_QTY IS NOT NULL AND SRP.PO_QTY::NUMERIC > 0 THEN SRP.PO_QTY::VARCHAR - WHEN SRP.QTY IS NOT NULL THEN SRP.QTY::VARCHAR - ELSE '0' - END AS ORDER_QTY, + COALESCE(NULLIF(SRP.QTY::VARCHAR, ''), '0') AS ORDER_QTY, COALESCE(SRP.UNIT_PRICE, 0) AS PARTNER_PRICE, COALESCE(SRP.TOTAL_PRICE, 0) AS TOTAL_PRICE, SRP.VENDOR_PM AS PARTNER_OBJID, diff --git a/src/com/pms/mapper/salesMng.xml b/src/com/pms/mapper/salesMng.xml index 54bfa3e..ed05500 100644 --- a/src/com/pms/mapper/salesMng.xml +++ b/src/com/pms/mapper/salesMng.xml @@ -3172,7 +3172,7 @@ UPDATE SET 0 AS ORDER_QTY, 0 AS ITEM_QTY2, 0 AS PRODUCTION_QTY, - COALESCE(SRP.PROCESSING_VENDOR, '') AS PROCESSING_VENDOR, + CASE WHEN SRP.PROCESSING_VENDOR IS NULL THEN '0000008377' ELSE SRP.PROCESSING_VENDOR END AS PROCESSING_VENDOR, NULL AS PROCESSING_DEADLINE, NULL AS GRINDING_DEADLINE, -- 구매 관련 컬럼 (SALES_REQUEST_PART에서 조회) @@ -3463,7 +3463,7 @@ SELECT G.RAW_MATERIAL_SPEC, G.RAW_MATERIAL, G.RAW_MATERIAL_SIZE AS SIZE, - G.PROCESSING_VENDOR, + CASE WHEN G.PROCESSING_VENDOR IS NULL THEN '0000008377' ELSE G.PROCESSING_VENDOR END AS PROCESSING_VENDOR, G.PROCESSING_DEADLINE, G.GRINDING_DEADLINE, G.REQUIRED_QTY, @@ -4184,6 +4184,7 @@ ORDER BY V.PATH2 SALES_REQUEST_MASTER_OBJID, PART_OBJID, QTY, + UNIT, UNIT_PRICE, TOTAL_PRICE, VENDOR_PM, @@ -4199,6 +4200,7 @@ ORDER BY V.PATH2 #{PROPOSAL_MASTER_OBJID}, PART_OBJID, QTY, + UNIT, UNIT_PRICE, TOTAL_PRICE, VENDOR AS VENDOR_PM, @@ -4219,6 +4221,7 @@ ORDER BY V.PATH2 SALES_REQUEST_MASTER_OBJID, PART_OBJID, QTY, + UNIT, UNIT_PRICE, TOTAL_PRICE, VENDOR_PM, @@ -4234,6 +4237,7 @@ ORDER BY V.PATH2 #{PROPOSAL_MASTER_OBJID}, PART_OBJID, PRODUCTION_QTY AS QTY, + UNIT, PROCESSING_UNIT_PRICE AS UNIT_PRICE, PROCESSING_TOTAL_PRICE AS TOTAL_PRICE, PROCESSING_VENDOR AS VENDOR_PM, @@ -4254,6 +4258,7 @@ ORDER BY V.PATH2 SALES_REQUEST_MASTER_OBJID, PART_OBJID, QTY, + UNIT, UNIT_PRICE, TOTAL_PRICE, VENDOR_PM, @@ -4269,6 +4274,7 @@ ORDER BY V.PATH2 #{PROPOSAL_MASTER_OBJID}, PART_OBJID, QTY, + UNIT, UNIT_PRICE, TOTAL_PRICE, VENDOR_PM, @@ -4289,6 +4295,7 @@ ORDER BY V.PATH2 SALES_REQUEST_MASTER_OBJID, PART_OBJID, QTY, + UNIT, UNIT_PRICE, TOTAL_PRICE, VENDOR_PM, @@ -4304,6 +4311,7 @@ ORDER BY V.PATH2 #{PROPOSAL_MASTER_OBJID}, PART_OBJID, PRODUCTION_QTY AS QTY, + UNIT, PROCESSING_UNIT_PRICE AS UNIT_PRICE, PROCESSING_TOTAL_PRICE AS TOTAL_PRICE, PROCESSING_VENDOR AS VENDOR_PM, @@ -4803,7 +4811,7 @@ ORDER BY V.PATH2 - SELECT ROW_NUMBER() OVER(ORDER BY SRP.REGDATE) AS RNUM, SRP.OBJID, @@ -4812,14 +4820,17 @@ ORDER BY V.PATH2 PM.PART_NAME, PM.SPEC, PM.MATERIAL, - SRP.UNIT, + COALESCE(SRP.UNIT, PM.UNIT) AS UNIT, COALESCE( (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRP.UNIT), (SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = PM.UNIT) ) AS UNIT_TITLE, SRP.QTY, - SRP.UNIT_PRICE, - SRP.TOTAL_PRICE, + COALESCE(SRP.UNIT_PRICE, 0) AS UNIT_PRICE, + CASE + WHEN COALESCE(SRP.TOTAL_PRICE::NUMERIC, 0) > 0 THEN SRP.TOTAL_PRICE::NUMERIC + ELSE COALESCE(SRP.QTY::NUMERIC, 0) * COALESCE(SRP.UNIT_PRICE::NUMERIC, 0) + END AS TOTAL_PRICE, SRP.VENDOR_PM, (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = SRP.VENDOR_PM) AS VENDOR_NAME, SRP.REMARK, diff --git a/src/com/pms/salesmgmt/service/SalesMngService.java b/src/com/pms/salesmgmt/service/SalesMngService.java index 636ff75..da7212a 100644 --- a/src/com/pms/salesmgmt/service/SalesMngService.java +++ b/src/com/pms/salesmgmt/service/SalesMngService.java @@ -2731,10 +2731,15 @@ public class SalesMngService { // 줄바꿈을 HTML
태그로 변환 String htmlContents = contents.replace("\n", "
"); - // 메일 발송 (간단한 방식) + // 메일 발송 (견적요청서 - PURCHASE 계정 사용) boolean sendResult = false; + ArrayList toUserIdList = new ArrayList(); + toUserIdList.add(""); + ArrayList singleEmailList = new ArrayList(); for(String toEmail : toEmailList) { - sendResult = MailUtil.sendMailNew(toEmail, subject, htmlContents); + singleEmailList.clear(); + singleEmailList.add(toEmail); + sendResult = MailUtil.sendMailWithAttachFile(null, null, toUserIdList, singleEmailList, ccEmailList, null, null, subject, htmlContents, null, "QUOTATION_REQUEST", Constants.Mail.ACCOUNT_TYPE_PURCHASE); if(!sendResult) break; }