|
|
|
|
@@ -812,178 +812,328 @@
|
|
|
|
|
,editEmpNo = #{cretEmpNo} /* 수정자 */
|
|
|
|
|
</update>
|
|
|
|
|
|
|
|
|
|
<!-- 매출관리 그리드 목록 (SW 테이블 사용 안함) -->
|
|
|
|
|
<!-- 매출관리 그리드 목록 - project_mgmt 테이블 기반 조회 (S/N, 유무상 포함) -->
|
|
|
|
|
<select id="getSalesMgmtGridList" parameterType="map" resultType="map">
|
|
|
|
|
/* salesNcollectMgmt.getSalesMgmtGridList - VIEW 기반 조회 (원본 + 분할출하 통합) */
|
|
|
|
|
/* salesNcollectMgmt.getSalesMgmtGridList - project_mgmt 테이블 기반 조회 (S/N, 유무상 포함) */
|
|
|
|
|
SELECT
|
|
|
|
|
PROJECT_NO,
|
|
|
|
|
ORDER_TYPE,
|
|
|
|
|
PRODUCT_TYPE,
|
|
|
|
|
NATION,
|
|
|
|
|
RECEIPT_DATE,
|
|
|
|
|
CUSTOMER,
|
|
|
|
|
PAYMENT_TYPE,
|
|
|
|
|
PRODUCT_NO,
|
|
|
|
|
PRODUCT_NAME,
|
|
|
|
|
SERIAL_NO,
|
|
|
|
|
COALESCE(ORDER_QUANTITY, 0) AS ORDER_QUANTITY,
|
|
|
|
|
REQUEST_DATE,
|
|
|
|
|
CUSTOMER_REQUEST,
|
|
|
|
|
ORDER_STATUS,
|
|
|
|
|
PO_NO,
|
|
|
|
|
ORDER_DATE,
|
|
|
|
|
ORDER_ATTACH,
|
|
|
|
|
PRODUCTION_STATUS,
|
|
|
|
|
SHIPPING_ORDER_STATUS,
|
|
|
|
|
COALESCE(SALES_QUANTITY, 0) AS SALES_QUANTITY,
|
|
|
|
|
COALESCE(SALES_UNIT_PRICE, 0) AS SALES_UNIT_PRICE,
|
|
|
|
|
COALESCE(SALES_SUPPLY_PRICE, 0) AS SALES_SUPPLY_PRICE,
|
|
|
|
|
COALESCE(SALES_VAT, 0) AS SALES_VAT,
|
|
|
|
|
COALESCE(SALES_TOTAL_AMOUNT, 0) AS SALES_TOTAL_AMOUNT,
|
|
|
|
|
COALESCE(SALES_TOTAL_AMOUNT_KRW, 0) AS SALES_TOTAL_AMOUNT_KRW,
|
|
|
|
|
SALES_CURRENCY,
|
|
|
|
|
COALESCE(SALES_EXCHANGE_RATE, 0) AS SALES_EXCHANGE_RATE,
|
|
|
|
|
SHIPPING_DATE,
|
|
|
|
|
SHIPPING_METHOD,
|
|
|
|
|
MANAGER,
|
|
|
|
|
INCOTERMS,
|
|
|
|
|
SALES_STATUS,
|
|
|
|
|
SALE_NO,
|
|
|
|
|
RECORD_TYPE,
|
|
|
|
|
SPLIT_LOG_ID
|
|
|
|
|
FROM v_sales_mgmt_with_splits
|
|
|
|
|
T.PROJECT_NO,
|
|
|
|
|
CODE_NAME(T.CATEGORY_CD) AS ORDER_TYPE,
|
|
|
|
|
CODE_NAME(T.PRODUCT) AS PRODUCT_TYPE,
|
|
|
|
|
CODE_NAME(T.AREA_CD) AS NATION,
|
|
|
|
|
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS RECEIPT_DATE,
|
|
|
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER,
|
|
|
|
|
(SELECT
|
|
|
|
|
CASE
|
|
|
|
|
WHEN CM.PAID_TYPE = 'paid' THEN '유상'
|
|
|
|
|
WHEN CM.PAID_TYPE = 'free' THEN '무상'
|
|
|
|
|
ELSE CM.PAID_TYPE
|
|
|
|
|
END
|
|
|
|
|
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
|
|
|
|
T.PART_NO AS PRODUCT_NO,
|
|
|
|
|
T.PART_NAME AS PRODUCT_NAME,
|
|
|
|
|
COALESCE(
|
|
|
|
|
(SELECT
|
|
|
|
|
CASE
|
|
|
|
|
WHEN COUNT(*) = 0 THEN ''
|
|
|
|
|
WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO)
|
|
|
|
|
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
|
|
|
|
END
|
|
|
|
|
FROM CONTRACT_ITEM CI
|
|
|
|
|
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
|
|
|
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
|
|
|
|
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
|
|
|
|
), ''
|
|
|
|
|
) AS SERIAL_NO,
|
|
|
|
|
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
|
|
|
|
T.DUE_DATE AS REQUEST_DATE,
|
|
|
|
|
T.CUSTOMER_PROJECT_NAME AS CUSTOMER_REQUEST,
|
|
|
|
|
CODE_NAME(T.CONTRACT_RESULT) AS ORDER_STATUS,
|
|
|
|
|
T.PO_NO,
|
|
|
|
|
T.CONTRACT_DATE AS ORDER_DATE,
|
|
|
|
|
CASE WHEN EXISTS(
|
|
|
|
|
SELECT 1 FROM ATTACH_FILE_INFO
|
|
|
|
|
WHERE TARGET_OBJID = T.OBJID::VARCHAR
|
|
|
|
|
AND DOC_TYPE='ORDER_DOC'
|
|
|
|
|
AND UPPER(STATUS) = 'ACTIVE'
|
|
|
|
|
) THEN 'Y' ELSE 'N' END AS ORDER_ATTACH,
|
|
|
|
|
(SELECT CM.PRODUCTION_STATUS FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PRODUCTION_STATUS,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SHIPPING_STATUS
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), '') AS SHIPPING_ORDER_STATUS,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SPLIT_QUANTITY
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_QUANTITY,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_UNIT_PRICE
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_UNIT_PRICE,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_SUPPLY_PRICE
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_SUPPLY_PRICE,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_VAT
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_VAT,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_TOTAL_AMOUNT
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_TOTAL_AMOUNT,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_TOTAL_AMOUNT
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_TOTAL_AMOUNT_KRW,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_CURRENCY
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), T.CONTRACT_CURRENCY) AS SALES_CURRENCY,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_EXCHANGE_RATE
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), T.CONTRACT_PRICE_CURRENCY::numeric, 0) AS SALES_EXCHANGE_RATE,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT TO_CHAR(SL.SHIPPING_DATE, 'YYYY-MM-DD')
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), '') AS SHIPPING_DATE,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SHIPPING_METHOD
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), '') AS SHIPPING_METHOD,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT U.USER_NAME
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
LEFT JOIN USER_INFO U ON U.USER_ID = SL.MANAGER_USER_ID
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T.PM_USER_ID)) AS MANAGER,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.INCOTERMS
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
|
|
|
|
|
), '') AS INCOTERMS,
|
|
|
|
|
'N' AS SALES_STATUS,
|
|
|
|
|
T.OBJID::VARCHAR AS SALE_NO,
|
|
|
|
|
'ORIGINAL' AS RECORD_TYPE,
|
|
|
|
|
'' AS SPLIT_LOG_ID
|
|
|
|
|
FROM PROJECT_MGMT AS T
|
|
|
|
|
WHERE 1 = 1
|
|
|
|
|
<if test="orderType != null and orderType != ''">
|
|
|
|
|
AND CATEGORY_CD = #{orderType}
|
|
|
|
|
AND T.CATEGORY_CD = #{orderType}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="productType != null and productType != ''">
|
|
|
|
|
AND PRODUCT_TYPE = #{productType}
|
|
|
|
|
AND T.PRODUCT = #{productType}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="nation != null and nation != ''">
|
|
|
|
|
AND AREA_CD = #{nation}
|
|
|
|
|
AND T.AREA_CD = #{nation}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="customer != null and customer != ''">
|
|
|
|
|
AND CUSTOMER LIKE CONCAT('%', #{customer}, '%')
|
|
|
|
|
AND EXISTS (
|
|
|
|
|
SELECT 1 FROM SUPPLY_MNG
|
|
|
|
|
WHERE OBJID = T.CUSTOMER_OBJID::NUMERIC
|
|
|
|
|
AND SUPPLY_NAME LIKE CONCAT('%', #{customer}, '%')
|
|
|
|
|
)
|
|
|
|
|
</if>
|
|
|
|
|
<if test="paymentType != null and paymentType != ''">
|
|
|
|
|
AND PAID_TYPE = #{paymentType}
|
|
|
|
|
AND EXISTS (
|
|
|
|
|
SELECT 1 FROM CONTRACT_MGMT CM
|
|
|
|
|
WHERE CM.OBJID = T.CONTRACT_OBJID
|
|
|
|
|
AND (
|
|
|
|
|
(#{paymentType} = 'N' AND CM.PAID_TYPE = 'paid') OR
|
|
|
|
|
(#{paymentType} = 'Y' AND CM.PAID_TYPE = 'free')
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
</if>
|
|
|
|
|
<if test="productNo != null and productNo != ''">
|
|
|
|
|
AND PRODUCT_NO LIKE CONCAT('%', #{productNo}, '%')
|
|
|
|
|
AND T.PART_NO LIKE CONCAT('%', #{productNo}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test="productName != null and productName != ''">
|
|
|
|
|
AND PRODUCT_NAME LIKE CONCAT('%', #{productName}, '%')
|
|
|
|
|
AND T.PART_NAME LIKE CONCAT('%', #{productName}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test="serialNo != null and serialNo != ''">
|
|
|
|
|
AND SERIAL_NO LIKE CONCAT('%', #{serialNo}, '%')
|
|
|
|
|
AND EXISTS (
|
|
|
|
|
SELECT 1 FROM CONTRACT_ITEM CI
|
|
|
|
|
JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
|
|
|
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
|
|
|
|
AND CIS.SERIAL_NO LIKE CONCAT('%', #{serialNo}, '%')
|
|
|
|
|
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
|
|
|
|
)
|
|
|
|
|
</if>
|
|
|
|
|
<if test="orderStatus != null and orderStatus != ''">
|
|
|
|
|
AND STATUS_CD = #{orderStatus}
|
|
|
|
|
AND T.CONTRACT_RESULT = #{orderStatus}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="poNo != null and poNo != ''">
|
|
|
|
|
AND PO_NO LIKE CONCAT('%', #{poNo}, '%')
|
|
|
|
|
AND T.PO_NO LIKE CONCAT('%', #{poNo}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test="requestDateFrom != null and requestDateFrom != ''">
|
|
|
|
|
AND REQUEST_DATE <![CDATA[>=]]> #{requestDateFrom}
|
|
|
|
|
AND T.DUE_DATE <![CDATA[>=]]> #{requestDateFrom}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="requestDateTo != null and requestDateTo != ''">
|
|
|
|
|
AND REQUEST_DATE <![CDATA[<=]]> #{requestDateTo}
|
|
|
|
|
AND T.DUE_DATE <![CDATA[<=]]> #{requestDateTo}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="orderDateFrom != null and orderDateFrom != ''">
|
|
|
|
|
AND ORDER_DATE <![CDATA[>=]]> #{orderDateFrom}
|
|
|
|
|
AND T.CONTRACT_DATE <![CDATA[>=]]> #{orderDateFrom}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="orderDateTo != null and orderDateTo != ''">
|
|
|
|
|
AND ORDER_DATE <![CDATA[<=]]> #{orderDateTo}
|
|
|
|
|
AND T.CONTRACT_DATE <![CDATA[<=]]> #{orderDateTo}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="shippingStatus != null and shippingStatus != ''">
|
|
|
|
|
AND SALES_STATUS = #{shippingStatus}
|
|
|
|
|
/* SALES_STATUS 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
|
|
|
|
AND SHIPPING_DATE <![CDATA[>=]]> #{shippingDateFrom}
|
|
|
|
|
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
<if test="shippingDateTo != null and shippingDateTo != ''">
|
|
|
|
|
AND SHIPPING_DATE <![CDATA[<=]]> #{shippingDateTo}
|
|
|
|
|
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
<if test="shippingMethod != null and shippingMethod != ''">
|
|
|
|
|
AND SHIPPING_METHOD = #{shippingMethod}
|
|
|
|
|
/* SHIPPING_METHOD 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
<if test="manager != null and manager != ''">
|
|
|
|
|
AND PM_USER_ID = #{manager}
|
|
|
|
|
AND T.PM_USER_ID = #{manager}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="incoterms != null and incoterms != ''">
|
|
|
|
|
AND INCOTERMS = #{incoterms}
|
|
|
|
|
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
ORDER BY REGDATE DESC
|
|
|
|
|
ORDER BY T.REGDATE DESC
|
|
|
|
|
LIMIT #{COUNT_PER_PAGE} OFFSET #{PAGE_START}
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<!-- 매출관리 그리드 목록 개수 (VIEW 기반) -->
|
|
|
|
|
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->
|
|
|
|
|
<select id="getSalesMgmtGridListCount" parameterType="map" resultType="map">
|
|
|
|
|
/* salesNcollectMgmt.getSalesMgmtGridListCount - VIEW 기반 */
|
|
|
|
|
/* salesNcollectMgmt.getSalesMgmtGridListCount - project_mgmt 테이블 기반 */
|
|
|
|
|
SELECT
|
|
|
|
|
CEIL(COUNT(1)::float / #{COUNT_PER_PAGE}::float)::numeric::integer AS MAX_PAGE_SIZE,
|
|
|
|
|
COUNT(1)::integer AS TOTAL_CNT
|
|
|
|
|
FROM v_sales_mgmt_with_splits
|
|
|
|
|
FROM PROJECT_MGMT AS T
|
|
|
|
|
WHERE 1 = 1
|
|
|
|
|
<if test="orderType != null and orderType != ''">
|
|
|
|
|
AND CATEGORY_CD = #{orderType}
|
|
|
|
|
AND T.CATEGORY_CD = #{orderType}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="productType != null and productType != ''">
|
|
|
|
|
AND PRODUCT_TYPE = #{productType}
|
|
|
|
|
AND T.PRODUCT = #{productType}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="nation != null and nation != ''">
|
|
|
|
|
AND AREA_CD = #{nation}
|
|
|
|
|
AND T.AREA_CD = #{nation}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="customer != null and customer != ''">
|
|
|
|
|
AND CUSTOMER LIKE CONCAT('%', #{customer}, '%')
|
|
|
|
|
AND EXISTS (
|
|
|
|
|
SELECT 1 FROM SUPPLY_MNG
|
|
|
|
|
WHERE OBJID = T.CUSTOMER_OBJID::NUMERIC
|
|
|
|
|
AND SUPPLY_NAME LIKE CONCAT('%', #{customer}, '%')
|
|
|
|
|
)
|
|
|
|
|
</if>
|
|
|
|
|
<if test="paymentType != null and paymentType != ''">
|
|
|
|
|
AND PAID_TYPE = #{paymentType}
|
|
|
|
|
AND EXISTS (
|
|
|
|
|
SELECT 1 FROM CONTRACT_MGMT CM
|
|
|
|
|
WHERE CM.OBJID = T.CONTRACT_OBJID
|
|
|
|
|
AND (
|
|
|
|
|
(#{paymentType} = 'N' AND CM.PAID_TYPE = 'paid') OR
|
|
|
|
|
(#{paymentType} = 'Y' AND CM.PAID_TYPE = 'free')
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
</if>
|
|
|
|
|
<if test="productNo != null and productNo != ''">
|
|
|
|
|
AND PRODUCT_NO LIKE CONCAT('%', #{productNo}, '%')
|
|
|
|
|
AND T.PART_NO LIKE CONCAT('%', #{productNo}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test="productName != null and productName != ''">
|
|
|
|
|
AND PRODUCT_NAME LIKE CONCAT('%', #{productName}, '%')
|
|
|
|
|
AND T.PART_NAME LIKE CONCAT('%', #{productName}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test="serialNo != null and serialNo != ''">
|
|
|
|
|
AND SERIAL_NO LIKE CONCAT('%', #{serialNo}, '%')
|
|
|
|
|
AND EXISTS (
|
|
|
|
|
SELECT 1 FROM CONTRACT_ITEM CI
|
|
|
|
|
JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
|
|
|
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
|
|
|
|
AND CIS.SERIAL_NO LIKE CONCAT('%', #{serialNo}, '%')
|
|
|
|
|
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
|
|
|
|
)
|
|
|
|
|
</if>
|
|
|
|
|
<if test="orderStatus != null and orderStatus != ''">
|
|
|
|
|
AND STATUS_CD = #{orderStatus}
|
|
|
|
|
AND T.CONTRACT_RESULT = #{orderStatus}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="poNo != null and poNo != ''">
|
|
|
|
|
AND PO_NO LIKE CONCAT('%', #{poNo}, '%')
|
|
|
|
|
AND T.PO_NO LIKE CONCAT('%', #{poNo}, '%')
|
|
|
|
|
</if>
|
|
|
|
|
<if test="requestDateFrom != null and requestDateFrom != ''">
|
|
|
|
|
AND REQUEST_DATE <![CDATA[>=]]> #{requestDateFrom}
|
|
|
|
|
AND T.DUE_DATE <![CDATA[>=]]> #{requestDateFrom}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="requestDateTo != null and requestDateTo != ''">
|
|
|
|
|
AND REQUEST_DATE <![CDATA[<=]]> #{requestDateTo}
|
|
|
|
|
AND T.DUE_DATE <![CDATA[<=]]> #{requestDateTo}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="orderDateFrom != null and orderDateFrom != ''">
|
|
|
|
|
AND ORDER_DATE <![CDATA[>=]]> #{orderDateFrom}
|
|
|
|
|
AND T.CONTRACT_DATE <![CDATA[>=]]> #{orderDateFrom}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="orderDateTo != null and orderDateTo != ''">
|
|
|
|
|
AND ORDER_DATE <![CDATA[<=]]> #{orderDateTo}
|
|
|
|
|
AND T.CONTRACT_DATE <![CDATA[<=]]> #{orderDateTo}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="shippingStatus != null and shippingStatus != ''">
|
|
|
|
|
AND SALES_STATUS = #{shippingStatus}
|
|
|
|
|
/* SALES_STATUS 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
<if test="shippingDateFrom != null and shippingDateFrom != ''">
|
|
|
|
|
AND SHIPPING_DATE <![CDATA[>=]]> #{shippingDateFrom}
|
|
|
|
|
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
<if test="shippingDateTo != null and shippingDateTo != ''">
|
|
|
|
|
AND SHIPPING_DATE <![CDATA[<=]]> #{shippingDateTo}
|
|
|
|
|
/* SHIPPING_DATE 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
<if test="shippingMethod != null and shippingMethod != ''">
|
|
|
|
|
AND SHIPPING_METHOD = #{shippingMethod}
|
|
|
|
|
/* SHIPPING_METHOD 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
<if test="manager != null and manager != ''">
|
|
|
|
|
AND PM_USER_ID = #{manager}
|
|
|
|
|
AND T.PM_USER_ID = #{manager}
|
|
|
|
|
</if>
|
|
|
|
|
<if test="incoterms != null and incoterms != ''">
|
|
|
|
|
AND INCOTERMS = #{incoterms}
|
|
|
|
|
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
|
|
|
|
|
</if>
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
@@ -1139,5 +1289,256 @@
|
|
|
|
|
)
|
|
|
|
|
</insert>
|
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
/**
|
|
|
|
|
* 판매 등록 저장 (shipment_log 테이블 사용)
|
|
|
|
|
* @since 2025.10.22
|
|
|
|
|
* @author johngreen
|
|
|
|
|
* @version 1.0
|
|
|
|
|
**/
|
|
|
|
|
-->
|
|
|
|
|
<insert id="insertSaleRegistration" parameterType="map">
|
|
|
|
|
/* salesNcollectMgmt.insertSaleRegistration - shipment_log에 판매 데이터 저장 */
|
|
|
|
|
INSERT INTO shipment_log (
|
|
|
|
|
target_objid,
|
|
|
|
|
log_type,
|
|
|
|
|
log_message,
|
|
|
|
|
split_quantity,
|
|
|
|
|
shipping_status,
|
|
|
|
|
sales_unit_price,
|
|
|
|
|
sales_supply_price,
|
|
|
|
|
sales_vat,
|
|
|
|
|
sales_total_amount,
|
|
|
|
|
sales_currency,
|
|
|
|
|
sales_exchange_rate,
|
|
|
|
|
serial_no,
|
|
|
|
|
shipping_date,
|
|
|
|
|
shipping_method,
|
|
|
|
|
manager_user_id,
|
|
|
|
|
incoterms,
|
|
|
|
|
is_split_record,
|
|
|
|
|
reg_date,
|
|
|
|
|
reg_user_id
|
|
|
|
|
) VALUES (
|
|
|
|
|
#{orderNo},
|
|
|
|
|
'SALES_REGISTRATION',
|
|
|
|
|
'판매 등록',
|
|
|
|
|
#{salesQuantity}::integer,
|
|
|
|
|
<choose>
|
|
|
|
|
<when test="shippingOrderStatus != null and shippingOrderStatus != ''">
|
|
|
|
|
#{shippingOrderStatus},
|
|
|
|
|
</when>
|
|
|
|
|
<otherwise>
|
|
|
|
|
'',
|
|
|
|
|
</otherwise>
|
|
|
|
|
</choose>
|
|
|
|
|
#{salesUnitPrice}::numeric,
|
|
|
|
|
#{salesSupplyPrice}::numeric,
|
|
|
|
|
#{salesVat}::numeric,
|
|
|
|
|
#{salesTotalAmount}::numeric,
|
|
|
|
|
#{salesCurrency},
|
|
|
|
|
#{salesExchangeRate}::numeric,
|
|
|
|
|
#{serialNo},
|
|
|
|
|
<choose>
|
|
|
|
|
<when test="shippingDate != null and shippingDate != ''">
|
|
|
|
|
TO_DATE(#{shippingDate}, 'YYYY-MM-DD'),
|
|
|
|
|
</when>
|
|
|
|
|
<otherwise>
|
|
|
|
|
NULL,
|
|
|
|
|
</otherwise>
|
|
|
|
|
</choose>
|
|
|
|
|
#{shippingMethod},
|
|
|
|
|
#{manager},
|
|
|
|
|
#{incoterms},
|
|
|
|
|
false,
|
|
|
|
|
NOW(),
|
|
|
|
|
#{cretEmpNo}
|
|
|
|
|
)
|
|
|
|
|
</insert>
|
|
|
|
|
|
|
|
|
|
<!--
|
|
|
|
|
/**
|
|
|
|
|
* 판매 정보 조회 - 판매등록 팝업에서 사용
|
|
|
|
|
* PROJECT_NO 또는 SALE_NO로 조회
|
|
|
|
|
* @since 2025.10.22
|
|
|
|
|
* @author johngreen
|
|
|
|
|
* @version 1.0
|
|
|
|
|
**/
|
|
|
|
|
-->
|
|
|
|
|
<select id="getSaleInfo" parameterType="map" resultType="map">
|
|
|
|
|
/* salesNcollectMgmt.getSaleInfo - 판매등록 팝업용 프로젝트 정보 조회 (리스트와 동일한 구조) */
|
|
|
|
|
SELECT
|
|
|
|
|
T.PROJECT_NO,
|
|
|
|
|
CODE_NAME(T.CATEGORY_CD) AS ORDER_TYPE,
|
|
|
|
|
CODE_NAME(T.PRODUCT) AS PRODUCT_TYPE,
|
|
|
|
|
CODE_NAME(T.AREA_CD) AS NATION,
|
|
|
|
|
TO_CHAR(T.REGDATE, 'YYYY-MM-DD') AS RECEIPT_DATE,
|
|
|
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID = T.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER,
|
|
|
|
|
(SELECT
|
|
|
|
|
CASE
|
|
|
|
|
WHEN CM.PAID_TYPE = 'paid' THEN '유상'
|
|
|
|
|
WHEN CM.PAID_TYPE = 'free' THEN '무상'
|
|
|
|
|
ELSE CM.PAID_TYPE
|
|
|
|
|
END
|
|
|
|
|
FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PAYMENT_TYPE,
|
|
|
|
|
T.PART_NO AS PRODUCT_NO,
|
|
|
|
|
T.PART_NAME AS PRODUCT_NAME,
|
|
|
|
|
-- S/N 정보 (리스트와 동일: "첫번째 S/N 외 N건")
|
|
|
|
|
COALESCE(
|
|
|
|
|
(SELECT
|
|
|
|
|
CASE
|
|
|
|
|
WHEN COUNT(*) = 0 THEN ''
|
|
|
|
|
WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO)
|
|
|
|
|
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
|
|
|
|
|
END
|
|
|
|
|
FROM CONTRACT_ITEM CI
|
|
|
|
|
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
|
|
|
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
|
|
|
|
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
|
|
|
|
), ''
|
|
|
|
|
) AS SERIAL_NO,
|
|
|
|
|
-- S/N 전체 목록 JSON 형식으로
|
|
|
|
|
COALESCE(
|
|
|
|
|
(SELECT
|
|
|
|
|
JSON_AGG(
|
|
|
|
|
JSON_BUILD_OBJECT(
|
|
|
|
|
'id', sn_data.row_num,
|
|
|
|
|
'value', sn_data.serial_no
|
|
|
|
|
)
|
|
|
|
|
)::TEXT
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT
|
|
|
|
|
ROW_NUMBER() OVER (ORDER BY CIS.SERIAL_NO) AS row_num,
|
|
|
|
|
CIS.SERIAL_NO AS serial_no
|
|
|
|
|
FROM CONTRACT_ITEM CI
|
|
|
|
|
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID
|
|
|
|
|
WHERE CI.CONTRACT_OBJID = T.CONTRACT_OBJID
|
|
|
|
|
AND UPPER(CIS.STATUS) = 'ACTIVE'
|
|
|
|
|
AND CIS.SERIAL_NO IS NOT NULL
|
|
|
|
|
) AS sn_data
|
|
|
|
|
), '[]'
|
|
|
|
|
) AS SERIAL_NO_LIST,
|
|
|
|
|
COALESCE(T.QUANTITY::numeric, 0) AS ORDER_QUANTITY,
|
|
|
|
|
T.DUE_DATE AS REQUEST_DATE,
|
|
|
|
|
T.CUSTOMER_PROJECT_NAME AS CUSTOMER_REQUEST,
|
|
|
|
|
CODE_NAME(T.CONTRACT_RESULT) AS ORDER_STATUS,
|
|
|
|
|
T.PO_NO,
|
|
|
|
|
T.CONTRACT_DATE AS ORDER_DATE,
|
|
|
|
|
CASE WHEN EXISTS(
|
|
|
|
|
SELECT 1 FROM ATTACH_FILE_INFO
|
|
|
|
|
WHERE TARGET_OBJID = T.OBJID::VARCHAR
|
|
|
|
|
AND DOC_TYPE='ORDER_DOC'
|
|
|
|
|
AND UPPER(STATUS) = 'ACTIVE'
|
|
|
|
|
) THEN 'Y' ELSE 'N' END AS ORDER_ATTACH,
|
|
|
|
|
(SELECT CM.PRODUCTION_STATUS FROM CONTRACT_MGMT CM WHERE CM.OBJID = T.CONTRACT_OBJID) AS PRODUCTION_STATUS,
|
|
|
|
|
-- 판매 관련 필드들 (shipment_log에서 가져오기)
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SHIPPING_STATUS
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), '') AS SHIPPING_ORDER_STATUS,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SPLIT_QUANTITY
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_QUANTITY,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_UNIT_PRICE
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_UNIT_PRICE,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_SUPPLY_PRICE
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_SUPPLY_PRICE,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_VAT
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_VAT,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_TOTAL_AMOUNT
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_TOTAL_AMOUNT,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_TOTAL_AMOUNT
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), 0) AS SALES_TOTAL_AMOUNT_KRW,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_CURRENCY
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), T.CONTRACT_CURRENCY) AS SALES_CURRENCY,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SALES_EXCHANGE_RATE
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), T.CONTRACT_PRICE_CURRENCY::numeric, 0) AS SALES_EXCHANGE_RATE,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT TO_CHAR(SL.SHIPPING_DATE, 'YYYY-MM-DD')
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), '') AS SHIPPING_DATE,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.SHIPPING_METHOD
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), '') AS SHIPPING_METHOD,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.MANAGER_USER_ID
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), T.PM_USER_ID) AS MANAGER,
|
|
|
|
|
COALESCE((
|
|
|
|
|
SELECT SL.INCOTERMS
|
|
|
|
|
FROM SHIPMENT_LOG SL
|
|
|
|
|
WHERE SL.TARGET_OBJID = T.PROJECT_NO
|
|
|
|
|
AND SL.LOG_TYPE = 'SALES_REGISTRATION'
|
|
|
|
|
ORDER BY SL.REG_DATE DESC
|
|
|
|
|
LIMIT 1
|
|
|
|
|
), '') AS INCOTERMS
|
|
|
|
|
FROM PROJECT_MGMT AS T
|
|
|
|
|
WHERE T.PROJECT_NO = #{orderNo}
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
</mapper>
|
|
|
|
|
|
|
|
|
|
|