환종 컬럼 추가 : 구매리스트, M-BOM, 견적요청서, 품의서, 영문발주서, 발주서관리, 입고관리, 품목별 입고관리, 입고일별입고관리. 리스트 총액 컬럼에 총액앞 환종기호 추가.

This commit is contained in:
2026-03-18 09:58:11 +09:00
parent 64376ceb28
commit afb81d2b56
12 changed files with 260 additions and 26 deletions

View File

@@ -111,6 +111,7 @@ var columns = [
{headerHozAlign : 'center', hozAlign : 'left', minWidth : 140, widthGrow : 2, title : '품번', field : 'PART_NO' },
{headerHozAlign : 'center', hozAlign : 'left', minWidth : 180, widthGrow : 3, title : '품명', field : 'PART_NAME' },
{headerHozAlign : 'center', hozAlign : 'left', minWidth : 150, widthGrow : 2, title : '공급업체', field : 'PARTNER_NAME' },
{headerHozAlign : 'center', hozAlign : 'center', minWidth : 60, widthGrow : 0.6, title : '환종', field : 'CURRENCY_NAME' },
{headerHozAlign : 'center', hozAlign : 'center', minWidth : 90, widthGrow : 1, title : '구매담당자', field : 'WRITER_NAME' },
{headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '발주수량', field : 'TOTAL_PO_QTY',
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
@@ -122,13 +123,46 @@ var columns = [
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
},
{headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '발주금액', field : 'TOTAL_SUPPLY_PRICE',
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
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_DELIVERY_PRICE',
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
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:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
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 : 'center', minWidth : 100, widthGrow : 1, title : '업체성적서', field : 'INSPECTION_FILE_CNT',
formatter:fnc_subInfoValueFormatter,
@@ -382,19 +416,21 @@ function fn_formPopUp(objId, formType){
var url = "";
if(formType == 'outsourcing'){
// 외주가공 발주서 양식
target = "purchaseOrderFormPopup_outsourcing";
url = "/purchaseOrder/purchaseOrderFormPopup_outsourcing.do";
popup_width = 1200;
popup_height = 900;
} else if(formType == 'english'){
target = "purchaseOrderFormPopup_english";
url = "/purchaseOrder/purchaseOrderFormPopup_english.do";
popup_width = 1100;
popup_height = 900;
} else if(formType == 'general'){
// 일반 발주서 양식
target = "purchaseOrderFormPopup_general";
url = "/purchaseOrder/purchaseOrderFormPopup_general.do";
popup_width = 1000;
popup_height = 900;
} else {
// 기존 발주서 양식 (FORM_TYPE이 없거나 기존 데이터)
target = "purchaseOrderFormPopup_new";
url = "/purchaseOrder/purchaseOrderFormPopup_new.do";
}

View File

@@ -128,6 +128,7 @@ var columns = [
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:1.5, title:'품번', field:'PART_NO'},
{headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:2, title:'품명', field:'PART_NAME'},
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:1.2, title:'공급업체', field:'PARTNER_NAME'},
{headerHozAlign:'center', hozAlign:'center', minWidth:60, widthGrow:0.6, title:'환종', field:'CURRENCY_NAME'},
{headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:0.8, title:'입고요청일', field:'DELIVERY_REQUEST_DATE'},
{headerHozAlign : 'center', hozAlign : 'center', minWidth : 90, widthGrow : 1, title : '구매담당자', field : 'WRITER_NAME' },
{headerHozAlign:'center', hozAlign:'right', minWidth:80, widthGrow:0.8, title:'발주수량', field:'ORDER_QTY',
@@ -140,13 +141,46 @@ var columns = [
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}
},
{headerHozAlign : 'center', hozAlign : 'right', minWidth : 90, widthGrow : 1, title : '발주금액', field : 'TOTAL_SUPPLY_PRICE',
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
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_DELIVERY_PRICE',
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
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:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false }
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:'center', minWidth:90, widthGrow:1.1, title:'수입검사 검사현황', field:'INSPECTION_STATUS'},
{headerHozAlign:'center', hozAlign:'right', minWidth:80, widthGrow:1.1, title:'처리결과 폐기수량', field:'DEFECT_QTY',
@@ -253,6 +287,11 @@ function fn_formPopUp(objId, formType){
url = "/purchaseOrder/purchaseOrderFormPopup_outsourcing.do";
popup_width = 1200;
popup_height = 900;
} else if(formType == 'english'){
target = "purchaseOrderFormPopup_english";
url = "/purchaseOrder/purchaseOrderFormPopup_english.do";
popup_width = 1100;
popup_height = 900;
} else if(formType == 'general'){
target = "purchaseOrderFormPopup_general";
url = "/purchaseOrder/purchaseOrderFormPopup_general.do";

View File

@@ -99,6 +99,7 @@ var columns = [
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:1.5, title:'품번', field:'PART_NO', frozen:true},
{headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:2, title:'품명', field:'PART_NAME', frozen:true},
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:1.2, title:'공급업체', field:'PARTNER_NAME'},
{headerHozAlign:'center', hozAlign:'center', minWidth:60, widthGrow:0.6, title:'환종', field:'CURRENCY_NAME'},
{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:0.7, title:'입고일', field:'RECEIPT_DATE'},
//{headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:0.8, title:'입고요청일', field:'DELIVERY_REQUEST_DATE'},
{headerHozAlign:'center', hozAlign:'center', minWidth:90, widthGrow:1, title:'구매담당자', field:'WRITER_NAME'},
@@ -115,7 +116,18 @@ var columns = [
// formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}
// },
{headerHozAlign:'center', hozAlign:'right', minWidth:90, widthGrow:1, title:'입고금액', field:'TOTAL_DELIVERY_PRICE',
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}
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:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}
@@ -183,6 +195,11 @@ function fn_formPopUp(objId, formType){
url = "/purchaseOrder/purchaseOrderFormPopup_outsourcing.do";
popup_width = 1200;
popup_height = 900;
} else if(formType == 'english'){
target = "purchaseOrderFormPopup_english";
url = "/purchaseOrder/purchaseOrderFormPopup_english.do";
popup_width = 1100;
popup_height = 900;
} else if(formType == 'general'){
target = "purchaseOrderFormPopup_general";
url = "/purchaseOrder/purchaseOrderFormPopup_general.do";

View File

@@ -191,11 +191,14 @@ $(document).ready(function(){
var unit_cd = $.parseJSON($("#unit_cd").val());
var currency_cd = $.parseJSON($("#currency_cd").val());
var _gridData = $.parseJSON($("#gridDetailList").val());
console.log("=== gridDetailList ===", JSON.stringify(_gridData));
console.log("=== currency_cd ===", JSON.stringify(currency_cd));
grid = $("#grid1").jqGrid({
url: ""
,datatype: "local"
,data: $.parseJSON($("#gridDetailList").val())
,data: _gridData
,colNames: ["OBJID","PART_OBJID","Item No.","Commodity & Description","Spec","Unit","Q'ty","Currency","Unit Price","Amount","Delivery"]
,colModel: [
{name:"OBJID" , hidden: true, sortable:false, editable:false}
@@ -216,7 +219,7 @@ $(document).ready(function(){
}
,{name:"CURRENCY" , width:65, align:"center", sortable:false, editable:<%= isModify %>
,edittype:"select", formatter:"select"
,editoptions:{ value: currency_cd, defaultValue: "USD" }
,editoptions:{ value: currency_cd, defaultValue: "0001534" }
}
,{name:"PARTNER_PRICE" , width:80, align:"right", sortable:false, editable:<%= isModify %>
,formatter:"number", formatoptions:{thousandsSeparator:",", decimalPlaces:2}
@@ -343,7 +346,7 @@ function fn_addRow(rowData){
,"SPEC" : rowData.map.SPEC
,"ORDER_QTY" : v1
,"UNIT" : fnc_checkNullDefaultValue(rowData.map.UNIT, '0001400')
,"CURRENCY" : "USD"
,"CURRENCY" : "0001534"
,"PARTNER_PRICE" : v2
,"SUPPLY_UNIT_PRICE": _rowSum
,"DELIVERY_REQUEST_DATE" : ""
@@ -464,11 +467,19 @@ var gridFn = {
var vat = Math.floor(totalAmount * 0.1);
var totalWithVat = totalAmount + vat;
var ids = grid.jqGrid('getDataIDs');
var currencyCode = '0001534';
if(ids.length > 0) {
var $sel = $("#grid1").find("#" + ids[0] + "_CURRENCY");
currencyCode = $sel.length > 0 ? $sel.val() : (grid.jqGrid('getCell', ids[0], 'CURRENCY') || '0001534');
}
var currencySymbol = getCurrencySymbol(currencyCode);
$("#TOTAL_AMOUNT").val(numberWithCommasDecimal(totalAmount));
$("#TOTAL_SUPPLY_PRICE").val(numberWithCommasDecimal(totalAmount));
$("#TOTAL_VAT").val(numberWithCommasDecimal(vat));
$("#TOTAL_PRICE_ALL").val(numberWithCommasDecimal(totalWithVat));
$("#TOTAL_AMOUNT_DISPLAY").text("US$" + numberWithCommasDecimal(totalAmount));
$("#TOTAL_AMOUNT_DISPLAY").text(currencySymbol + numberWithCommasDecimal(totalAmount));
}
}
@@ -477,6 +488,11 @@ function numberWithCommasDecimal(num) {
return n.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function getCurrencySymbol(currencyCode) {
var symbolMap = { '0001534': 'US$', '0001535': '€', '0001536': '¥', '0001537': '¥', '0001566': '₩' };
return symbolMap[currencyCode] || 'US$';
}
$(window).on('load', function() {
setTimeout(function() {
if(typeof html2canvas !== 'undefined' && typeof jspdf !== 'undefined') {

View File

@@ -348,8 +348,20 @@ var columns = [
{headerHozAlign:'center', hozAlign:'left', widthGrow:1.5, title:'품번', field:'PART_NO'},
{headerHozAlign:'center', hozAlign:'left', widthGrow:2, title:'품명', field:'PART_NAME'},
{headerHozAlign:'center', hozAlign:'left', widthGrow:1.5, title:'공급업체', field:'PARTNER_NAME'},
{headerHozAlign:'center', hozAlign:'center', widthGrow:0.6, title:'환종', field:'CURRENCY_NAME'},
{headerHozAlign:'center', hozAlign:'right', widthGrow:1.2, title:'총액', field:'TOTAL_SUPPLY_PRICE',
formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}
formatter: function(cell) {
var value = cell.getValue();
if(!value || value === '' || value === '0') return '';
var currencyName = cell.getRow().getData().CURRENCY_NAME || '';
var s = '';
if(currencyName.includes('원') || currencyName === 'KRW') s = '₩';
else if(currencyName.includes('달러') || currencyName === 'USD') s = '$';
else if(currencyName.includes('유로') || currencyName === 'EUR') s = '€';
else if(currencyName.includes('엔') || currencyName === 'JPY') s = '¥';
else if(currencyName.includes('위안') || currencyName === 'CNY') s = '¥';
return s + Number(value).toLocaleString();
}
},
// {headerHozAlign:'center', hozAlign:'right', widthGrow:1.2, title:'총액', field:'TOTAL_PRICE_ALL',
// formatter:"money", formatterParams:{thousand:",", symbolAfter:"p", precision:false}

View File

@@ -396,7 +396,6 @@ var proposalStatus = "${resultMap.STATUS}";
var amaranthStatus = "${resultMap.AMARANTH_STATUS}";
var isReadOnly = (proposalStatus == "approvalComplete" || proposalStatus == "approvalRequest"
|| amaranthStatus == "complete" || amaranthStatus == "inProcess");
$(document).ready(function(){
// 결재완료/결재중이면 수정 불가 처리
if(isReadOnly){
@@ -430,6 +429,7 @@ $(document).ready(function(){
changeYear: true
});
}
});
// 숫자 포맷팅
@@ -452,12 +452,14 @@ function fn_save(){
var remark = $(this).find(".part-remark").val();
var deliveryDate = $(this).find(".part-delivery-date").val();
var unit = $(this).find(".part-unit").val();
var currency = $(this).find(".part-currency").val();
partList.push({
PART_OBJID: String(partObjId),
REMARK: remark,
DELIVERY_REQUEST_DATE: deliveryDate,
UNIT: unit
UNIT: unit,
CURRENCY: currency
});
});
@@ -827,6 +829,7 @@ function fn_save(){
<th style="width:110px;">품 명</th>
<th style="width:80px;">규 격</th>
<th style="width:80px;">업 체 명</th>
<th style="width:50px;">환 종</th>
<th style="width:90px;">입고요청일</th>
<th style="width:50px;">수량</th>
<th style="width:45px;">단위</th>
@@ -848,6 +851,15 @@ function fn_save(){
<td class="text-left">${item.DISPLAY_PART_NAME}</td>
<td class="text-left">${item.DISPLAY_SPEC}</td>
<td class="text-left">${item.VENDOR_NAME}</td>
<td class="text-center">
<select name="CURRENCY_${item.OBJID}" class="part-currency no-print-border" style="width:100%; box-sizing:border-box;">
<option value="">선택</option>
${code_map.currency_list}
</select>
<script>
$(function(){ $("select[name='CURRENCY_${item.OBJID}']").val("${item.CURRENCY}"); });
</script>
</td>
<td class="text-center">
<input type="text" name="DELIVERY_DATE_${item.OBJID}" class="part-delivery-date date_icon no-print-border" value="${item.DELIVERY_REQUEST_DATE_TITLE}" style="width:100%; box-sizing:border-box;" autocomplete="off"/>
</td>
@@ -868,7 +880,7 @@ function fn_save(){
</c:when>
<c:otherwise>
<tr>
<td colspan="12" style="height:100px;">등록된 품목이 없습니다.</td>
<td colspan="13" style="height:100px;">등록된 품목이 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
@@ -888,6 +900,7 @@ function fn_save(){
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</c:forEach>
</c:if>

View File

@@ -291,6 +291,15 @@ function fn_initGrid() {
field: 'VENDOR_NAME'
});
// 환종
columns.push({
headerHozAlign: 'center',
hozAlign: 'center',
width: 70,
title: '환종',
field: 'CURRENCY_NAME'
});
// 단가 (수정가능 - 클릭 시 전체 선택)
columns.push({
headerHozAlign: 'center',

View File

@@ -949,8 +949,10 @@ public class PurchaseOrderController {
if("".equals(unit)) unit = CommonUtils.checkNull(partRow.get("unit"));
detailRow.put("UNIT", "".equals(unit) ? "0001400" : unit);
// 환종: 기본 USD
detailRow.put("CURRENCY", "USD");
// 환종: MBOM에서 넘어온 값 사용, 없으면 달러(0001534)
String currency = CommonUtils.checkNull(partRow.get("CURRENCY"));
if("".equals(currency)) currency = CommonUtils.checkNull(partRow.get("currency"));
detailRow.put("CURRENCY", "".equals(currency) ? "0001534" : currency);
Object priceObj = partRow.get("UNIT_PRICE");
if(priceObj == null) priceObj = partRow.get("unit_price");
@@ -973,6 +975,14 @@ public class PurchaseOrderController {
info = purchaseOrderService.getPurchaseOrderMasterInfo(request, paramMap);
paramMap.put("MULTI_MASTER_OBJID", objId);
detailList = commonService.selectList("purchaseOrder.getPURCHASE_ORDER_PART", request, paramMap);
for(int i = 0; i < detailList.size(); i++){
Map row = (Map) detailList.get(i);
String currency = CommonUtils.checkNull(row.get("CURRENCY"));
String fallbackCurrency = CommonUtils.checkNull(row.get("FALLBACK_CURRENCY"));
if("".equals(currency) && !"".equals(fallbackCurrency)){
row.put("CURRENCY", fallbackCurrency);
}
}
}
code_map.put("partner_cd", commonService.bizMakeOptionList("", (String)info.get("PARTNER_OBJID"),"common.getClientMngSupplySelect"));

View File

@@ -2359,7 +2359,14 @@
<select id="getPURCHASE_ORDER_PART" parameterType="map" resultType="map">
SELECT T.*
,(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = T.UNIT) AS UNIT_NAME
,P.PART_NO P_PART_NO
,COALESCE(NULLIF(T.CURRENCY, ''),
(SELECT SRP.CURRENCY FROM SALES_REQUEST_PART SRP
WHERE SRP.SALES_REQUEST_MASTER_OBJID = POM.SALES_REQUEST_OBJID::VARCHAR
AND SRP.PART_OBJID = T.PART_OBJID
AND SRP.CURRENCY IS NOT NULL AND SRP.CURRENCY != ''
LIMIT 1)
) AS FALLBACK_CURRENCY
,P.PART_NO P_PART_NO
,POM.BOM_REPORT_OBJID
,POM.PURCHASE_ORDER_NO
,(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::varchar = POM.PARTNER_OBJID) AS PARTNER_NAME
@@ -2367,7 +2374,7 @@
INNER JOIN PURCHASE_ORDER_MASTER POM
ON POM.OBJID = T.PURCHASE_ORDER_MASTER_OBJID
LEFT OUTER JOIN PART_MNG P
ON T.PART_OBJID = P.OBJID::VARCHAR
ON T.PART_OBJID = P.OBJID::VARCHAR
WHERE T.PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
ORDER BY P.PART_NO
</select>
@@ -3361,6 +3368,11 @@ SELECT POM.OBJID
FROM PURCHASE_ORDER_PART POP
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
) AS PART_NAME
,(SELECT CC.CODE_NAME FROM COMM_CODE CC
WHERE CC.CODE_ID = (SELECT POP.CURRENCY FROM PURCHASE_ORDER_PART POP
WHERE POP.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
AND POP.CURRENCY IS NOT NULL AND POP.CURRENCY != '' LIMIT 1)
) AS CURRENCY_NAME
FROM PURCHASE_ORDER_MASTER AS POM
LEFT OUTER JOIN(
SELECT B.OBJID AS ROUTE_OBJID
@@ -4435,6 +4447,11 @@ SELECT POM.OBJID
,(SELECT user_name(RECEIVER_ID) FROM ARRIVAL_PLAN AP WHERE AP.parent_objid = POM.OBJID ORDER BY AP.RECEIPT_DATE desc LIMIT 1) AS CUR_RECEIVER_NAME
,(SELECT COUNT(1) FROM ATTACH_FILE_INFO AF WHERE AF.TARGET_OBJID = POM.OBJID AND AF.DOC_TYPE = 'INSPECTION_FILE' AND UPPER(AF.STATUS) = 'ACTIVE') AS INSPECTION_FILE_CNT
,POM.PURCHASE_CLOSE_DATE
,(SELECT CC.CODE_NAME FROM COMM_CODE CC
WHERE CC.CODE_ID = (SELECT POP2.CURRENCY FROM PURCHASE_ORDER_PART POP2
WHERE POP2.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
AND POP2.CURRENCY IS NOT NULL AND POP2.CURRENCY != '' LIMIT 1)
) AS CURRENCY_NAME
<!-- ,A.APPR_STATUS_NAME -->
FROM PURCHASE_ORDER_MASTER AS POM
<!-- LEFT OUTER JOIN(
@@ -6318,6 +6335,10 @@ FROM(
<!-- 구매담당자 -->
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_NAME
<!-- 환종 -->
,(SELECT CC.CODE_NAME FROM COMM_CODE CC
WHERE CC.CODE_ID = POP.CURRENCY) AS CURRENCY_NAME
<!-- 발주수량 -->
,COALESCE(POP.ORDER_QTY::NUMERIC, 0) AS ORDER_QTY
@@ -6539,6 +6560,10 @@ FROM(
<!-- 구매담당자 -->
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = POM.WRITER) AS WRITER_NAME
<!-- 환종 -->
,(SELECT CC.CODE_NAME FROM COMM_CODE CC
WHERE CC.CODE_ID = POP.CURRENCY) AS CURRENCY_NAME
<!-- 입고일 -->
,AP.RECEIPT_DATE

View File

@@ -4036,6 +4036,7 @@ ORDER BY V.PATH2
COALESCE(MIN(MD.RAW_MATERIAL_SIZE), '') AS SIZE,
MIN(MD.UNIT) AS UNIT,
COALESCE(MIN(MD.USE_YN), 'Y') AS USE_YN,
MIN(MD.CURRENCY) AS CURRENCY,
'MBOM' AS DATA_SOURCE,
'MATERIAL' AS PROPOSAL_TYPE
FROM
@@ -4078,6 +4079,7 @@ ORDER BY V.PATH2
SUM(COALESCE(MD.PRODUCTION_QTY, 0)) AS PRODUCTION_QTY,
MIN(MD.UNIT) AS UNIT,
COALESCE(MIN(MD.USE_YN), 'Y') AS USE_YN,
MIN(MD.CURRENCY) AS CURRENCY,
'MBOM' AS DATA_SOURCE,
'PROCESSING' AS PROPOSAL_TYPE
FROM
@@ -4349,6 +4351,7 @@ ORDER BY V.PATH2
PRODUCTION_QTY,
USE_YN,
MATERIAL_YN,
CURRENCY,
PROPOSAL_DATE,
WRITER,
REGDATE
@@ -4366,6 +4369,7 @@ ORDER BY V.PATH2
#{PRODUCTION_QTY},
#{USE_YN},
#{MATERIAL_YN},
#{CURRENCY},
NOW(),
#{WRITER},
NOW()
@@ -4389,6 +4393,7 @@ ORDER BY V.PATH2
PRODUCTION_QTY,
USE_YN,
MATERIAL_YN,
CURRENCY,
PROPOSAL_DATE,
WRITER,
REGDATE
@@ -4406,6 +4411,7 @@ ORDER BY V.PATH2
#{PRODUCTION_QTY},
#{USE_YN},
#{MATERIAL_YN},
#{CURRENCY},
NOW(),
#{WRITER},
NOW()
@@ -5072,7 +5078,43 @@ ORDER BY V.PATH2
/* 품명: 소재있으면 소재품명(현재 PM), 없으면 부품명(현재 PM) */
PM.PART_NAME AS DISPLAY_PART_NAME,
/* 규격: 품명의 규격 */
PM.SPEC AS DISPLAY_SPEC
PM.SPEC AS DISPLAY_SPEC,
/* 환종 코드값: SRP에 저장된 값 우선, 없으면 MBOM에서 조회 */
COALESCE(
NULLIF(SRP.CURRENCY, ''),
CASE WHEN COALESCE(SRP.MATERIAL_YN, 'N') = 'Y' AND SRM.MBOM_HEADER_OBJID IS NOT NULL THEN
(SELECT MD.CURRENCY FROM MBOM_DETAIL MD
WHERE MD.RAW_MATERIAL_PART_NO = PM.PART_NO
AND MD.MBOM_HEADER_OBJID::VARCHAR = SRM.MBOM_HEADER_OBJID::VARCHAR
LIMIT 1)
WHEN SRM.MBOM_HEADER_OBJID IS NOT NULL THEN
(SELECT MD.CURRENCY FROM MBOM_DETAIL MD
WHERE MD.PART_OBJID::VARCHAR = SRP.PART_OBJID::VARCHAR
AND MD.MBOM_HEADER_OBJID::VARCHAR = SRM.MBOM_HEADER_OBJID::VARCHAR
LIMIT 1)
ELSE NULL
END
) AS CURRENCY,
/* 환종명 */
COALESCE(
(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID =
COALESCE(
NULLIF(SRP.CURRENCY, ''),
CASE WHEN COALESCE(SRP.MATERIAL_YN, 'N') = 'Y' AND SRM.MBOM_HEADER_OBJID IS NOT NULL THEN
(SELECT MD.CURRENCY FROM MBOM_DETAIL MD
WHERE MD.RAW_MATERIAL_PART_NO = PM.PART_NO
AND MD.MBOM_HEADER_OBJID::VARCHAR = SRM.MBOM_HEADER_OBJID::VARCHAR
LIMIT 1)
WHEN SRM.MBOM_HEADER_OBJID IS NOT NULL THEN
(SELECT MD.CURRENCY FROM MBOM_DETAIL MD
WHERE MD.PART_OBJID::VARCHAR = SRP.PART_OBJID::VARCHAR
AND MD.MBOM_HEADER_OBJID::VARCHAR = SRM.MBOM_HEADER_OBJID::VARCHAR
LIMIT 1)
ELSE NULL
END
)
), ''
) AS CURRENCY_NAME
FROM
SALES_REQUEST_PART SRP
LEFT JOIN PART_MNG PM ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR
@@ -5102,7 +5144,8 @@ ORDER BY V.PATH2
UPDATE SALES_REQUEST_PART SET
DELIVERY_REQUEST_DATE = CASE WHEN #{DELIVERY_REQUEST_DATE} IS NOT NULL AND #{DELIVERY_REQUEST_DATE} != '' THEN #{DELIVERY_REQUEST_DATE} ELSE NULL END,
UNIT = #{UNIT},
REMARK = #{REMARK}
REMARK = #{REMARK},
CURRENCY = #{CURRENCY}
WHERE OBJID = #{PART_OBJID}
</update>
@@ -5366,9 +5409,20 @@ ORDER BY V.PATH2
-- 마스터 정보
QRM.VENDOR_TYPE,
QRM.VENDOR_OBJID,
(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = QRM.VENDOR_OBJID) AS VENDOR_NAME
(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = QRM.VENDOR_OBJID) AS VENDOR_NAME,
/* 환종: MBOM에서 환종 코드명 조회 */
COALESCE(
(SELECT CC.CODE_NAME FROM MBOM_DETAIL MD
JOIN COMM_CODE CC ON CC.CODE_ID = MD.CURRENCY
WHERE MD.MBOM_HEADER_OBJID::VARCHAR = SRM.MBOM_HEADER_OBJID::VARCHAR
AND (MD.PART_OBJID::VARCHAR = QRD.PART_OBJID::VARCHAR
OR MD.RAW_MATERIAL_PART_NO = QRD.PART_NO)
AND MD.CURRENCY IS NOT NULL AND MD.CURRENCY != ''
LIMIT 1), ''
) AS CURRENCY_NAME
FROM QUOTATION_REQUEST_DETAIL QRD
LEFT JOIN QUOTATION_REQUEST_MASTER QRM ON QRD.QUOTATION_REQUEST_MASTER_OBJID = QRM.OBJID
LEFT JOIN SALES_REQUEST_MASTER SRM ON QRM.SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR
WHERE QRD.QUOTATION_REQUEST_MASTER_OBJID = #{QUOTATION_REQUEST_MASTER_OBJID}::NUMERIC
ORDER BY QRD.OBJID
</select>

View File

@@ -1430,7 +1430,9 @@ public class SalesMngController {
code_map.put("product_name", commonService.bizMakeOptionList("0000016", (String)resultMap.get("PRODUCT_NAME"), "common.getCodeselect"));
// 단위 코드 목록 (UNIT_CD: 단위)
code_map.put("unit_list", commonService.bizMakeOptionList("0001399", "", "common.getCodeselect"));
// 환종 코드 목록
code_map.put("currency_list", commonService.bizMakeOptionList("0001533", "", "common.getCodeselect"));
} catch (Exception e) {
e.printStackTrace();
}

View File

@@ -2226,6 +2226,7 @@ public class SalesMngService {
partParam.put("PRODUCTION_QTY", part.get("PRODUCTION_QTY"));
partParam.put("USE_YN", CommonUtils.checkNull(part.get("USE_YN")));
partParam.put("MATERIAL_YN", isMaterial ? "Y" : "N");
partParam.put("CURRENCY", CommonUtils.checkNull(part.get("CURRENCY")));
if("PROCESSING".equals(proposalType)) {
sqlSession.insert("salesMng.insertProposalPartFromMBomProcessing", partParam);