프로젝트관리_일정관리업데이트
This commit is contained in:
@@ -3916,14 +3916,31 @@
|
|||||||
ELSE O.PAID_TYPE
|
ELSE O.PAID_TYPE
|
||||||
END
|
END
|
||||||
FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS FREE_OF_CHARGE
|
FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS FREE_OF_CHARGE
|
||||||
,(SELECT SUM(O.QUANTITY) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID) AS CONTRACT_QTY
|
,COALESCE(T.QUANTITY::numeric, 0) AS CONTRACT_QTY
|
||||||
,(SELECT STRING_AGG(O.PART_NO, ', ' ORDER BY O.SEQ) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID AND O.PART_NO IS NOT NULL AND O.PART_NO != '') AS PRODUCT_ITEM_CODE
|
,T.PART_NO AS PRODUCT_ITEM_CODE
|
||||||
,(SELECT STRING_AGG(O.PART_NAME, ', ' ORDER BY O.SEQ) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID AND O.PART_NAME IS NOT NULL AND O.PART_NAME != '') AS PRODUCT_ITEM_NAME
|
,T.PART_NAME AS PRODUCT_ITEM_NAME
|
||||||
,(SELECT STRING_AGG(S.SERIAL_NO, ', ' ORDER BY S.SEQ)
|
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||||
FROM CONTRACT_ITEM AS I
|
,(SELECT
|
||||||
LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE'
|
CASE
|
||||||
WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID
|
WHEN COUNT(*) = 0 THEN ''
|
||||||
AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO
|
WHEN COUNT(*) = 1 THEN MIN(S.SERIAL_NO)
|
||||||
|
ELSE MIN(S.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||||
|
END
|
||||||
|
FROM CONTRACT_ITEM AS I
|
||||||
|
LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE'
|
||||||
|
WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||||
|
AND I.PART_OBJID = T.PART_OBJID
|
||||||
|
AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO
|
||||||
|
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT.DUE_DATE, 없으면 CONTRACT_MGMT.due_date
|
||||||
|
,COALESCE(
|
||||||
|
(SELECT CI.DUE_DATE
|
||||||
|
FROM CONTRACT_ITEM CI
|
||||||
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||||
|
AND CI.PART_OBJID = T.PART_OBJID
|
||||||
|
AND CI.STATUS = 'ACTIVE'),
|
||||||
|
T.DUE_DATE,
|
||||||
|
(SELECT CM.due_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)
|
||||||
|
) AS REQ_DEL_DATE
|
||||||
-- 영업관리_주문서관리_수주등록
|
-- 영업관리_주문서관리_수주등록
|
||||||
,EBOM_STATUS
|
,EBOM_STATUS
|
||||||
,MBOM_STATUS
|
,MBOM_STATUS
|
||||||
|
|||||||
@@ -833,7 +833,7 @@
|
|||||||
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
||||||
T.PART_NO AS PRODUCT_NO,
|
T.PART_NO AS PRODUCT_NO,
|
||||||
T.PART_NAME AS PRODUCT_NAME,
|
T.PART_NAME AS PRODUCT_NAME,
|
||||||
-- S/N: CONTRACT_ITEM_SERIAL에서만 조회 (품목별로 정확하게 매칭)
|
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||||
(SELECT
|
(SELECT
|
||||||
CASE
|
CASE
|
||||||
WHEN COUNT(*) = 0 THEN ''
|
WHEN COUNT(*) = 0 THEN ''
|
||||||
@@ -841,11 +841,10 @@
|
|||||||
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||||
END
|
END
|
||||||
FROM CONTRACT_ITEM CI
|
FROM CONTRACT_ITEM CI
|
||||||
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||||
AND CI.PART_OBJID = T.PART_OBJID
|
AND CI.PART_OBJID = T.PART_OBJID
|
||||||
AND CI.STATUS = 'ACTIVE'
|
AND CI.STATUS = 'ACTIVE'
|
||||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
|
||||||
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
||||||
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
||||||
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
||||||
@@ -979,7 +978,7 @@
|
|||||||
<if test="incoterms != null and incoterms != ''">
|
<if test="incoterms != null and incoterms != ''">
|
||||||
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
||||||
</if>
|
</if>
|
||||||
ORDER BY T.REGDATE DESC
|
ORDER BY SUBSTRING(T.PROJECT_NO, POSITION('-' IN T.PROJECT_NO)+1) DESC, T.REGDATE DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->
|
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->
|
||||||
@@ -1328,16 +1327,19 @@
|
|||||||
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
||||||
T.PART_NO AS PRODUCT_NO,
|
T.PART_NO AS PRODUCT_NO,
|
||||||
T.PART_NAME AS PRODUCT_NAME,
|
T.PART_NAME AS PRODUCT_NAME,
|
||||||
-- S/N 정보 (CONTRACT_ITEM_SERIAL에서만 조회, 품목별로 정확하게 매칭)
|
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||||
(SELECT STRING_AGG(CIS.SERIAL_NO, ',' ORDER BY CIS.SEQ)
|
(SELECT
|
||||||
FROM CONTRACT_ITEM CI
|
CASE
|
||||||
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
WHEN COUNT(*) = 0 THEN ''
|
||||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO)
|
||||||
AND CI.PART_OBJID = T.PART_OBJID
|
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||||
AND CI.STATUS = 'ACTIVE'
|
END
|
||||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
FROM CONTRACT_ITEM CI
|
||||||
AND CIS.SERIAL_NO IS NOT NULL
|
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||||
) AS SERIAL_NO,
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||||
|
AND CI.PART_OBJID = T.PART_OBJID
|
||||||
|
AND CI.STATUS = 'ACTIVE'
|
||||||
|
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
||||||
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
||||||
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
||||||
COALESCE(
|
COALESCE(
|
||||||
|
|||||||
@@ -67,7 +67,8 @@ $(document).ready(function(){
|
|||||||
|
|
||||||
var columns = [
|
var columns = [
|
||||||
{title:'CATEGORY_CD' ,field:'CATEGORY_CD' ,visible:false},
|
{title:'CATEGORY_CD' ,field:'CATEGORY_CD' ,visible:false},
|
||||||
{headerHozAlign : 'center', hozAlign : 'left', width : '100', title : '프로젝트번호', field : 'PROJECT_NO' ,frozen:true,
|
{headerHozAlign : 'center', hozAlign : 'left', width : '140', title : '프로젝트번호', field : 'PROJECT_NO' ,frozen:true,
|
||||||
|
sorter:"string",
|
||||||
formatter:fnc_createGridAnchorTag,
|
formatter:fnc_createGridAnchorTag,
|
||||||
cellClick:function(e, cell){
|
cellClick:function(e, cell){
|
||||||
var objid = fnc_checkNull(cell.getData().OBJID);
|
var objid = fnc_checkNull(cell.getData().OBJID);
|
||||||
@@ -77,54 +78,54 @@ var columns = [
|
|||||||
|
|
||||||
{title:"프로젝트정보", headerHozAlign:'center', //고객정보
|
{title:"프로젝트정보", headerHozAlign:'center', //고객정보
|
||||||
columns:[
|
columns:[
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '주문유형', field : 'CATEGORY_NAME' },
|
{headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '주문유형', field : 'CATEGORY_NAME', sorter:"string" },
|
||||||
{headerHozAlign : 'center', hozAlign : 'left', width : '90', title : '제품구분', field : 'PRODUCT_NAME' },
|
{headerHozAlign : 'center', hozAlign : 'left', width : '90', title : '제품구분', field : 'PRODUCT_NAME', sorter:"string" },
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '국내/해외', field : 'AREA_NAME' },
|
{headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '국내/해외', field : 'AREA_NAME', sorter:"string" },
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '접수일', field : 'REG_DATE' },
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '접수일', field : 'REG_DATE', sorter:"date", sorterParams:{format:"YYYY-MM-DD"} },
|
||||||
{headerHozAlign : 'center', hozAlign : 'left', width : '120', title : '고객사', field : 'CUSTOMER_NAME' },
|
{headerHozAlign : 'center', hozAlign : 'left', width : '120', title : '고객사', field : 'CUSTOMER_NAME', sorter:"string" },
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '유/무상', field : 'FREE_OF_CHARGE'},
|
{headerHozAlign : 'center', hozAlign : 'center', width : '80', title : '유/무상', field : 'FREE_OF_CHARGE', sorter:"string"},
|
||||||
{headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '품번', field : 'PRODUCT_ITEM_CODE' },
|
{headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '품번', field : 'PRODUCT_ITEM_CODE', sorter:"string" },
|
||||||
{headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '품명', field : 'PRODUCT_ITEM_NAME' },
|
{headerHozAlign : 'center', hozAlign : 'left', width : '150', title : '품명', field : 'PRODUCT_ITEM_NAME', sorter:"string" },
|
||||||
{headerHozAlign : 'center', hozAlign : 'left', width : '150', title : 'S/N', field : 'SERIAL_NO' },
|
{headerHozAlign : 'center', hozAlign : 'left', width : '150', title : 'S/N', field : 'SERIAL_NO', sorter:"string" },
|
||||||
{headerHozAlign : 'center', hozAlign : 'right', width : '90', title : '수주수량', field : 'CONTRACT_QTY' },
|
{headerHozAlign : 'center', hozAlign : 'right', width : '90', title : '수주수량', field : 'CONTRACT_QTY', sorter:"number" },
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '요청납기', field : 'REQ_DEL_DATE' }
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '요청납기', field : 'REQ_DEL_DATE', sorter:"date", sorterParams:{format:"YYYY-MM-DD"} }
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title:'설계', headerHozAlign:'center',
|
title:'설계', headerHozAlign:'center',
|
||||||
columns:[
|
columns:[
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'E-BOM', field : 'EBOM_STATUS'}
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'E-BOM', field : 'EBOM_STATUS', sorter:"string"}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title:'생산관리', headerHozAlign:'center',
|
title:'생산관리', headerHozAlign:'center',
|
||||||
columns:[
|
columns:[
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'M-BOM', field : 'MBOM_STATUS'}
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : 'M-BOM', field : 'MBOM_STATUS', sorter:"string"}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title:'구매', headerHozAlign:'center',
|
title:'구매', headerHozAlign:'center',
|
||||||
columns:[
|
columns:[
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '발주일', field : 'ORDER_DATE'},
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '발주일', field : 'ORDER_DATE', sorter:"date", sorterParams:{format:"YYYY-MM-DD"}},
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '입고율', field : 'RECEIVING_RATE'}
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '입고율', field : 'RECEIVING_RATE', sorter:"number"}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title:'생산', headerHozAlign:'center',
|
title:'생산', headerHozAlign:'center',
|
||||||
columns:[
|
columns:[
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '제조1,2팀', field : 'PRODUCTION_TEAM_12'},
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '제조1,2팀', field : 'PRODUCTION_TEAM_12', sorter:"string"},
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '제조3팀', field : 'PRODUCTION_TEAM_3'}
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '제조3팀', field : 'PRODUCTION_TEAM_3', sorter:"string"}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title:'출하', headerHozAlign:'center',
|
title:'출하', headerHozAlign:'center',
|
||||||
columns:[
|
columns:[
|
||||||
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '출하일', field : 'SHIPMENT_DATE'}
|
{headerHozAlign : 'center', hozAlign : 'center', width : '90', title : '출하일', field : 'SHIPMENT_DATE', sorter:"date", sorterParams:{format:"YYYY-MM-DD"}}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -3916,14 +3916,31 @@
|
|||||||
ELSE O.PAID_TYPE
|
ELSE O.PAID_TYPE
|
||||||
END
|
END
|
||||||
FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS FREE_OF_CHARGE
|
FROM CONTRACT_MGMT AS O WHERE O.OBJID = T.CONTRACT_OBJID) AS FREE_OF_CHARGE
|
||||||
,(SELECT SUM(O.QUANTITY) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID) AS CONTRACT_QTY
|
,COALESCE(T.QUANTITY::numeric, 0) AS CONTRACT_QTY
|
||||||
,(SELECT STRING_AGG(O.PART_NO, ', ' ORDER BY O.SEQ) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID AND O.PART_NO IS NOT NULL AND O.PART_NO != '') AS PRODUCT_ITEM_CODE
|
,T.PART_NO AS PRODUCT_ITEM_CODE
|
||||||
,(SELECT STRING_AGG(O.PART_NAME, ', ' ORDER BY O.SEQ) FROM CONTRACT_ITEM AS O WHERE O.CONTRACT_OBJID = T.CONTRACT_OBJID AND O.PART_NAME IS NOT NULL AND O.PART_NAME != '') AS PRODUCT_ITEM_NAME
|
,T.PART_NAME AS PRODUCT_ITEM_NAME
|
||||||
,(SELECT STRING_AGG(S.SERIAL_NO, ', ' ORDER BY S.SEQ)
|
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||||
FROM CONTRACT_ITEM AS I
|
,(SELECT
|
||||||
LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE'
|
CASE
|
||||||
WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID
|
WHEN COUNT(*) = 0 THEN ''
|
||||||
AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO
|
WHEN COUNT(*) = 1 THEN MIN(S.SERIAL_NO)
|
||||||
|
ELSE MIN(S.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||||
|
END
|
||||||
|
FROM CONTRACT_ITEM AS I
|
||||||
|
LEFT JOIN CONTRACT_ITEM_SERIAL AS S ON S.ITEM_OBJID = I.OBJID AND S.STATUS = 'ACTIVE'
|
||||||
|
WHERE I.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||||
|
AND I.PART_OBJID = T.PART_OBJID
|
||||||
|
AND S.SERIAL_NO IS NOT NULL) AS SERIAL_NO
|
||||||
|
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT.DUE_DATE, 없으면 CONTRACT_MGMT.due_date
|
||||||
|
,COALESCE(
|
||||||
|
(SELECT CI.DUE_DATE
|
||||||
|
FROM CONTRACT_ITEM CI
|
||||||
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||||
|
AND CI.PART_OBJID = T.PART_OBJID
|
||||||
|
AND CI.STATUS = 'ACTIVE'),
|
||||||
|
T.DUE_DATE,
|
||||||
|
(SELECT CM.due_date FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID)
|
||||||
|
) AS REQ_DEL_DATE
|
||||||
-- 영업관리_주문서관리_수주등록
|
-- 영업관리_주문서관리_수주등록
|
||||||
,EBOM_STATUS
|
,EBOM_STATUS
|
||||||
,MBOM_STATUS
|
,MBOM_STATUS
|
||||||
|
|||||||
@@ -833,7 +833,7 @@
|
|||||||
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
||||||
T.PART_NO AS PRODUCT_NO,
|
T.PART_NO AS PRODUCT_NO,
|
||||||
T.PART_NAME AS PRODUCT_NAME,
|
T.PART_NAME AS PRODUCT_NAME,
|
||||||
-- S/N: CONTRACT_ITEM_SERIAL에서만 조회 (품목별로 정확하게 매칭)
|
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||||
(SELECT
|
(SELECT
|
||||||
CASE
|
CASE
|
||||||
WHEN COUNT(*) = 0 THEN ''
|
WHEN COUNT(*) = 0 THEN ''
|
||||||
@@ -841,11 +841,10 @@
|
|||||||
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||||
END
|
END
|
||||||
FROM CONTRACT_ITEM CI
|
FROM CONTRACT_ITEM CI
|
||||||
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||||
AND CI.PART_OBJID = T.PART_OBJID
|
AND CI.PART_OBJID = T.PART_OBJID
|
||||||
AND CI.STATUS = 'ACTIVE'
|
AND CI.STATUS = 'ACTIVE'
|
||||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
|
||||||
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
||||||
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
||||||
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
||||||
@@ -979,7 +978,7 @@
|
|||||||
<if test="incoterms != null and incoterms != ''">
|
<if test="incoterms != null and incoterms != ''">
|
||||||
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
||||||
</if>
|
</if>
|
||||||
ORDER BY T.REGDATE DESC
|
ORDER BY SUBSTRING(T.PROJECT_NO, POSITION('-' IN T.PROJECT_NO)+1) DESC, T.REGDATE DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->
|
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->
|
||||||
@@ -1328,16 +1327,19 @@
|
|||||||
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
||||||
T.PART_NO AS PRODUCT_NO,
|
T.PART_NO AS PRODUCT_NO,
|
||||||
T.PART_NAME AS PRODUCT_NAME,
|
T.PART_NAME AS PRODUCT_NAME,
|
||||||
-- S/N 정보 (CONTRACT_ITEM_SERIAL에서만 조회, 품목별로 정확하게 매칭)
|
-- S/N: 해당 품목의 시리얼 번호 (여러 개일 경우 "S/N 외 N건" 형식)
|
||||||
(SELECT STRING_AGG(CIS.SERIAL_NO, ',' ORDER BY CIS.SEQ)
|
(SELECT
|
||||||
FROM CONTRACT_ITEM CI
|
CASE
|
||||||
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
WHEN COUNT(*) = 0 THEN ''
|
||||||
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO)
|
||||||
AND CI.PART_OBJID = T.PART_OBJID
|
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
||||||
AND CI.STATUS = 'ACTIVE'
|
END
|
||||||
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
FROM CONTRACT_ITEM CI
|
||||||
AND CIS.SERIAL_NO IS NOT NULL
|
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE'
|
||||||
) AS SERIAL_NO,
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
||||||
|
AND CI.PART_OBJID = T.PART_OBJID
|
||||||
|
AND CI.STATUS = 'ACTIVE'
|
||||||
|
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
|
||||||
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
||||||
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
|
||||||
COALESCE(
|
COALESCE(
|
||||||
|
|||||||
Reference in New Issue
Block a user