2777 lines
78 KiB
XML
2777 lines
78 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE mapper
|
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="salesMng">
|
|
|
|
<!-- Part 관리 기본 조회 -->
|
|
<sql id="partMngBase">
|
|
(
|
|
SELECT
|
|
P.OBJID,
|
|
P.PRODUCT_MGMT_OBJID,
|
|
P.UPG_NO,
|
|
P.PART_NO,
|
|
P.PART_NAME,
|
|
P.UNIT,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.UNIT) AS UNIT_TITLE,
|
|
P.QTY,
|
|
P.SPEC,
|
|
P.MATERIAL,
|
|
P.WEIGHT,
|
|
P.PART_TYPE,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.PART_TYPE) AS PART_TYPE_TITLE,
|
|
P.REMARK,
|
|
P.ES_SPEC,
|
|
P.MS_SPEC,
|
|
P.CHANGE_OPTION,
|
|
P.DESIGN_APPLY_POINT,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CODE_ID = P.DESIGN_APPLY_POINT) AS DESIGN_APPLY_POINT_TITLE,
|
|
P.MANAGEMENT_FLAG,
|
|
P.REVISION,
|
|
P.STATUS,
|
|
P.REG_DATE,
|
|
P.EDIT_DATE,
|
|
P.WRITER,
|
|
P.IS_LAST,
|
|
(SELECT EO_NO FROM EO_MNG AS EO WHERE EO.OBJID::varchar = P.EO) AS EO_NO,
|
|
(SELECT TO_CHAR(REG_DATE,'YYYY-MM-DD') FROM EO_MNG AS EO WHERE EO.OBJID::varchar = P.EO) AS EO_DATE,
|
|
P.EO,
|
|
P.EO_TEMP,
|
|
AF.SAVED_FILE_NAME,
|
|
AF.REAL_FILE_NAME,
|
|
REPLACE(AF.FILE_PATH, '\', '\\') AS FILE_PATH,
|
|
case when CAD.SAVED_FILE_NAME is NOT NULL
|
|
then 1
|
|
else 0 end as CU01_CNT,
|
|
|
|
case when DRAWING.SAVED_FILE_NAME is NOT NULL
|
|
then 1
|
|
else 0 end as CU02_CNT,
|
|
|
|
case when PDF.SAVED_FILE_NAME is NOT NULL
|
|
then 1
|
|
else 0 end as CU03_CNT,
|
|
|
|
case when PDFDRA.SAVED_FILE_NAME is NOT NULL
|
|
then 1
|
|
else 0 end as CU_TOTAL_CNT,
|
|
AF_ECD.SAVED_FILE_NAME AS ECD_SAVED_FILE_NAME,
|
|
AF_ECD.REAL_FILE_NAME AS ECD_REAL_FILE_NAME,
|
|
REPLACE(AF_ECD.FILE_PATH, '\', '\\') AS ECD_FILE_PATH,
|
|
CASE
|
|
WHEN AF_ECD.SAVED_FILE_NAME IS NOT NULL THEN 'Y'
|
|
ELSE 'N'
|
|
END ECD_FLAG
|
|
FROM
|
|
PART_MNG P
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('PART_SHAPE_IMG')
|
|
AND STATUS = 'Active'
|
|
) AF
|
|
ON P.OBJID::NUMERIC = AF.TARGET_OBJID
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('ECD_DOC')
|
|
AND STATUS = 'Active'
|
|
) AF_ECD
|
|
ON P.OBJID::NUMERIC = AF_ECD.TARGET_OBJID
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('3D_CAD')
|
|
AND STATUS = 'Active'
|
|
) CAD
|
|
ON P.OBJID::NUMERIC = CAD.TARGET_OBJID
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('2D_DRAWING_CAD')
|
|
AND STATUS = 'Active'
|
|
) DRAWING
|
|
ON P.OBJID::NUMERIC = DRAWING.TARGET_OBJID
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('2D_PDF_CAD')
|
|
AND STATUS = 'Active'
|
|
) PDF
|
|
ON P.OBJID::NUMERIC = PDF.TARGET_OBJID
|
|
|
|
LEFT OUTER JOIN
|
|
(
|
|
SELECT
|
|
TARGET_OBJID,
|
|
SAVED_FILE_NAME,
|
|
REAL_FILE_NAME,
|
|
FILE_PATH,
|
|
DOC_TYPE
|
|
FROM ATTACH_FILE_INFO
|
|
WHERE 1 = 1
|
|
AND DOC_TYPE IN ('2D_PDF_CAD','2D_DRAWING_CAD')
|
|
AND STATUS = 'Active'
|
|
) PDFDRA
|
|
ON P.OBJID::NUMERIC = PDFDRA.TARGET_OBJID
|
|
)
|
|
</sql>
|
|
|
|
<update id="mergeSalesMngBOM" parameterType="map">
|
|
INSERT INTO SALES_BOM_PART_QTY
|
|
(
|
|
SALES_BOM_OBJID
|
|
,OBJID
|
|
,BOM_REPORT_OBJID
|
|
,PRODUCT_TYPE_CODE
|
|
,PARTNER_OBJID
|
|
,PARTNER_PRICE
|
|
,PARTNER_REMARK
|
|
,REGDATE
|
|
,PART_OBJID
|
|
,SALES_PART_CODE
|
|
,PALETTE_CODE
|
|
,SOURCING_CODE
|
|
,PROCESS1_CODE
|
|
,PROCESS2_CODE
|
|
,PROCESS3_CODE
|
|
,PROCESS4_CODE
|
|
)
|
|
VALUES
|
|
(
|
|
#{SALES_BOM_OBJID}
|
|
,#{OBJID}
|
|
,#{BOM_REPORT_OBJID}
|
|
,#{PRODUCT_TYPE_CODE}
|
|
,#{PARTNER_OBJID}
|
|
,#{PARTNER_PRICE}
|
|
,#{PARTNER_REMARK}
|
|
,NOW()
|
|
,#{PART_OBJID}
|
|
,#{SALES_PART_CODE}
|
|
,#{PALETTE_CODE}
|
|
,#{SOURCING_CODE}
|
|
,#{PROCESS1_CODE}
|
|
,#{PROCESS2_CODE}
|
|
,#{PROCESS3_CODE}
|
|
,#{PROCESS4_CODE}
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
PRODUCT_TYPE_CODE = #{PRODUCT_TYPE_CODE}
|
|
,PARTNER_OBJID = #{PARTNER_OBJID}
|
|
,PARTNER_PRICE = #{PARTNER_PRICE}
|
|
,PARTNER_REMARK = #{PARTNER_REMARK}
|
|
,SALES_PART_CODE = #{SALES_PART_CODE}
|
|
,PALETTE_CODE = #{PALETTE_CODE}
|
|
,SOURCING_CODE = #{SOURCING_CODE}
|
|
,PROCESS1_CODE = #{PROCESS1_CODE}
|
|
,PROCESS2_CODE = #{PROCESS2_CODE}
|
|
,PROCESS3_CODE = #{PROCESS3_CODE}
|
|
,PROCESS4_CODE = #{PROCESS4_CODE}
|
|
</update>
|
|
|
|
<update id="mergeSalesBOMReport" parameterType="map">
|
|
INSERT INTO SALES_BOM_REPORT
|
|
(
|
|
BOM_REPORT_OBJID,
|
|
PRODUCT_MGMT_OBJID,
|
|
PRODUCT_MGMT_SPEC,
|
|
PRODUCT_MGMT_UPG,
|
|
PRODUCT_MGMT_VC,
|
|
WRITER,
|
|
REGDATE,
|
|
STATUS,
|
|
DEPLOY_DATE,
|
|
REV,
|
|
SPEC_NAME,
|
|
NOTE
|
|
)VALUES(
|
|
#{BOM_REPORT_OBJID},
|
|
#{PRODUCT_MGMT_OBJID},
|
|
#{PRODUCT_MGMT_SPEC},
|
|
#{PRODUCT_MGMT_UPG},
|
|
#{PRODUCT_MGMT_VC},
|
|
#{WRITER},
|
|
NOW(),
|
|
#{STATUS},
|
|
#{DEPLOY_DATE},
|
|
#{REV},
|
|
#{SPEC_NAME},
|
|
#{NOTE}
|
|
) ON CONFLICT (BOM_REPORT_OBJID) DO
|
|
UPDATE
|
|
SET
|
|
WRITER = #{WRITER}
|
|
</update>
|
|
|
|
<!-- <update id="mergeSalesMngBOM" parameterType="map">
|
|
INSERT INTO SALES_BOM_PART_QTY
|
|
(
|
|
SALES_BOM_OBJID
|
|
,OBJID
|
|
,BOM_REPORT_OBJID
|
|
,PARENT_OBJID
|
|
,CHILD_OBJID
|
|
,PARENT_PART_NO
|
|
,PART_NO
|
|
,QTY
|
|
,PRODUCT_TYPE_CODE
|
|
,FIRST_PARTNER_OBJID
|
|
,FIRST_PARTNER_PRICE
|
|
,FIRST_PARTNER_QTY
|
|
,SECOND_PARTNER_OBJID
|
|
,SECOND_PARTNER_PRICE
|
|
,SECOND_PARTNER_QTY
|
|
,THIRD_PARTNER_OBJID
|
|
,THIRD_PARTNER_PRICE
|
|
,THIRD_PARTNER_QTY
|
|
,REGDATE
|
|
)
|
|
VALUES
|
|
(
|
|
#{SALES_BOM_OBJID}
|
|
,#{OBJID}
|
|
,#{BOM_REPORT_OBJID}
|
|
,#{PARENT_OBJID}
|
|
,#{CHILD_OBJID}
|
|
,#{PARENT_PART_NO}
|
|
,#{PART_NO}
|
|
,#{QTY}
|
|
,#{PRODUCT_TYPE_CODE}
|
|
,#{FIRST_PARTNER_OBJID}
|
|
,#{FIRST_PARTNER_PRICE}
|
|
,#{FIRST_PARTNER_QTY}
|
|
,#{SECOND_PARTNER_OBJID}
|
|
,#{SECOND_PARTNER_PRICE}
|
|
,#{SECOND_PARTNER_QTY}
|
|
,#{THIRD_PARTNER_OBJID}
|
|
,#{THIRD_PARTNER_PRICE}
|
|
,#{THIRD_PARTNER_QTY}
|
|
,NOW()
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
PRODUCT_TYPE_CODE = #{PRODUCT_TYPE_CODE}
|
|
,FIRST_PARTNER_OBJID = #{FIRST_PARTNER_OBJID}
|
|
,FIRST_PARTNER_PRICE = #{FIRST_PARTNER_PRICE}
|
|
,FIRST_PARTNER_QTY = #{FIRST_PARTNER_QTY}
|
|
,SECOND_PARTNER_OBJID = #{SECOND_PARTNER_OBJID}
|
|
,SECOND_PARTNER_PRICE = #{SECOND_PARTNER_PRICE}
|
|
,SECOND_PARTNER_QTY = #{SECOND_PARTNER_QTY}
|
|
,THIRD_PARTNER_OBJID = #{THIRD_PARTNER_OBJID}
|
|
,THIRD_PARTNER_PRICE = #{THIRD_PARTNER_PRICE}
|
|
,THIRD_PARTNER_QTY = #{THIRD_PARTNER_QTY}
|
|
|
|
</update> -->
|
|
|
|
<select id="structureAscendingListPopup" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
PRODUCT_MGMT_OBJID,
|
|
SPEC_NAME,
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
PBM.PRODUCT_MGMT_OBJID,
|
|
PBM.SPEC_NAME,
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE
|
|
FROM
|
|
BOM_PART_QTY A
|
|
LEFT JOIN
|
|
PART_BOM_REPORT PBM
|
|
ON A.BOM_REPORT_OBJID = PBM.OBJID::TEXT
|
|
|
|
WHERE 1=1
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
AND A.BOM_REPORT_OBJID = #{bom_report_objid}
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
PBM.PRODUCT_MGMT_OBJID,
|
|
PBM.SPEC_NAME,
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.QTY,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH)
|
|
FROM
|
|
BOM_PART_QTY B
|
|
LEFT JOIN
|
|
PART_BOM_REPORT PBM
|
|
ON B.BOM_REPORT_OBJID = PBM.OBJID::TEXT
|
|
|
|
INNER JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
)
|
|
SELECT
|
|
V.BOM_REPORT_OBJID
|
|
,V.OBJID
|
|
,V.PARENT_OBJID
|
|
,V.CHILD_OBJID
|
|
,V.PARENT_PART_NO
|
|
,V.QTY
|
|
,V.LEV
|
|
,(SELECT COUNT(*) FROM BOM_PART_QTY WHERE PARENT_OBJID = V.CHILD_OBJID) AS SUB_PART_CNT
|
|
,V.SEQ
|
|
, (CASE WHEN V.CYCLE IS NULL THEN 1 ELSE 0 END) AS LEAF
|
|
|
|
,P.OBJID AS PART_OBJID
|
|
,P.PART_NO
|
|
,P.PART_NAME
|
|
,P.UNIT_TITLE
|
|
,P.QTY
|
|
,P.MATERIAL
|
|
,P.WEIGHT
|
|
,P.PART_TYPE_TITLE
|
|
,P.REVISION
|
|
,P.EO_NO
|
|
,P.EO_DATE
|
|
,P.SPEC
|
|
|
|
,P.PART_REGDATE_TITLE
|
|
|
|
,(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = V.PRODUCT_MGMT_OBJID::VARCHAR) AS PRODUCT_CODE
|
|
,V.SPEC_NAME
|
|
|
|
,SBPQ.PRODUCT_TYPE_CODE
|
|
|
|
,SBPQ.PARTNER_OBJID
|
|
,SBPQ.PARTNER_PRICE
|
|
,SBPQ.PARTNER_REMARK
|
|
|
|
,SBPQ.SALES_PART_CODE
|
|
,SBPQ.PALETTE_CODE
|
|
|
|
,COALESCE(SBPQ.SOURCING_CODE, P.SOURCING_CODE) AS SOURCING_CODE
|
|
|
|
,SBPQ.PROCESS1_CODE
|
|
,SBPQ.PROCESS2_CODE
|
|
,SBPQ.PROCESS3_CODE
|
|
,SBPQ.PROCESS4_CODE
|
|
|
|
FROM
|
|
VIEW_BOM V
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> P
|
|
ON V.PART_NO = P.OBJID::TEXT
|
|
LEFT OUTER JOIN SALES_BOM_PART_QTY SBPQ
|
|
ON V.BOM_REPORT_OBJID::VARCHAR = SBPQ.BOM_REPORT_OBJID
|
|
AND V.OBJID::VARCHAR = SBPQ.OBJID
|
|
ORDER BY V.SEQ
|
|
</select>
|
|
|
|
<!-- 구매 BOM을 통한 구매 의뢰 시 대상 Part 정보를 가져온다. -->
|
|
<select id="getSalesRequestTargetPartList" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE
|
|
FROM
|
|
BOM_PART_QTY A
|
|
where 1=1
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
AND A.BOM_REPORT_OBJID = #{bom_report_objid}
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.QTY,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH)
|
|
FROM
|
|
BOM_PART_QTY B
|
|
JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
)
|
|
|
|
SELECT
|
|
V.BOM_REPORT_OBJID
|
|
,V.PARENT_OBJID
|
|
,V.CHILD_OBJID
|
|
,V.PARENT_PART_NO
|
|
,V.QTY
|
|
,V.LEV
|
|
,(SELECT COUNT(*) FROM BOM_PART_QTY WHERE PARENT_OBJID = V.CHILD_OBJID) AS SUB_PART_CNT
|
|
,V.SEQ
|
|
,(CASE WHEN V.CYCLE IS NULL THEN 1 ELSE 0 END) AS LEAF
|
|
|
|
,T2.OBJID AS PART_OBJID
|
|
,T2.PART_NO
|
|
,T2.PART_NAME
|
|
,T2.UNIT_TITLE
|
|
,T2.EO_NO
|
|
,T2.EO_DATE
|
|
,T2.REVISION
|
|
,T2.SPEC
|
|
,T2.MATERIAL
|
|
,T2.WEIGHT
|
|
|
|
,SBPQ.PRODUCT_TYPE_CODE
|
|
,SBPQ.FIRST_PARTNER_OBJID
|
|
,SBPQ.FIRST_PARTNER_PRICE
|
|
,SBPQ.FIRST_PARTNER_QTY
|
|
,SBPQ.SECOND_PARTNER_OBJID
|
|
,SBPQ.SECOND_PARTNER_PRICE
|
|
,SBPQ.SECOND_PARTNER_QTY
|
|
,SBPQ.THIRD_PARTNER_OBJID
|
|
,SBPQ.THIRD_PARTNER_PRICE
|
|
,SBPQ.THIRD_PARTNER_QTY
|
|
|
|
,(SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE 1=1 AND CC.CODE_ID = SBPQ.PRODUCT_TYPE_CODE) AS PRODUCT_TYPE_CODE_NAME
|
|
,(SELECT SM.SUPPLY_NAME FROM SUPPLY_MNG SM WHERE 1=1 AND SM.SUPPLY_CODE = SBPQ.FIRST_PARTNER_OBJID) AS FIRST_PARTNER_NAME
|
|
,(SELECT SM.SUPPLY_NAME FROM SUPPLY_MNG SM WHERE 1=1 AND SM.SUPPLY_CODE = SBPQ.SECOND_PARTNER_OBJID) AS SECOND_PARTNER_NAME
|
|
,(SELECT SM.SUPPLY_NAME FROM SUPPLY_MNG SM WHERE 1=1 AND SM.SUPPLY_CODE = SBPQ.THIRD_PARTNER_OBJID) AS THIRD_PARTNER_NAME
|
|
,SBPQ.OBJID
|
|
,SBPQ.OBJID AS SALES_BOM_QTY_OBJID
|
|
FROM
|
|
VIEW_BOM V
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> T2
|
|
ON V.PART_NO = T2.OBJID::TEXT
|
|
LEFT OUTER JOIN SALES_BOM_PART_QTY SBPQ
|
|
ON V.BOM_REPORT_OBJID::VARCHAR = SBPQ.BOM_REPORT_OBJID
|
|
AND V.OBJID::VARCHAR = SBPQ.OBJID
|
|
WHERE 1=1
|
|
AND(
|
|
(SBPQ.FIRST_PARTNER_OBJID IS NOT NULL AND SBPQ.FIRST_PARTNER_OBJID != '') OR
|
|
(SBPQ.SECOND_PARTNER_OBJID IS NOT NULL AND SBPQ.SECOND_PARTNER_OBJID != '') OR
|
|
(SBPQ.THIRD_PARTNER_OBJID IS NOT NULL AND SBPQ.THIRD_PARTNER_OBJID != '')
|
|
)
|
|
ORDER BY V.PATH,V.REGDATE
|
|
|
|
</select>
|
|
|
|
<!-- 구매 BOM을 통한 구매 의뢰 시 저장된 Part 정보를 가져온다. -->
|
|
<select id="getSalesRequestSavedPartList" parameterType="map" resultType="map">
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY SRP.REGDATE DESC) AS RNUM,
|
|
SRP.OBJID,
|
|
SRP.SALES_BOM_QTY_OBJID,
|
|
SRP.PART_OBJID,
|
|
SRP.SALES_REQUEST_MASTER_OBJID,
|
|
SRP.QTY,
|
|
SRP.ORG_QTY,
|
|
SRP.PARTNER_OBJID,
|
|
SRP.PARTNER_PRICE,
|
|
SRP.DELIVERY_REQUEST_DATE,
|
|
SRP.WRITER,
|
|
SRP.REGDATE,
|
|
SRP.STATUS,
|
|
SRP.REMARK,
|
|
PM.PART_NAME,
|
|
PM.MATERIAL,
|
|
PM.SPEC,
|
|
PM.PART_NO,
|
|
PM.REVISION,
|
|
PM.PART_NAME||'('||PM.MATERIAL||','||PM.SPEC||')/'||PM.PART_NO AS TARGET_TITLE,
|
|
PM.UNIT_TITLE
|
|
FROM
|
|
SALES_REQUEST_MASTER SRM
|
|
|
|
INNER JOIN SALES_REQUEST_PART SRP
|
|
ON SRM.OBJID = SRP.SALES_REQUEST_MASTER_OBJID
|
|
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> PM
|
|
ON SRP.PART_OBJID = PM.OBJID::TEXT
|
|
WHERE 1=1
|
|
AND SRM.OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
|
|
|
<if test="PARTNER_OBJID != null and !''.equals(PARTNER_OBJID)">
|
|
AND SRP.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
</select>
|
|
|
|
<update id="mergeSalesRequestMasterInfo" parameterType="map">
|
|
INSERT INTO SALES_REQUEST_MASTER
|
|
(
|
|
OBJID,
|
|
REQUEST_MNG_NO,
|
|
REQUEST_CD,
|
|
PROJECT_NO,
|
|
RELEASE_DATE,
|
|
REQUEST_REASONS,
|
|
REQUEST_USER_ID,
|
|
DELIVERY_REQUEST_DATE,
|
|
UNIT_NAME,
|
|
STATUS,
|
|
RECEIPT_USER_ID,
|
|
RECEIPT_DATE,
|
|
WRITER,
|
|
REMARK,
|
|
REGDATE,
|
|
PURCHASE_TYPE,
|
|
ORDER_TYPE,
|
|
PRODUCT_NAME,
|
|
AREA_CD,
|
|
CUSTOMER_OBJID,
|
|
PAID_TYPE
|
|
)
|
|
VALUES
|
|
(
|
|
#{SALES_REQUEST_MASTER_OBJID },
|
|
(SELECT 'R'||TO_CHAR(NOW(),'YYYYMMDD')||'-'||LPAD((COALESCE(MAX(SUBSTR(REQUEST_MNG_NO,11,13)),'0')::INTEGER+1)::TEXT,3,'0') FROM SALES_REQUEST_MASTER),
|
|
#{REQUEST_CD },
|
|
#{PROJECT_NO },
|
|
#{RELEASE },
|
|
#{REQUEST_REASONS },
|
|
#{REQUEST_USER_ID },
|
|
#{DELIVERY_REQUEST_DATE },
|
|
#{UNIT_NAME },
|
|
#{STATUS },
|
|
#{RECEIPT_USER_ID },
|
|
#{RECEIPT_DATE },
|
|
#{WRITER },
|
|
#{REMARK },
|
|
NOW(),
|
|
#{PURCHASE_TYPE },
|
|
#{ORDER_TYPE },
|
|
#{PRODUCT_NAME },
|
|
#{AREA_CD },
|
|
#{CUSTOMER_OBJID },
|
|
#{PAID_TYPE }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
REQUEST_CD = #{REQUEST_CD },
|
|
PROJECT_NO = #{PROJECT_NO },
|
|
RELEASE_DATE = #{RELEASE },
|
|
REQUEST_REASONS = #{REQUEST_REASONS },
|
|
REQUEST_USER_ID = #{REQUEST_USER_ID },
|
|
DELIVERY_REQUEST_DATE = #{DELIVERY_REQUEST_DATE },
|
|
UNIT_NAME = #{UNIT_NAME },
|
|
STATUS = #{STATUS },
|
|
RECEIPT_USER_ID = #{RECEIPT_USER_ID },
|
|
RECEIPT_DATE = #{RECEIPT_DATE },
|
|
REMARK = #{REMARK },
|
|
PURCHASE_TYPE = #{PURCHASE_TYPE },
|
|
ORDER_TYPE = #{ORDER_TYPE },
|
|
PRODUCT_NAME = #{PRODUCT_NAME },
|
|
AREA_CD = #{AREA_CD },
|
|
CUSTOMER_OBJID = #{CUSTOMER_OBJID },
|
|
PAID_TYPE = #{PAID_TYPE }
|
|
</update>
|
|
|
|
<select id="getSalesRequestMasterInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
SRM.OBJID,
|
|
SRM.REQUEST_MNG_NO,
|
|
SRM.REQUEST_CD,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.REQUEST_CD) AS REQUEST_CD_NAME,
|
|
SRM.PROJECT_NO,
|
|
PM.PROJECT_NO AS PROJECT_NUMBER,
|
|
PM.PROJECT_NAME,
|
|
PM.SETUP,
|
|
SM.SUPPLY_NAME AS CUSTOMER_NAME,
|
|
SM.OBJID::VARCHAR AS CUSTOMER_OBJID, -- 고객사 OBJID (드롭다운 선택용)
|
|
PM.MECHANICAL_TYPE,
|
|
SRM.RELEASE_DATE,
|
|
SRM.REQUEST_REASONS,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.REQUEST_REASONS) AS REQUEST_REASONS_NAME,
|
|
SRM.REQUEST_USER_ID,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.REQUEST_USER_ID) AS REQUEST_USER_NAME,
|
|
SRM.DELIVERY_REQUEST_DATE,
|
|
SRM.UNIT_NAME,
|
|
(SELECT TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = SRM.UNIT_NAME) AS UNIT_CODE_NAME,
|
|
SRM.STATUS,
|
|
CASE SRM.STATUS
|
|
WHEN 'create' THEN '미접수'
|
|
WHEN 'release' THEN '제출 완료'
|
|
WHEN 'reception' THEN '접수'
|
|
WHEN 'approvalRequest' THEN '결재중'
|
|
WHEN 'approvalComplete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
SRM.RECEIPT_USER_ID,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.RECEIPT_USER_ID) AS RECEIPT_USER_NAME,
|
|
SRM.RECEIPT_DATE,
|
|
SRM.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.WRITER) AS WRITER_NAME,
|
|
SRM.REGDATE,
|
|
TO_CHAR(SRM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
SRM.REMARK,
|
|
|
|
-- 저장된 값 우선, 없으면 조인으로 가져오기
|
|
COALESCE(NULLIF(SRM.PURCHASE_TYPE, ''), POM.TYPE) AS PURCHASE_TYPE, -- 구매유형
|
|
COALESCE(NULLIF(SRM.ORDER_TYPE, ''), POM.ORDER_TYPE_CD) AS ORDER_TYPE, -- 주문유형
|
|
COALESCE(NULLIF(SRM.PRODUCT_NAME, ''), PM.PRODUCT) AS PRODUCT_NAME, -- 제품구분
|
|
COALESCE(NULLIF(SRM.AREA_CD, ''), SM.AREA_CD) AS AREA_CD, -- 국내/해외
|
|
COALESCE(NULLIF(SRM.CUSTOMER_OBJID, ''), SM.OBJID::VARCHAR) AS CUSTOMER_OBJID, -- 고객사
|
|
COALESCE(NULLIF(SRM.PAID_TYPE, ''), CM.PAID_TYPE) AS PAID_TYPE, -- 유/무상
|
|
CM.CATEGORY_CD AS CATEGORY_CD -- 제품유형 코드 ID (드롭다운 선택용)
|
|
|
|
FROM
|
|
SALES_REQUEST_MASTER SRM
|
|
LEFT JOIN PROJECT_MGMT PM ON SRM.PROJECT_NO = PM.OBJID::VARCHAR
|
|
LEFT JOIN CONTRACT_MGMT CM ON PM.CONTRACT_OBJID = CM.OBJID::VARCHAR
|
|
LEFT JOIN SUPPLY_MNG SM ON CM.CUSTOMER_OBJID::VARCHAR = SM.OBJID::VARCHAR
|
|
LEFT JOIN PURCHASE_ORDER_MASTER POM ON SRM.OBJID = POM.SALES_REQUEST_OBJID
|
|
WHERE 1=1
|
|
AND SRM.OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
|
</select>
|
|
|
|
<!-- 구매의뢰 저장 시 저장된 파트 정보를 초기화 -->
|
|
<delete id="initSalesRequestPart" parameterType="map">
|
|
DELETE FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
|
</delete>
|
|
|
|
<update id="mergeSalesRequestPartInfo" parameterType="map">
|
|
INSERT INTO SALES_REQUEST_PART
|
|
(
|
|
OBJID,
|
|
SALES_BOM_QTY_OBJID,
|
|
PART_OBJID,
|
|
SALES_REQUEST_MASTER_OBJID,
|
|
QTY,
|
|
ORG_QTY,
|
|
PARTNER_OBJID,
|
|
PARTNER_PRICE,
|
|
DELIVERY_REQUEST_DATE,
|
|
WRITER,
|
|
REGDATE,
|
|
STATUS
|
|
<!-- REMARK -->
|
|
)
|
|
VALUES
|
|
(
|
|
#{SALES_REQUEST_PART_OBJID },
|
|
#{SALES_BOM_QTY_OBJID },
|
|
#{PART_OBJID },
|
|
#{SALES_REQUEST_MASTER_OBJID},
|
|
#{QTY },
|
|
#{ORG_QTY },
|
|
#{PARTNER_OBJID },
|
|
#{PARTNER_PRICE },
|
|
#{DELIVERY_REQUEST_DATE },
|
|
#{WRITER},
|
|
NOW(),
|
|
#{STATUS}
|
|
<!-- #{REMARK} -->
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
SALES_BOM_QTY_OBJID = #{SALES_BOM_QTY_OBJID },
|
|
PART_OBJID = #{PART_OBJID },
|
|
SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_MASTER_OBJID},
|
|
QTY = #{QTY },
|
|
ORG_QTY = #{ORG_QTY },
|
|
PARTNER_OBJID = #{PARTNER_OBJID },
|
|
PARTNER_PRICE = #{PARTNER_PRICE },
|
|
DELIVERY_REQUEST_DATE = #{DELIVERY_REQUEST_DATE },
|
|
WRITER = #{WRITER},
|
|
STATUS = #{STATUS}
|
|
<!-- REMARK = #{REMARK} -->
|
|
</update>
|
|
|
|
<update id="mergeSalesRequestPartSupplyInfo" parameterType="map">
|
|
UPDATE SALES_REQUEST_PART SET
|
|
PARTNER_OBJID = #{PARTNER_OBJID }
|
|
WHERE OBJID = #{OBJID}
|
|
AND SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
|
</update>
|
|
|
|
<select id="getSalesRequestMasterList" parameterType="map" resultType="map">
|
|
SELECT
|
|
ROW_NUMBER() OVER(ORDER BY REGDATE DESC) AS RNUM,
|
|
AA.*
|
|
FROM (
|
|
SELECT
|
|
SRM.OBJID,
|
|
SRM.REQUEST_MNG_NO,
|
|
|
|
SRM.CATEGORY_CD,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.CATEGORY_CD) AS CATEGORY_CD_NAME,
|
|
|
|
SRM.PRODUCT_GROUP,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PRODUCT_GROUP) AS PRODUCT_GROUP_NAME,
|
|
|
|
SRM.PRODUCT,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PRODUCT) AS PRODUCT_NAME,
|
|
|
|
SRM.PRODUCT_CODE,
|
|
(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = SRM.PRODUCT_CODE::VARCHAR) AS PRODUCT_CODE_NAME,
|
|
|
|
SRM.SALES_MNG_USER_ID,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.SALES_MNG_USER_ID) AS SALES_MNG_USER_NAME,
|
|
|
|
SRM.REQUEST_STATUS,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.REQUEST_STATUS) AS REQUEST_STATUS_TITLE,
|
|
|
|
SRM.REQUEST_STATUS_REMARK,
|
|
SRM.TITLE,
|
|
|
|
SRM.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.WRITER) AS WRITER_NAME,
|
|
|
|
SRM.REGDATE,
|
|
TO_CHAR(SRM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
|
|
SRM.STATUS,
|
|
CASE SRM.STATUS
|
|
WHEN 'create' THEN '등록'
|
|
WHEN 'release' THEN '제출 완료'
|
|
WHEN 'reception' THEN '의뢰 접수'
|
|
WHEN 'approvalRequest' THEN '결재중'
|
|
WHEN 'approvalComplete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
|
|
SRP.TARGET_TITLE,
|
|
|
|
A.APPR_STATUS,
|
|
A.ROUTE_OBJID,
|
|
A.APPROVAL_OBJID,
|
|
A.ROUTE_OBJID
|
|
FROM
|
|
SALES_REQUEST_MASTER SRM
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
B.OBJID AS ROUTE_OBJID,
|
|
CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END APPR_STATUS,
|
|
A.OBJID AS APPROVAL_OBJID,
|
|
A.TARGET_OBJID,
|
|
B.ROUTE_SEQ
|
|
FROM
|
|
APPROVAL A,
|
|
(
|
|
select
|
|
T1.*
|
|
from
|
|
(
|
|
select
|
|
TARGET_OBJID,
|
|
max(T.ROUTE_SEQ) as ROUTE_SEQ
|
|
from
|
|
ROUTE T
|
|
group by
|
|
T.TARGET_OBJID
|
|
) T,
|
|
ROUTE T1
|
|
where
|
|
T.TARGET_OBJID = T1.TARGET_OBJID
|
|
and T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('SALES_REQUEST')
|
|
) A ON SRM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
ROW_NUMBER() OVER(PARTITION BY SRP.SALES_REQUEST_MASTER_OBJID ORDER BY SRP.REGDATE DESC) SUB_RNUM,
|
|
SRP.OBJID,
|
|
SRP.SALES_BOM_QTY_OBJID,
|
|
SRP.PART_OBJID,
|
|
SRP.SALES_REQUEST_MASTER_OBJID,
|
|
SRP.QTY,
|
|
SRP.PARTNER_OBJID,
|
|
SRP.PARTNER_PRICE,
|
|
SRP.DELIVERY_REQUEST_DATE,
|
|
SRP.WRITER,
|
|
SRP.REGDATE,
|
|
SRP.STATUS,
|
|
SRP.REMARK,
|
|
|
|
PM.PART_NAME||'('||PM.MATERIAL||','||PM.SPEC||')/'||PM.PART_NO AS TARGET_TITLE,
|
|
PM.UNIT_TITLE
|
|
FROM
|
|
SALES_REQUEST_MASTER SRM
|
|
|
|
INNER JOIN SALES_REQUEST_PART SRP
|
|
ON SRM.OBJID = SRP.SALES_REQUEST_MASTER_OBJID
|
|
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> PM
|
|
ON SRP.PART_OBJID = PM.OBJID::TEXT
|
|
|
|
WHERE 1=1
|
|
) SRP ON SRP.SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR
|
|
AND SRP.SUB_RNUM = 1
|
|
WHERE 1=1
|
|
) AA
|
|
WHERE 1=1
|
|
<if test="SEARCH_CATEGORY_CD != null and !''.equals(SEARCH_CATEGORY_CD)">
|
|
AND CATEGORY_CD = #{SEARCH_CATEGORY_CD}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT_GROUP != null and !''.equals(SEARCH_PRODUCT_GROUP)">
|
|
AND PRODUCT_GROUP = #{SEARCH_PRODUCT_GROUP}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT != null and !''.equals(SEARCH_PRODUCT)">
|
|
AND PRODUCT = #{SEARCH_PRODUCT}
|
|
</if>
|
|
|
|
<if test="SEARCH_PRODUCT_CODE != null and !''.equals(SEARCH_PRODUCT_CODE)">
|
|
AND PRODUCT_CODE = #{SEARCH_PRODUCT_CODE}
|
|
</if>
|
|
|
|
<if test="SEARCH_PART_NO != null and !''.equals(SEARCH_PART_NO)">
|
|
AND OBJID IN (
|
|
SELECT
|
|
SRP.SALES_REQUEST_MASTER_OBJID
|
|
FROM
|
|
SALES_REQUEST_PART SRP
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR
|
|
WHERE PART_NO LIKE'%${SEARCH_PART_NO}%'
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and !''.equals(SEARCH_PART_NAME)">
|
|
AND OBJID IN (
|
|
SELECT
|
|
SRP.SALES_REQUEST_MASTER_OBJID
|
|
FROM
|
|
SALES_REQUEST_PART SRP
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR
|
|
WHERE PART_NAME LIKE'%${SEARCH_PART_NAME}%'
|
|
)
|
|
</if>
|
|
|
|
<if test="SEARCH_STATUS != null and !''.equals(SEARCH_STATUS)">
|
|
<![CDATA[ AND 0 < POSITION(STATUS || ',' IN #{SEARCH_STATUS}||',') ]]>
|
|
</if>
|
|
</select>
|
|
|
|
<select id="getSalesRequestMasterGridList" parameterType="map" resultType="map">
|
|
SELECT
|
|
SRM.OBJID,
|
|
SRM.REQUEST_MNG_NO,
|
|
SRM.REQUEST_CD,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.REQUEST_CD) AS REQUEST_CD_NAME,
|
|
|
|
-- 추가된 컬럼들
|
|
SRM.PURCHASE_TYPE,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PURCHASE_TYPE) AS PURCHASE_TYPE_NAME,
|
|
SRM.ORDER_TYPE,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.ORDER_TYPE) AS ORDER_TYPE_NAME,
|
|
SRM.PRODUCT_NAME,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.PRODUCT_NAME) AS PRODUCT_NAME_FULL,
|
|
SRM.AREA_CD,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.AREA_CD) AS AREA_CD_NAME,
|
|
SRM.CUSTOMER_OBJID,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID::VARCHAR = SRM.CUSTOMER_OBJID) AS CUSTOMER_NAME,
|
|
SRM.PAID_TYPE,
|
|
(CASE WHEN SRM.PAID_TYPE = 'paid' THEN '유상' WHEN SRM.PAID_TYPE = 'free' THEN '무상' ELSE SRM.PAID_TYPE END) AS PAID_TYPE_NAME,
|
|
|
|
-- 품번/품명 ("외 N건" 형태로 표시)
|
|
(
|
|
SELECT
|
|
CASE
|
|
WHEN COUNT(*) > 1 THEN
|
|
(SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건'
|
|
ELSE
|
|
(SELECT PM.PART_NO FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1))
|
|
END
|
|
FROM SALES_REQUEST_PART
|
|
WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
|
) AS PART_NO,
|
|
(
|
|
SELECT
|
|
CASE
|
|
WHEN COUNT(*) > 1 THEN
|
|
(SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1)) || ' 외 ' || (COUNT(*) - 1) || '건'
|
|
ELSE
|
|
(SELECT PM.PART_NAME FROM PART_MNG PM WHERE PM.OBJID::VARCHAR = (SELECT PART_OBJID FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID ORDER BY REGDATE LIMIT 1))
|
|
END
|
|
FROM SALES_REQUEST_PART
|
|
WHERE SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
|
) AS PART_NAME,
|
|
|
|
SRM.PROJECT_NO,
|
|
(SELECT PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = SRM.PROJECT_NO) AS PROJECT_NUMBER,
|
|
(SELECT PROJECT_NAME FROM PROJECT_MGMT PM WHERE PM.OBJID = SRM.PROJECT_NO) AS PROJECT_NAME,
|
|
SRM.RELEASE_DATE,
|
|
SRM.REQUEST_REASONS,
|
|
(SELECT CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = SRM.REQUEST_REASONS) AS REQUEST_REASONS_NAME,
|
|
COALESCE(SRM.REQUEST_USER_ID, SRM.WRITER) AS REQUEST_USER_ID,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = COALESCE(SRM.REQUEST_USER_ID, SRM.WRITER)) AS REQUEST_USER_NAME,
|
|
SRM.DELIVERY_REQUEST_DATE,
|
|
SRM.UNIT_NAME,
|
|
(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = SRM.UNIT_NAME) AS UNIT_CODE_NAME,
|
|
SRM.STATUS,
|
|
CASE
|
|
WHEN ((SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) >= (SELECT COUNT(1) FROM SALES_REQUEST_PART AS SRP WHERE srp.SALES_REQUEST_master_OBJID = SRM.OBJID )) and ((SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) > 0) THEN '발주완료'
|
|
WHEN ((SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) < (SELECT COUNT(1) FROM SALES_REQUEST_PART AS SRP WHERE srp.SALES_REQUEST_master_OBJID = SRM.OBJID )) and ((SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) > 0) THEN '발주부분완료'
|
|
WHEN SRM.STATUS = 'create' THEN '등록'
|
|
WHEN SRM.STATUS = 'release' THEN '제출 완료'
|
|
WHEN SRM.STATUS = 'reception' THEN '접수'
|
|
WHEN SRM.STATUS = 'approvalRequest' THEN '결재중'
|
|
WHEN SRM.STATUS = 'approvalComplete' THEN '결재완료'
|
|
WHEN SRM.STATUS = 'reject' THEN '반려'
|
|
<!-- WHEN 'orderComplete' THEN '발주완료' -->
|
|
ELSE ''
|
|
END STATUS_TITLE,
|
|
SRM.RECEIPT_USER_ID,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.RECEIPT_USER_ID) AS RECEIPT_USER_NAME,
|
|
RECEIPT_DATE,
|
|
SRM.WRITER,
|
|
(SELECT DEPT_NAME||' '||USER_NAME FROM USER_INFO WHERE USER_ID = SRM.WRITER) AS WRITER_NAME,
|
|
SRM.REGDATE,
|
|
TO_CHAR(SRM.REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
|
|
A.APPR_STATUS,
|
|
A.ROUTE_OBJID,
|
|
A.APPROVAL_OBJID,
|
|
A.ROUTE_OBJID,
|
|
SRP.TOTAL_QTY,
|
|
SRP.ITEMS_QTY,
|
|
(SELECT STRING_AGG(PURCHASE_ORDER_NO,',') FROM PURCHASE_ORDER_MASTER AS O WHERE O.SALES_REQUEST_OBJID IN (SRM.OBJID)) AS PURCHASE_ORDER_NO_ARR
|
|
FROM
|
|
SALES_REQUEST_MASTER SRM
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
B.OBJID AS ROUTE_OBJID,
|
|
CASE B.STATUS
|
|
WHEN 'inProcess' THEN '결재중'
|
|
WHEN 'complete' THEN '결재완료'
|
|
WHEN 'reject' THEN '반려'
|
|
ELSE ''
|
|
END APPR_STATUS,
|
|
A.OBJID AS APPROVAL_OBJID,
|
|
A.TARGET_OBJID,
|
|
B.ROUTE_SEQ
|
|
FROM
|
|
APPROVAL A,
|
|
(
|
|
select
|
|
T1.*
|
|
from
|
|
(
|
|
select
|
|
TARGET_OBJID,
|
|
max(T.ROUTE_SEQ) as ROUTE_SEQ
|
|
from
|
|
ROUTE T
|
|
group by
|
|
T.TARGET_OBJID
|
|
) T,
|
|
ROUTE T1
|
|
where
|
|
T.TARGET_OBJID = T1.TARGET_OBJID
|
|
and T.ROUTE_SEQ = T1.ROUTE_SEQ
|
|
) B
|
|
WHERE A.OBJID = B.APPROVAL_OBJID
|
|
AND TARGET_TYPE IN ('SALES_REQUEST')
|
|
) A ON SRM.OBJID::VARCHAR = A.TARGET_OBJID::VARCHAR
|
|
|
|
LEFT OUTER JOIN(
|
|
SELECT
|
|
SALES_REQUEST_MASTER_OBJID ,
|
|
SUM(COALESCE(QTY,'0')::NUMERIC) AS TOTAL_QTY,
|
|
count(1) AS ITEMS_QTY
|
|
FROM
|
|
SALES_REQUEST_PART
|
|
GROUP BY SALES_REQUEST_MASTER_OBJID
|
|
) SRP ON SRP.SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
|
|
|
<!-- LEFT OUTER JOIN(
|
|
SELECT
|
|
ROW_NUMBER() OVER(PARTITION BY SRP.SALES_REQUEST_MASTER_OBJID ORDER BY SRP.REGDATE DESC) SUB_RNUM,
|
|
SRP.OBJID,
|
|
SRP.SALES_BOM_QTY_OBJID,
|
|
SRP.PART_OBJID,
|
|
SRP.SALES_REQUEST_MASTER_OBJID,
|
|
SRP.QTY,
|
|
SRP.PARTNER_OBJID,
|
|
SRP.PARTNER_PRICE,
|
|
SRP.DELIVERY_REQUEST_DATE,
|
|
SRP.WRITER,
|
|
SRP.REGDATE,
|
|
SRP.STATUS,
|
|
SRP.REMARK,
|
|
|
|
PM.PART_NAME||'('||PM.MATERIAL||','||PM.SPEC||')/'||PM.PART_NO AS TARGET_TITLE,
|
|
PM.UNIT_TITLE
|
|
FROM
|
|
SALES_REQUEST_MASTER SRM
|
|
|
|
INNER JOIN SALES_REQUEST_PART SRP
|
|
ON SRM.OBJID = SRP.SALES_REQUEST_MASTER_OBJID
|
|
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> PM
|
|
ON SRP.PART_OBJID = PM.OBJID::TEXT
|
|
|
|
WHERE 1=1
|
|
) SRP ON SRP.SALES_REQUEST_MASTER_OBJID::VARCHAR = SRM.OBJID::VARCHAR
|
|
AND SRP.SUB_RNUM = 1 -->
|
|
WHERE 1=1
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(REGDATE,'YYYY') = #{Year}
|
|
</if>
|
|
|
|
<!-- <if test="contract_objid != null and !''.equals(contract_objid)">
|
|
AND SRM.PROJECT_NO = #{contract_objid}
|
|
</if> -->
|
|
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND SRM.PROJECT_NO IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
|
|
<if test="request_cd != null and !''.equals(request_cd)">
|
|
AND SRM.REQUEST_CD = #{request_cd}
|
|
</if>
|
|
|
|
<if test="request_reasons != null and !''.equals(request_reasons)">
|
|
AND SRM.REQUEST_REASONS = #{request_reasons}
|
|
</if>
|
|
|
|
<if test="receipt_writer != null and !''.equals(receipt_writer)">
|
|
AND SRM.RECEIPT_USER_ID = #{receipt_writer}
|
|
</if>
|
|
|
|
<if test="receipt_date_start != null and !''.equals(receipt_date_start)">
|
|
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{receipt_date_start}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="receipt_date_end != null and !''.equals(receipt_date_end)">
|
|
AND TO_DATE(RECEIPT_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{receipt_date_end}, 'YYYY-MM-DD')
|
|
</if>
|
|
|
|
<!-- <if test="SEARCH_PART_NO != null and !''.equals(SEARCH_PART_NO)">
|
|
AND OBJID IN (
|
|
SELECT
|
|
SRP.SALES_REQUEST_MASTER_OBJID
|
|
FROM
|
|
SALES_REQUEST_PART SRP
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR
|
|
WHERE PART_NO LIKE'%${SEARCH_PART_NO}%'
|
|
)
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and !''.equals(SEARCH_PART_NAME)">
|
|
AND OBJID IN (
|
|
SELECT
|
|
SRP.SALES_REQUEST_MASTER_OBJID
|
|
FROM
|
|
SALES_REQUEST_PART SRP
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON SRP.PART_OBJID::VARCHAR = PM.OBJID::VARCHAR
|
|
WHERE PART_NAME LIKE'%${SEARCH_PART_NAME}%'
|
|
)
|
|
</if> -->
|
|
|
|
<if test="SEARCH_STATUS != null and !''.equals(SEARCH_STATUS)">
|
|
<![CDATA[ AND 0 < POSITION(STATUS || ',' IN #{SEARCH_STATUS}||',') ]]>
|
|
</if>
|
|
ORDER BY SRM.REGDATE desc
|
|
</select>
|
|
|
|
<select id="purchaseOrderAdminSupplyInfo" parameterType="map" resultType="map">
|
|
SELECT
|
|
PM.OBJID
|
|
,PM.CATEGORY_CD
|
|
,CODE_NAME(PM.CATEGORY_CD) AS CATEGORY_NAME
|
|
,PM.CUSTOMER_OBJID
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID = PM.CUSTOMER_OBJID::NUMERIC) AS CUSTOMER_NAME
|
|
,PM.PRODUCT
|
|
,CODE_NAME(PM.PRODUCT) AS PRODUCT_NAME
|
|
,PM.STATUS_CD
|
|
,CODE_NAME(PM.STATUS_CD) AS STATUS_NAME
|
|
,PM.DUE_DATE
|
|
,PM.LOCATION
|
|
,PM.SETUP
|
|
,PM.FACILITY
|
|
,CODE_NAME(PM.FACILITY) AS FACILITY_NAME
|
|
,PM.FACILITY_QTY
|
|
,PM.FACILITY_TYPE
|
|
,PM.FACILITY_DEPTH
|
|
,PM.PRODUCTION_NO
|
|
,PM.BUS_CAL_CD
|
|
,CODE_NAME(PM.BUS_CAL_CD) AS BUS_CAL_NAME
|
|
,PM.CATEGORY1_CD
|
|
,CODE_NAME(PM.CATEGORY1_CD) AS CATEGORY1_NAME
|
|
,PM.CHG_USER_ID
|
|
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = PM.CHG_USER_ID ) AS CHG_USER_NAME
|
|
,PM.PLAN_DATE
|
|
,PM.COMPLETE_DATE
|
|
,PM.RESULT_CD
|
|
,CODE_NAME(PM.RESULT_CD) AS RESULT_NAME
|
|
,PM.PROJECT_NO
|
|
,PM.PM_USER_ID
|
|
,PM.CONTRACT_PRICE
|
|
,PM.CONTRACT_PRICE_CURRENCY
|
|
,PM.CONTRACT_CURRENCY
|
|
,CODE_NAME(PM.CONTRACT_CURRENCY) AS CONTRACT_CURRENCY_NAME
|
|
,TO_CHAR(PM.REGDATE,'YYYY-MM-DD') AS REG_DATE
|
|
,PM.WRITER
|
|
,(SELECT USER_NAME FROM USER_INFO AS O WHERE O.USER_ID = PM.WRITER ) AS WRITER_NAME
|
|
,PM.CONTRACT_NO
|
|
,PM.CUSTOMER_EQUIP_NAME
|
|
,PM.REQ_DEL_DATE
|
|
,PM.CONTRACT_DEL_DATE
|
|
,PM.CONTRACT_COMPANY
|
|
,CODE_NAME(PM.CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
|
|
,PM.CONTRACT_DATE
|
|
,PM.PO_NO
|
|
,PM.MANUFACTURE_PLANT
|
|
,CODE_NAME(PM.MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
|
|
,PM.CONTRACT_RESULT
|
|
,CODE_NAME(PM.CONTRACT_RESULT) AS CONTRACT_RESULT_NAME
|
|
,PM.AREA_CD
|
|
,CODE_NAME(PM.AREA_CD) AS AREA_NAME
|
|
,PM.PROJECT_NAME
|
|
,PM.MECHANICAL_TYPE
|
|
,PM.OVERHAUL_ORDER
|
|
,RM.RELEASE_DATE
|
|
,CM.PAID_TYPE
|
|
,CM.OBJID AS CONTRACT_OBJID
|
|
FROM
|
|
PROJECT_MGMT AS PM
|
|
LEFT OUTER JOIN
|
|
RELEASE_MGMT RM
|
|
ON PM.OBJID::VARCHAR = RM.PARENT_OBJID
|
|
AND PM.PRODUCT = RM.PRODUCT
|
|
LEFT OUTER JOIN
|
|
CONTRACT_MGMT CM
|
|
ON PM.CONTRACT_OBJID = CM.OBJID
|
|
WHERE 1=1
|
|
AND PM.OBJID = #{PROJECT_NO}
|
|
</select>
|
|
|
|
<select id="SalesBomPartListByProjectUnit" parameterType="map" resultType="map">
|
|
<!-- M-BOM 데이터 조회: PROJECT_MGMT.BOM_REPORT_OBJID -> BOM_PART_QTY -> PART_MNG -->
|
|
SELECT
|
|
BPQ.BOM_REPORT_OBJID
|
|
,BPQ.PART_NO AS PART_OBJID
|
|
,PM.PART_NAME
|
|
,PM.PART_NO
|
|
,PM.SPEC
|
|
,PM.MAKER
|
|
,PM.REMARK
|
|
,PM.UNIT
|
|
,BPQ.QTY AS ORDER_QTY
|
|
,NULL AS SUPPLY_OBJID
|
|
,NULL AS WRITER
|
|
FROM
|
|
PROJECT_MGMT AS PJT
|
|
INNER JOIN BOM_PART_QTY AS BPQ
|
|
ON PJT.BOM_REPORT_OBJID = BPQ.BOM_REPORT_OBJID::VARCHAR
|
|
LEFT JOIN PART_MNG AS PM
|
|
ON COALESCE(NULLIF(BPQ.LAST_PART_OBJID, ''), BPQ.PART_NO) = PM.OBJID::VARCHAR
|
|
WHERE 1=1
|
|
AND PJT.OBJID = #{PROJECT_OBJID}
|
|
AND PJT.BOM_REPORT_OBJID IS NOT NULL
|
|
AND PJT.BOM_REPORT_OBJID != ''
|
|
ORDER BY BPQ.SEQ, PM.PART_NO
|
|
</select>
|
|
|
|
<update id="mergeReceiptSalesRequestInfo" parameterType="map">
|
|
UPDATE
|
|
SALES_REQUEST_MASTER
|
|
SET
|
|
STATUS = #{STATUS}
|
|
,RECEIPT_DATE = #{RECEIPT_DATE}
|
|
,RECEIPT_USER_ID = #{RECEIPT_USER_ID}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<update id="changeStatusSalesRequestMaster" parameterType="map">
|
|
UPDATE
|
|
SALES_REQUEST_MASTER
|
|
SET
|
|
STATUS = #{STATUS}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<update id="releaseSalesRequestMaster" parameterType="map">
|
|
UPDATE
|
|
SALES_REQUEST_MASTER
|
|
SET
|
|
RELEASE_DATE = TO_CHAR(NOW(),'YYYY-MM-DD')
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<select id="getSalesPartnerInfoList" parameterType="map" resultType="map">
|
|
SELECT
|
|
A.*,
|
|
ROW_NUMBER() OVER(ORDER BY A.SEQ) AS RNUM
|
|
FROM(
|
|
SELECT
|
|
BPQ.PART_NO,
|
|
SBPQ.FIRST_PARTNER_OBJID AS PARTNER_OBJID,
|
|
SBPQ.FIRST_PARTNER_PRICE AS PARTNER_PRICE,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = SBPQ.FIRST_PARTNER_OBJID) AS PARTNER_NAME,
|
|
1 AS SEQ
|
|
FROM BOM_PART_QTY BPQ
|
|
LEFT OUTER JOIN SALES_BOM_PART_QTY SBPQ
|
|
ON BPQ.BOM_REPORT_OBJID::VARCHAR = SBPQ.BOM_REPORT_OBJID
|
|
AND BPQ.OBJID::VARCHAR = SBPQ.OBJID
|
|
AND SBPQ.FIRST_PARTNER_OBJID IS NOT NULL
|
|
AND SBPQ.FIRST_PARTNER_OBJID != ''
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
BPQ.PART_NO,
|
|
SBPQ.SECOND_PARTNER_OBJID AS PARTNER_OBJID,
|
|
SBPQ.SECOND_PARTNER_PRICE AS PARTNER_PRICE,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = SBPQ.SECOND_PARTNER_OBJID) AS PARTNER_NAME,
|
|
2 AS SEQ
|
|
FROM BOM_PART_QTY BPQ
|
|
LEFT OUTER JOIN SALES_BOM_PART_QTY SBPQ
|
|
ON BPQ.BOM_REPORT_OBJID::VARCHAR = SBPQ.BOM_REPORT_OBJID
|
|
AND BPQ.OBJID::VARCHAR = SBPQ.OBJID
|
|
AND SBPQ.SECOND_PARTNER_OBJID IS NOT NULL
|
|
AND SBPQ.SECOND_PARTNER_OBJID != ''
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
BPQ.PART_NO,
|
|
SBPQ.THIRD_PARTNER_OBJID AS PARTNER_OBJID,
|
|
SBPQ.THIRD_PARTNER_PRICE AS PARTNER_PRICE,
|
|
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE 1=1 AND OBJID::VARCHAR = SBPQ.THIRD_PARTNER_OBJID) AS PARTNER_NAME,
|
|
3 AS SEQ
|
|
FROM BOM_PART_QTY BPQ
|
|
LEFT OUTER JOIN SALES_BOM_PART_QTY SBPQ
|
|
ON BPQ.BOM_REPORT_OBJID::VARCHAR = SBPQ.BOM_REPORT_OBJID
|
|
AND BPQ.OBJID::VARCHAR = SBPQ.OBJID
|
|
AND SBPQ.THIRD_PARTNER_OBJID IS NOT NULL
|
|
AND SBPQ.THIRD_PARTNER_OBJID != ''
|
|
)A WHERE 1=1
|
|
AND PART_NO::VARCHAR = #{PART_OBJID}
|
|
|
|
</select>
|
|
|
|
<!-- 구매 BOM을 통한 구매 의뢰 시 저장된 Part 정보를 가져온다. -->
|
|
<select id="getSalesRequestPartPartnerList" parameterType="map" resultType="map">
|
|
SELECT
|
|
SRP.PARTNER_OBJID
|
|
FROM
|
|
SALES_REQUEST_MASTER SRM
|
|
|
|
INNER JOIN SALES_REQUEST_PART SRP
|
|
ON SRM.OBJID = SRP.SALES_REQUEST_MASTER_OBJID
|
|
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> PM
|
|
ON SRP.PART_OBJID = PM.OBJID::TEXT
|
|
WHERE 1=1
|
|
AND SRM.OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
|
GROUP BY SRP.PARTNER_OBJID
|
|
</select>
|
|
|
|
<!-- 파트에 연결된 발주관리 정보를 가져온다. -->
|
|
<select id="getOrderSpecMngList" parameterType="map" resultType="map">
|
|
SELECT
|
|
OBJID,
|
|
SEQ,
|
|
PART_OBJID,
|
|
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID::VARCHAR = PARTNER_OBJID::VARCHAR) AS PARTNER_NAME,
|
|
PARTNER_RANK,
|
|
PARTNER_OBJID,
|
|
PARTNER_PRICE,
|
|
PARTNER_QTY,
|
|
APPLY_DATE,
|
|
REMARK,
|
|
|
|
REGDATE,
|
|
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
|
|
IS_LAST,
|
|
|
|
WRITER,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = OSM.WRITER) AS WRITER_NAME
|
|
FROM
|
|
ORDER_SPEC_MNG OSM
|
|
WHERE 1=1
|
|
AND PART_OBJID = #{PART_OBJID}
|
|
ORDER BY
|
|
SEQ NULLS LAST,
|
|
APPLY_DATE DESC
|
|
</select>
|
|
|
|
<!-- 파트에 연결된 발주관리 정보를 가져온다. -->
|
|
<select id="getOrderSpecMngMap" parameterType="map" resultType="map">
|
|
SELECT
|
|
OBJID,
|
|
SEQ,
|
|
PART_OBJID,
|
|
PARTNER_RANK,
|
|
PARTNER_OBJID,
|
|
PARTNER_PRICE,
|
|
PARTNER_QTY,
|
|
APPLY_DATE,
|
|
REMARK,
|
|
REGDATE,
|
|
IS_LAST,
|
|
WRITER
|
|
FROM
|
|
ORDER_SPEC_MNG
|
|
WHERE 1=1
|
|
|
|
<if test="OBJID != null and !''.equals(OBJID)">
|
|
AND OBJID = #{OBJID}
|
|
</if>
|
|
|
|
<if test="PART_OBJID != null and !''.equals(PART_OBJID)">
|
|
AND PART_OBJID = #{PART_OBJID}
|
|
</if>
|
|
|
|
<if test="PARTNER_OBJID != null and !''.equals(PARTNER_OBJID)">
|
|
AND PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
|
|
</select>
|
|
|
|
<update id="mergeOrderSpecMng" parameterType="map">
|
|
INSERT INTO ORDER_SPEC_MNG
|
|
(
|
|
OBJID,
|
|
SEQ,
|
|
PART_OBJID,
|
|
PARTNER_RANK,
|
|
PARTNER_OBJID,
|
|
PARTNER_PRICE,
|
|
PARTNER_QTY,
|
|
APPLY_DATE,
|
|
REMARK,
|
|
REGDATE,
|
|
IS_LAST,
|
|
WRITER
|
|
)
|
|
VALUES
|
|
(
|
|
#{OBJID},
|
|
#{SEQ},
|
|
#{PART_OBJID},
|
|
#{PARTNER_RANK},
|
|
#{PARTNER_OBJID},
|
|
#{PARTNER_PRICE},
|
|
#{PARTNER_QTY},
|
|
#{APPLY_DATE},
|
|
#{REMARK},
|
|
NOW(),
|
|
#{IS_LAST},
|
|
#{WRITER}
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE
|
|
SET
|
|
SEQ = #{SEQ},
|
|
PART_OBJID = #{PART_OBJID},
|
|
PARTNER_RANK = #{PARTNER_RANK},
|
|
PARTNER_OBJID = #{PARTNER_OBJID},
|
|
PARTNER_PRICE = #{PARTNER_PRICE},
|
|
PARTNER_QTY = #{PARTNER_QTY},
|
|
APPLY_DATE = #{APPLY_DATE},
|
|
REMARK = #{REMARK},
|
|
REGDATE = NOW(),
|
|
IS_LAST = #{IS_LAST},
|
|
WRITER = #{WRITER}
|
|
</update>
|
|
|
|
<delete id="deleteOrderSpecMng" parameterType="map">
|
|
DELETE FROM ORDER_SPEC_MNG WHERE 1=1 <![CDATA[ AND 0 < POSITION(OBJID::TEXT || ',' IN #{checkArr}||',') ]]>
|
|
</delete>
|
|
|
|
<update id="insertOrderSpecMngHistory" parameterType="map">
|
|
INSERT INTO ORDER_SPEC_MNG_HISTORY
|
|
SELECT
|
|
*
|
|
FROM ORDER_SPEC_MNG WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<select id="getOrderSpecMngHistoryList" parameterType="map" resultType="map">
|
|
SELECT
|
|
OBJID,
|
|
SEQ,
|
|
PART_OBJID,
|
|
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID::VARCHAR = PARTNER_OBJID::VARCHAR) AS PARTNER_NAME,
|
|
PARTNER_RANK,
|
|
PARTNER_OBJID,
|
|
PARTNER_PRICE,
|
|
PARTNER_QTY,
|
|
APPLY_DATE,
|
|
REMARK,
|
|
REGDATE,
|
|
IS_LAST,
|
|
WRITER
|
|
FROM
|
|
ORDER_SPEC_MNG_HISTORY
|
|
WHERE 1=1
|
|
AND OBJID = #{OBJID}
|
|
ORDER BY REGDATE DESC
|
|
</select>
|
|
|
|
<select id="getSalesBOMList" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
PRODUCT_MGMT_OBJID,
|
|
SPEC_NAME,
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
PBM.PRODUCT_MGMT_OBJID,
|
|
PBM.SPEC_NAME,
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
FALSE
|
|
FROM
|
|
BOM_PART_QTY A
|
|
LEFT JOIN
|
|
PART_BOM_REPORT PBM
|
|
ON A.BOM_REPORT_OBJID = PBM.OBJID::TEXT
|
|
|
|
WHERE 1=1
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
AND A.BOM_REPORT_OBJID = #{bom_report_objid}
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
PBM.PRODUCT_MGMT_OBJID,
|
|
PBM.SPEC_NAME,
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.QTY,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH)
|
|
FROM
|
|
BOM_PART_QTY B
|
|
LEFT JOIN
|
|
PART_BOM_REPORT PBM
|
|
ON B.BOM_REPORT_OBJID = PBM.OBJID::TEXT
|
|
|
|
INNER JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
)
|
|
SELECT
|
|
V.PARENT_PART_NO
|
|
,V.QTY
|
|
,V.QTY AS ORG_QTY
|
|
,V.LEV
|
|
,V.SEQ
|
|
|
|
,P.OBJID AS PART_OBJID
|
|
,P.PART_NO
|
|
,P.PART_NAME
|
|
,P.UNIT_TITLE
|
|
,P.QTY
|
|
,P.MATERIAL
|
|
,P.WEIGHT
|
|
,P.PART_TYPE_TITLE
|
|
,P.REVISION
|
|
,P.EO_NO
|
|
,P.EO_DATE
|
|
,P.SPEC
|
|
|
|
,P.PART_REGDATE_TITLE
|
|
|
|
,(SELECT PRODUCT_CODE FROM PRODUCT_MGMT AS O WHERE O.OBJID::VARCHAR = V.PRODUCT_MGMT_OBJID::VARCHAR) AS PRODUCT_CODE
|
|
,V.SPEC_NAME
|
|
|
|
,SBPQ.PRODUCT_TYPE_CODE
|
|
|
|
,SBPQ.PARTNER_OBJID
|
|
,SBPQ.PARTNER_PRICE
|
|
,SBPQ.PARTNER_REMARK AS REMARK
|
|
|
|
,P.PART_NAME||'('||P.MATERIAL||','||P.SPEC||')/'||P.PART_NO AS TARGET_TITLE
|
|
FROM
|
|
VIEW_BOM V
|
|
LEFT OUTER JOIN <include refid="partMng.partMngBase"/> P
|
|
ON V.PART_NO = P.OBJID::TEXT
|
|
LEFT OUTER JOIN SALES_BOM_PART_QTY SBPQ
|
|
ON V.BOM_REPORT_OBJID::VARCHAR = SBPQ.BOM_REPORT_OBJID
|
|
AND V.OBJID::VARCHAR = SBPQ.OBJID
|
|
ORDER BY V.PATH,V.REGDATE
|
|
</select>
|
|
|
|
<delete id="deleteSalesRequestMaster" parameterType="map">
|
|
DELETE FROM SALES_REQUEST_MASTER WHERE OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
|
</delete>
|
|
|
|
<delete id="deleteSalesRequestPart" parameterType="map">
|
|
DELETE FROM SALES_REQUEST_PART WHERE SALES_REQUEST_MASTER_OBJID = #{SALES_REQUEST_MASTER_OBJID}
|
|
</delete>
|
|
|
|
<!-- 발주특성 중 검색조건에 해당하는 대상의 목록을 가져온다. -->
|
|
<select id="getOrderSpecMngTargetList" parameterType="map" resultType="map">
|
|
SELECT
|
|
OBJID,
|
|
SEQ,
|
|
PART_OBJID,
|
|
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID::VARCHAR = PARTNER_OBJID::VARCHAR) AS PARTNER_NAME,
|
|
PARTNER_RANK,
|
|
PARTNER_OBJID,
|
|
PARTNER_PRICE,
|
|
PARTNER_QTY,
|
|
APPLY_DATE,
|
|
REMARK,
|
|
|
|
REGDATE,
|
|
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
|
|
IS_LAST,
|
|
|
|
WRITER,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = OSM.WRITER) AS WRITER_NAME
|
|
FROM
|
|
ORDER_SPEC_MNG OSM
|
|
WHERE 1=1
|
|
|
|
<if test="OBJID != null and !''.equals(OBJID)">
|
|
AND OSM.OBJID = #{OBJID}
|
|
</if>
|
|
|
|
<if test="NOT_EXIST_OBJID != null and !''.equals(NOT_EXIST_OBJID)">
|
|
AND OSM.OBJID != #{NOT_EXIST_OBJID}
|
|
</if>
|
|
|
|
<if test="PART_OBJID != null and !''.equals(PART_OBJID)">
|
|
AND OSM.PART_OBJID = #{PART_OBJID}
|
|
</if>
|
|
|
|
<if test="PARTNER_OBJID != null and !''.equals(PARTNER_OBJID)">
|
|
AND OSM.PARTNER_OBJID = #{PARTNER_OBJID}
|
|
</if>
|
|
|
|
<!-- 파라미터 seq보다 숫자가 큰 -->
|
|
<if test="HIGHER_THEN_SEQ != null and !''.equals(HIGHER_THEN_SEQ)">
|
|
AND OSM.SEQ::NUMERIC >= #{HIGHER_THEN_SEQ}::NUMERIC
|
|
</if>
|
|
|
|
<!-- 파라미터 seq보다 숫자가 작은 -->
|
|
<if test="LOWER_THEN_SEQ != null and !''.equals(LOWER_THEN_SEQ)">
|
|
AND OSM.SEQ::NUMERIC <![CDATA[ <= ]]> #{LOWER_THEN_SEQ}::NUMERIC
|
|
</if>
|
|
|
|
<if test="SEQ != null and !''.equals(SEQ)">
|
|
AND OSM.SEQ = #{SEQ}
|
|
</if>
|
|
|
|
ORDER BY SEQ NULLS LAST
|
|
</select>
|
|
|
|
<!-- 저장 시 순위를 정렬한다. -->
|
|
<update id="updateOrderSpecMngSeq" parameterType="map">
|
|
UPDATE
|
|
ORDER_SPEC_MNG
|
|
SET SEQ = #{SEQ}
|
|
WHERE OBJID = #{OBJID}
|
|
</update>
|
|
|
|
<!-- 발주특성 저장 시 파트에 소싱정보를 업데이트 한다. -->
|
|
<update id="updateOrderSpecMng" parameterType="map">
|
|
UPDATE
|
|
PART_MNG
|
|
SET SOURCING_CODE = #{SOURCING_CODE}
|
|
WHERE OBJID::VARCHAR = #{OBJID}::VARCHAR
|
|
</update>
|
|
|
|
<!-- 파트에 연결된 발주관리 정보를 가져온다. -->
|
|
<select id="getOrderSpecMngPartnerList" parameterType="map" resultType="map">
|
|
SELECT
|
|
OBJID,
|
|
SEQ,
|
|
PART_OBJID,
|
|
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID::VARCHAR = PARTNER_OBJID::VARCHAR) AS PARTNER_NAME,
|
|
PARTNER_RANK,
|
|
PARTNER_OBJID,
|
|
PARTNER_PRICE,
|
|
PARTNER_QTY,
|
|
APPLY_DATE,
|
|
REMARK,
|
|
|
|
REGDATE,
|
|
TO_CHAR(REGDATE,'YYYY-MM-DD') AS REGDATE_TITLE,
|
|
|
|
IS_LAST,
|
|
|
|
WRITER,
|
|
(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = OSM.WRITER) AS WRITER_NAME
|
|
FROM
|
|
ORDER_SPEC_MNG OSM
|
|
WHERE 1=1
|
|
AND PART_OBJID = #{PART_OBJID}
|
|
ORDER BY
|
|
SEQ NULLS LAST,
|
|
APPLY_DATE DESC
|
|
</select>
|
|
|
|
<!-- BOM 정보를 가져온다. -->
|
|
<select id="getBOMReportData" parameterType="map" resultType="map">
|
|
SELECT
|
|
*
|
|
FROM
|
|
PART_BOM_REPORT
|
|
WHERE 1=1
|
|
AND OBJID::VARCHAR = #{bom_report_objid}::VARCHAR
|
|
</select>
|
|
|
|
<select id="getParsingData" parameterType="map" resultType="map">
|
|
SELECT
|
|
*
|
|
FROM SALES_BOM_PART_QTY_TEMP
|
|
</select>
|
|
|
|
<select id="salesBomReportList" parameterType="map" resultType="map">
|
|
SELECT PBR.OBJID
|
|
<!-- 수주정보 -->
|
|
,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR
|
|
,(SELECT SUPPLY_NAME FROM SUPPLY_MNG AS O WHERE O.OBJID::VARCHAR = PBR.CUSTOMER_OBJID) AS CUSTOMER_NAME
|
|
,CM.CUSTOMER_PROJECT_NAME
|
|
,CM.STATUS_CD
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = CM.STATUS_CD) AS STATUS_NAME
|
|
,CM.CATEGORY_CD
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = CM.CATEGORY_CD) AS CATEGORY_NAME
|
|
,CM.DUE_DATE
|
|
,CM.LOCATION
|
|
,CM.SETUP
|
|
,CM.FACILITY
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = CM.FACILITY) AS FACILITY_NAME
|
|
,CODE_NAME(CM.MANUFACTURE_PLANT) AS MANUFACTURE_PLANT_NAME
|
|
,CM.FACILITY_QTY
|
|
,CM.FACILITY_TYPE
|
|
,CM.FACILITY_DEPTH
|
|
,CM.PRODUCTION_NO
|
|
,CM.PROJECT_NAME
|
|
,CM.PROJECT_NO
|
|
,CODE_NAME(CM.CONTRACT_COMPANY) AS CONTRACT_COMPANY_NAME
|
|
,CM.CONTRACT_DEL_DATE
|
|
,CM.PO_NO
|
|
,CM.CONTRACT_DATE
|
|
,CM.REQ_DEL_DATE
|
|
|
|
<!-- 프로젝트정보 ※계약납기, 수주회사, 수주일, PO계약NO 없음.. -->
|
|
,CM.PROJECT_NO
|
|
<!-- 구매BOM -->
|
|
,PBR.UNIT_CODE
|
|
<!-- ,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = PBR.UNIT_CODE) AS UNIT_NAME -->
|
|
,(SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = PBR.UNIT_CODE) AS UNIT_NAME
|
|
,(SELECT COUNT(*) FROM BOM_PART_QTY AS A WHERE A.BOM_REPORT_OBJID = PBR.OBJID) AS BOM_CNT
|
|
,PBR.DEPLOY_DATE
|
|
,PBR.WRITER AS WRITER1
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PBR.WRITER) AS WRITER1_NAME
|
|
<!-- 구매BOM SBR -->
|
|
,SBR.OBJID AS SBR_OBJID
|
|
,TO_CHAR(SBR.REGDATE, 'YYYY-MM-DD') AS REGDATE2
|
|
,SBR.WRITER AS WRITER2
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = SBR.WRITER) AS WRITER2_NAME
|
|
|
|
,(SELECT COUNT(1) FROM SALES_BOM_REPORT_PART SBRP WHERE SBRP.PARENT_OBJID = PBR.OBJID) SALES_PART_CNT
|
|
|
|
FROM PART_BOM_REPORT PBR
|
|
LEFT OUTER JOIN SALES_BOM_REPORT SBR
|
|
ON PBR.OBJID = SBR.PARENT_OBJID
|
|
,PROJECT_MGMT CM
|
|
WHERE 1=1
|
|
AND PBR.CONTRACT_OBJID = CM.OBJID
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE, 'YYYY') = #{Year}
|
|
</if>
|
|
<if test="customer_cd !=null and customer_cd != '' ">
|
|
AND PBR.CUSTOMER_OBJID = #{customer_cd}
|
|
</if>
|
|
<if test="project_name != null and project_name != '' ">
|
|
AND CM.OBJID = #{project_name}
|
|
</if>
|
|
<if test="unit_code !=null and unit_code != '' ">
|
|
AND PBR.UNIT_CODE = #{unit_code}
|
|
</if>
|
|
<if test="writer2_id !=null and writer2_id != '' ">
|
|
AND SBR.WRITER = #{writer2_id}
|
|
</if>
|
|
<if test="SEARCH_UNIT_NAME != null and !''.equals(SEARCH_UNIT_NAME)">
|
|
AND (SELECT O.UNIT_NO || '-' || O.TASK_NAME FROM PMS_WBS_TASK AS O WHERE O.OBJID = PBR.UNIT_CODE) LIKE '%' || #{SEARCH_UNIT_NAME} || '%'
|
|
</if>
|
|
order by SUBSTRING(CM.PROJECT_NO,POSITION('-' IN CM.PROJECT_NO)+1) DESC
|
|
</select>
|
|
|
|
<select id="salesBomReportInfo" parameterType="map" resultType="map">
|
|
SELECT OBJID
|
|
,PARENT_OBJID
|
|
,SUPPLY_OBJID
|
|
,PRICE
|
|
,SUPPLY_OBJID1
|
|
,PRICE1
|
|
,SUPPLY_OBJID2
|
|
,PRICE2
|
|
,SUPPLY_OBJID3
|
|
,PRICE3
|
|
,SUPPLY_OBJID4
|
|
,PRICE4
|
|
,WRITER
|
|
FROM SALES_BOM_REPORT
|
|
WHERE OBJID = #{objId}
|
|
</select>
|
|
|
|
<select id="salesBomReportInfo2" parameterType="map" resultType="map">
|
|
SELECT OBJID
|
|
,PARENT_OBJID
|
|
,SUPPLY_OBJID
|
|
,PRICE
|
|
,SUPPLY_OBJID1
|
|
,PRICE1
|
|
,SUPPLY_OBJID2
|
|
,PRICE2
|
|
,SUPPLY_OBJID3
|
|
,PRICE3
|
|
,SUPPLY_OBJID4
|
|
,PRICE4
|
|
,WRITER
|
|
FROM SALES_BOM_REPORT
|
|
WHERE 1=1
|
|
<if test=" (SEARCH_OBJID == null or SEARCH_OBJID == '') and (SEARCH_PARENT_OBJID == null or SEARCH_PARENT_OBJID == '') ">
|
|
AND OBJID = '!@#$'
|
|
</if>
|
|
<if test="SEARCH_OBJID != null and SEARCH_OBJID != ''">
|
|
AND OBJID = #{SEARCH_OBJID}
|
|
</if>
|
|
<if test="SEARCH_PARENT_OBJID != null and SEARCH_PARENT_OBJID != ''">
|
|
AND PARENT_OBJID = #{SEARCH_PARENT_OBJID}
|
|
</if>
|
|
|
|
</select>
|
|
|
|
|
|
<update id="mergeSalesBomReportInfo" parameterType="map">
|
|
INSERT INTO SALES_BOM_REPORT (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,SUPPLY_OBJID
|
|
,PRICE
|
|
,SUPPLY_OBJID1
|
|
,PRICE1
|
|
,SUPPLY_OBJID2
|
|
,PRICE2
|
|
,SUPPLY_OBJID3
|
|
,PRICE3
|
|
,SUPPLY_OBJID4
|
|
,PRICE4
|
|
,WRITER
|
|
,REGDATE
|
|
) VALUES (
|
|
#{OBJID }
|
|
,#{PARENT_OBJID }
|
|
,#{SUPPLY_OBJID }
|
|
,#{PRICE }
|
|
,#{SUPPLY_OBJID1}
|
|
,#{PRICE1 }
|
|
,#{SUPPLY_OBJID2}
|
|
,#{PRICE2 }
|
|
,#{SUPPLY_OBJID3}
|
|
,#{PRICE3 }
|
|
,#{SUPPLY_OBJID4}
|
|
,#{PRICE4 }
|
|
,#{writer }
|
|
,NOW()
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
SUPPLY_OBJID = #{SUPPLY_OBJID }
|
|
,PRICE = #{PRICE }
|
|
,SUPPLY_OBJID1 = #{SUPPLY_OBJID1}
|
|
,PRICE1 = #{PRICE1 }
|
|
,SUPPLY_OBJID2 = #{SUPPLY_OBJID2}
|
|
,PRICE2 = #{PRICE2 }
|
|
,SUPPLY_OBJID3 = #{SUPPLY_OBJID3}
|
|
,PRICE3 = #{PRICE3 }
|
|
,SUPPLY_OBJID4 = #{SUPPLY_OBJID4}
|
|
,PRICE4 = #{PRICE4 }
|
|
,WRITER = #{writer }
|
|
,REGDATE = NOW()
|
|
</update>
|
|
|
|
<update id="mergeSalesBomReportInfo2" parameterType="map">
|
|
INSERT INTO SALES_BOM_REPORT (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,SUPPLY_OBJID
|
|
,PRICE
|
|
,SUPPLY_OBJID1
|
|
,PRICE1
|
|
,SUPPLY_OBJID2
|
|
,PRICE2
|
|
,SUPPLY_OBJID3
|
|
,PRICE3
|
|
,SUPPLY_OBJID4
|
|
,PRICE4
|
|
,WRITER
|
|
,REGDATE
|
|
) VALUES (
|
|
#{OBJID }
|
|
,#{PARENT_OBJID }
|
|
,#{SUPPLY_OBJID }
|
|
,#{PRICE }
|
|
,#{SUPPLY_OBJID1}
|
|
,#{PRICE1 }
|
|
,#{SUPPLY_OBJID2}
|
|
,#{PRICE2 }
|
|
,#{SUPPLY_OBJID3}
|
|
,#{PRICE3 }
|
|
,#{SUPPLY_OBJID4}
|
|
,#{PRICE4 }
|
|
,#{writer }
|
|
,NOW()
|
|
) ON CONFLICT (PARENT_OBJID) DO
|
|
UPDATE SET
|
|
SUPPLY_OBJID = #{SUPPLY_OBJID }
|
|
,PRICE = #{PRICE }
|
|
,SUPPLY_OBJID1 = #{SUPPLY_OBJID1}
|
|
,PRICE1 = #{PRICE1 }
|
|
,SUPPLY_OBJID2 = #{SUPPLY_OBJID2}
|
|
,PRICE2 = #{PRICE2 }
|
|
,SUPPLY_OBJID3 = #{SUPPLY_OBJID3}
|
|
,PRICE3 = #{PRICE3 }
|
|
,SUPPLY_OBJID4 = #{SUPPLY_OBJID4}
|
|
,PRICE4 = #{PRICE4 }
|
|
,MODIFIER = #{writer }
|
|
,UPDATE_DATE = NOW()
|
|
</update>
|
|
|
|
<select id="salesBomReportPartList" parameterType="map" resultType="map">
|
|
WITH RECURSIVE VIEW_BOM(
|
|
BOM_REPORT_OBJID,
|
|
OBJID,
|
|
PARENT_OBJID,
|
|
CHILD_OBJID,
|
|
PARENT_PART_NO,
|
|
PART_NO,
|
|
LAST_PART_OBJID,
|
|
QTY,
|
|
REGDATE,
|
|
SEQ,
|
|
LEV,
|
|
PATH,
|
|
PATH2,
|
|
CYCLE
|
|
) AS (
|
|
SELECT
|
|
A.BOM_REPORT_OBJID,
|
|
A.OBJID,
|
|
A.PARENT_OBJID,
|
|
A.CHILD_OBJID,
|
|
A.PARENT_PART_NO,
|
|
A.PART_NO,
|
|
A.LAST_PART_OBJID,
|
|
A.QTY,
|
|
A.REGDATE,
|
|
A.SEQ,
|
|
1,
|
|
ARRAY [A.CHILD_OBJID::TEXT],
|
|
ARRAY [A.SEQ::TEXT],
|
|
FALSE
|
|
FROM
|
|
BOM_PART_QTY A
|
|
WHERE 1=1
|
|
AND (A.PARENT_OBJID IS NULL OR A.PARENT_OBJID = '')
|
|
AND A.BOM_REPORT_OBJID = #{parent_objId}
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
<!--
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
-->
|
|
</when>
|
|
<otherwise>
|
|
AND STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
</otherwise>
|
|
</choose>
|
|
|
|
UNION ALL
|
|
|
|
SELECT
|
|
B.BOM_REPORT_OBJID,
|
|
B.OBJID,
|
|
B.PARENT_OBJID,
|
|
B.CHILD_OBJID,
|
|
B.PARENT_PART_NO,
|
|
B.PART_NO,
|
|
B.LAST_PART_OBJID,
|
|
B.QTY,
|
|
B.REGDATE,
|
|
B.SEQ,
|
|
LEV + 1,
|
|
PATH||B.CHILD_OBJID::TEXT,
|
|
PATH2||B.SEQ::TEXT,
|
|
B.PARENT_OBJID = ANY(PATH)
|
|
FROM
|
|
BOM_PART_QTY B
|
|
JOIN
|
|
VIEW_BOM
|
|
ON B.PARENT_OBJID = VIEW_BOM.CHILD_OBJID
|
|
AND VIEW_BOM.BOM_REPORT_OBJID = B.BOM_REPORT_OBJID
|
|
<choose>
|
|
<when test="search_type != null and !''.equals(search_type) and 'working'.equals(search_type)">
|
|
<!--
|
|
AND (BQP.STATUS IS NULL OR BQP.STATUS = '')
|
|
-->
|
|
</when>
|
|
<otherwise>
|
|
AND B.STATUS IN ('beforeEdit', 'editing','deleting', 'deploy')
|
|
</otherwise>
|
|
</choose>
|
|
)
|
|
SELECT
|
|
V.BOM_REPORT_OBJID AS PARENT_OBJID
|
|
,V.PART_NO AS PART_OBJID
|
|
,V.CHILD_OBJID
|
|
,V.PARENT_PART_NO
|
|
,PM.OBJID OBJID_PART
|
|
,PM.PART_NO
|
|
,PM.PART_NAME
|
|
,V.LEV
|
|
,V.QTY
|
|
,(SELECT MAX(LEV) FROM VIEW_BOM) AS MAX_LEV
|
|
,SP.OBJID
|
|
,V.LAST_PART_OBJID
|
|
,NVL(V.LAST_PART_OBJID, V.PART_NO) LAST_PART_OBJID2
|
|
|
|
,SP.PRICE
|
|
,SP.SUPPLY_OBJID
|
|
,(SELECT ASM.SUPPLY_NAME FROM ADMIN_SUPPLY_MNG ASM WHERE 1=1 AND ASM.OBJID::VARCHAR = SP.SUPPLY_OBJID::VARCHAR) AS SUPPLY_NAME
|
|
|
|
,SP.PRICE1
|
|
,SP.SUPPLY_OBJID1
|
|
,(SELECT ASM.SUPPLY_NAME FROM ADMIN_SUPPLY_MNG ASM WHERE 1=1 AND ASM.OBJID::VARCHAR = SP.SUPPLY_OBJID1::VARCHAR) AS SUPPLY_NAME1
|
|
|
|
,SP.PRICE2
|
|
,SP.SUPPLY_OBJID2
|
|
,(SELECT ASM.SUPPLY_NAME FROM ADMIN_SUPPLY_MNG ASM WHERE 1=1 AND ASM.OBJID::VARCHAR = SP.SUPPLY_OBJID2::VARCHAR) AS SUPPLY_NAME2
|
|
|
|
,SP.PRICE3
|
|
,SP.SUPPLY_OBJID3
|
|
,(SELECT ASM.SUPPLY_NAME FROM ADMIN_SUPPLY_MNG ASM WHERE 1=1 AND ASM.OBJID::VARCHAR = SP.SUPPLY_OBJID3::VARCHAR) AS SUPPLY_NAME3
|
|
|
|
,SP.PRICE4
|
|
,SP.SUPPLY_OBJID4
|
|
,(SELECT ASM.SUPPLY_NAME FROM ADMIN_SUPPLY_MNG ASM WHERE 1=1 AND ASM.OBJID::VARCHAR = SP.SUPPLY_OBJID4::VARCHAR) AS SUPPLY_NAME4
|
|
|
|
,SP.PRICE_SUM
|
|
,SP.PRE_BOOKING_QTY
|
|
,PM.SPEC
|
|
,PM.POST_PROCESSING
|
|
,PM.MAKER
|
|
,PM.REMARK
|
|
,PM.REVISION
|
|
,PM.EO_NO
|
|
,(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = PM.PART_TYPE) AS PART_TYPE_NAME
|
|
,(COALESCE((SELECT SUM(CASE WHEN (RECEIPT_QTY IS NULL OR RECEIPT_QTY ='')
|
|
THEN 0
|
|
ELSE RECEIPT_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT AS IM
|
|
INNER JOIN INVENTORY_MGMT_IN AS O
|
|
ON O.PARENT_OBJID = IM.OBJID
|
|
WHERE IM.PART_OBJID = PM.OBJID
|
|
),0) - COALESCE((SELECT SUM(CASE WHEN (REQUEST_QTY IS NULL OR REQUEST_QTY ='')
|
|
THEN 0
|
|
ELSE REQUEST_QTY::NUMERIC END)
|
|
FROM INVENTORY_MGMT AS IM
|
|
INNER JOIN INVENTORY_MGMT_OUT AS O
|
|
ON O.PARENT_OBJID = IM.OBJID
|
|
WHERE IM.PART_OBJID = PM.OBJID
|
|
),0)) AS STOCK_QTY
|
|
,(SELECT SUM(NVL(SBP.PRE_BOOKING_QTY, '0')::NUMERIC) FROM SALES_BOM_REPORT_PART SBP where SBP.PART_OBJID = PM.OBJID GROUP BY PART_OBJID) AS TOTAL_PRE_BOOKING_QTY
|
|
FROM VIEW_BOM V
|
|
<!--
|
|
(SELECT *
|
|
,( SELECT OBJID
|
|
FROM PART_MNG PM1
|
|
WHERE IS_LAST = '1'
|
|
AND PART_NO = (
|
|
( SELECT PM2.PART_NO
|
|
FROM PART_MNG PM2
|
|
WHERE PM2.OBJID = V.PART_NO)
|
|
)
|
|
) LAST_PART_OBJID
|
|
FROM VIEW_BOM V
|
|
) AS V
|
|
-->
|
|
LEFT OUTER JOIN SALES_BOM_REPORT_PART AS SP
|
|
ON SP.PARENT_OBJID = #{parent_objId}
|
|
AND BOM_PART_QTY_OBJID = V.CHILD_OBJID
|
|
<!-- 231208 같은 part가 여러개일경우 중복건 발생으로 위조건으로 대체
|
|
AND V.PART_NO = SP.PART_OBJID
|
|
AND SP.PARENT_PART_OBJID = V.PARENT_PART_NO
|
|
-->
|
|
LEFT OUTER JOIN PART_MNG PM
|
|
ON nvl(V.LAST_PART_OBJID, V.PART_NO) = PM.OBJID::VARCHAR
|
|
<!-- 231208 설변된 최종part로 연결되게 수정
|
|
ON V.PART_NO = PM.OBJID::VARCHAR
|
|
-->
|
|
WHERE 1=1
|
|
|
|
<if test="SEARCH_PART_NO != null and SEARCH_PART_NO != ''">
|
|
AND UPPER(PM.PART_NO) LIKE UPPER('%${SEARCH_PART_NO}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NO_END != null and SEARCH_PART_NO_END != ''">
|
|
AND UPPER(PM.PART_NO) LIKE UPPER('%${SEARCH_PART_NO_END}')
|
|
</if>
|
|
<if test="SEARCH_PART_NO_EQ != null and SEARCH_PART_NO_EQ != ''">
|
|
AND UPPER(PM.PART_NO) = #{SEARCH_PART_NO_EQ}
|
|
</if>
|
|
<if test="SEARCH_PART_NAME != null and SEARCH_PART_NAME != ''">
|
|
AND UPPER(PM.PART_NAME) LIKE UPPER('%${SEARCH_PART_NAME}%')
|
|
</if>
|
|
<if test="SEARCH_PART_NAME_EQ != null and SEARCH_PART_NAME_EQ != ''">
|
|
AND TRIM(UPPER(PM.PART_NAME)) = TRIM(UPPER(#{SEARCH_PART_NAME_EQ}))
|
|
</if>
|
|
|
|
|
|
<if test='SEARCH_PO_Y != null and SEARCH_PO_Y != "" and "Y".equals(SEARCH_PO_Y) '>
|
|
AND (V.LEV < 3
|
|
OR EXISTS (
|
|
SELECT (1)
|
|
FROM PURCHASE_ORDER_PART PO
|
|
,PURCHASE_ORDER_MASTER POM
|
|
WHERE 1=1
|
|
AND POM.BOM_REPORT_OBJID = v.BOM_REPORT_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
|
|
AND NVL(V.LAST_PART_OBJID, V.PART_NO) = PO.PART_OBJID
|
|
)
|
|
)
|
|
</if>
|
|
<if test='SEARCH_PO_N != null and SEARCH_PO_N != "" and "Y".equals(SEARCH_PO_N) '>
|
|
AND (V.LEV < 3
|
|
OR NOT EXISTS (
|
|
SELECT (1)
|
|
FROM PURCHASE_ORDER_PART PO
|
|
,PURCHASE_ORDER_MASTER POM
|
|
WHERE 1=1
|
|
AND POM.BOM_REPORT_OBJID = v.BOM_REPORT_OBJID
|
|
AND POM.STATUS = 'approvalComplete'
|
|
AND POM.OBJID = PO.PURCHASE_ORDER_MASTER_OBJID
|
|
AND NVL(V.LAST_PART_OBJID, V.PART_NO) = PO.PART_OBJID
|
|
)
|
|
)
|
|
</if>
|
|
|
|
<!--
|
|
ORDER BY V.SEQ
|
|
-->
|
|
ORDER BY V.PATH2
|
|
</select>
|
|
<delete id="deleteSalesBomReportPart" parameterType="map">
|
|
DELETE FROM SALES_BOM_REPORT_PART WHERE PARENT_OBJID = #{PARENT_OBJID}
|
|
</delete>
|
|
<update id="mergeSalesBomReportPart" parameterType="map">
|
|
INSERT INTO SALES_BOM_REPORT_PART (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,PART_OBJID
|
|
,SUPPLY_OBJID
|
|
,PRICE
|
|
,SUPPLY_OBJID1
|
|
,PRICE1
|
|
,SUPPLY_OBJID2
|
|
,PRICE2
|
|
,SUPPLY_OBJID3
|
|
,PRICE3
|
|
,SUPPLY_OBJID4
|
|
,PRICE4
|
|
,PRICE_SUM
|
|
,WRITER
|
|
,REGDATE
|
|
,PARENT_PART_OBJID
|
|
,BOM_PART_QTY_OBJID
|
|
,PRE_BOOKING_QTY
|
|
) VALUES (
|
|
#{OBJID }
|
|
,#{PARENT_OBJID }
|
|
,#{PART_OBJID }
|
|
,#{SUPPLY_OBJID }
|
|
,#{PRICE }
|
|
,#{SUPPLY_OBJID1}
|
|
,#{PRICE1 }
|
|
,#{SUPPLY_OBJID2}
|
|
,#{PRICE2 }
|
|
,#{SUPPLY_OBJID3}
|
|
,#{PRICE3 }
|
|
,#{SUPPLY_OBJID4}
|
|
,#{PRICE4 }
|
|
,#{PRICE_SUM }
|
|
,#{writer }
|
|
,NOW()
|
|
,#{PARENT_PART_NO }
|
|
,#{CHILD_OBJID }
|
|
,#{PRE_BOOKING_QTY }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
SUPPLY_OBJID = #{SUPPLY_OBJID }
|
|
,PRICE = #{PRICE }
|
|
,SUPPLY_OBJID1 = #{SUPPLY_OBJID1}
|
|
,PRICE1 = #{PRICE1 }
|
|
,SUPPLY_OBJID2 = #{SUPPLY_OBJID2}
|
|
,PRICE2 = #{PRICE2 }
|
|
,SUPPLY_OBJID3 = #{SUPPLY_OBJID3}
|
|
,PRICE3 = #{PRICE3 }
|
|
,SUPPLY_OBJID4 = #{SUPPLY_OBJID4}
|
|
,PRICE4 = #{PRICE4 }
|
|
,PRICE_SUM = #{PRICE_SUM }
|
|
,MODIFIER = #{writer }
|
|
,UPDATE_DATE = NOW()
|
|
,PRE_BOOKING_QTY = #{PRE_BOOKING_QTY}
|
|
</update>
|
|
|
|
<update id="mergeSalesBomReportPart2" parameterType="map">
|
|
INSERT INTO SALES_BOM_REPORT_PART (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,PART_OBJID
|
|
,SUPPLY_OBJID
|
|
,PRICE
|
|
,SUPPLY_OBJID1
|
|
,PRICE1
|
|
,SUPPLY_OBJID2
|
|
,PRICE2
|
|
,SUPPLY_OBJID3
|
|
,PRICE3
|
|
,SUPPLY_OBJID4
|
|
,PRICE4
|
|
,PRICE_SUM
|
|
,WRITER
|
|
,REGDATE
|
|
,PARENT_PART_OBJID
|
|
,BOM_PART_QTY_OBJID
|
|
) VALUES (
|
|
#{OBJID }
|
|
,#{PARENT_OBJID }
|
|
,#{PART_OBJID }
|
|
,#{SUPPLY_OBJID }
|
|
,#{PRICE }
|
|
,#{SUPPLY_OBJID1}
|
|
,#{PRICE1 }
|
|
,#{SUPPLY_OBJID2}
|
|
,#{PRICE2 }
|
|
,#{SUPPLY_OBJID3}
|
|
,#{PRICE3 }
|
|
,#{SUPPLY_OBJID4}
|
|
,#{PRICE4 }
|
|
,#{PRICE_SUM }
|
|
,#{writer }
|
|
,NOW()
|
|
,#{PARENT_PART_NO }
|
|
,#{CHILD_OBJID }
|
|
) ON CONFLICT (PARENT_OBJID, PART_OBJID) DO
|
|
UPDATE SET
|
|
SUPPLY_OBJID = #{SUPPLY_OBJID }
|
|
,PRICE = #{PRICE }
|
|
,SUPPLY_OBJID1 = #{SUPPLY_OBJID1}
|
|
,PRICE1 = #{PRICE1 }
|
|
,SUPPLY_OBJID2 = #{SUPPLY_OBJID2}
|
|
,PRICE2 = #{PRICE2 }
|
|
,SUPPLY_OBJID3 = #{SUPPLY_OBJID3}
|
|
,PRICE3 = #{PRICE3 }
|
|
,SUPPLY_OBJID4 = #{SUPPLY_OBJID4}
|
|
,PRICE4 = #{PRICE4 }
|
|
,PRICE_SUM = #{PRICE_SUM }
|
|
,MODIFIER = #{writer }
|
|
,UPDATE_DATE = NOW()
|
|
<!--
|
|
WHERE PARENT_OBJID = #{PARENT_OBJID}
|
|
AND PART_OBJID = #{PART_OBJID}
|
|
-->
|
|
</update>
|
|
|
|
<update id="updateSalesBomReportPartPrice" parameterType="map">
|
|
UPDATE SALES_BOM_REPORT_PART SET
|
|
PRICE = #{PRICE }
|
|
,PRICE1 = #{PRICE1 }
|
|
,PRICE2 = #{PRICE2 }
|
|
,PRICE3 = #{PRICE3 }
|
|
,PRICE4 = #{PRICE4 }
|
|
,PRICE_SUM = #{PRICE_SUM }
|
|
<!--
|
|
,WRITER = #{writer }
|
|
,REGDATE = NOW()
|
|
-->
|
|
WHERE OBJID = #{OBJID }
|
|
</update>
|
|
|
|
<select id="salesPartChgList" parameterType="map" resultType="map">
|
|
SELECT PM.OBJID
|
|
,PM.EO_NO
|
|
,TO_CHAR(CM.REGDATE, 'YYYY') AS CM_YEAR
|
|
,CM.CUSTOMER_PROJECT_NAME
|
|
,COALESCE(CM2.PROJECT_NO, CM.PROJECT_NO) PROJECT_NO
|
|
,(SELECT PART_NO||' '||PART_NAME FROM PART_MNG SP WHERE SP.OBJID = PM.PARENT_PART_NO) PARENT_PART_INFO
|
|
,PM.PART_NO
|
|
,PM.PART_NAME
|
|
,CASE WHEN PM.BOM_QTY_STATUS = 'adding' THEN PM.QTY_TEMP
|
|
ELSE PM.QTY END QTY
|
|
,CASE
|
|
WHEN PM.BOM_QTY_STATUS = 'adding' THEN ''
|
|
WHEN PM.BOM_QTY_STATUS = 'beforeEdit' and PM.QTY = PM.QTY_TEMP THEN ''
|
|
ELSE PM.QTY_TEMP END QTY_TEMP
|
|
,'' AS EO_STEP
|
|
,PM.CHANGE_TYPE
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = PM.CHANGE_TYPE) AS CHANGE_TYPE_NAME
|
|
,PM.CHANGE_OPTION
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = PM.CHANGE_OPTION) AS CHANGE_OPTION_NAME
|
|
,PM.REVISION
|
|
,PM.EO_DATE
|
|
,PM.PART_TYPE
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = PM.PART_TYPE) AS PART_TYPE_NAME
|
|
,PM.WRITER
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PM.WRITER) AS WRITER_NAME
|
|
,'' AS STATUS
|
|
,SPC.OBJID AS SPC_OBJID
|
|
,SPC.CONFIRM_DATE
|
|
,SPC.WRITER AS WRTIER1
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = SPC.WRITER) AS WRITER1_NAME
|
|
,SPC.ACT_CD
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = SPC.ACT_CD) AS ACT_NAME
|
|
,SPC.PURCHASE_ORDER_MASTER_OBJID
|
|
,SPC.NOTE
|
|
,POM.PURCHASE_ORDER_NO
|
|
,SPC.ACT_STATUS
|
|
,(CASE WHEN SPC.ACT_STATUS IS NULL THEN '0001063' ELSE SPC.ACT_STATUS END) AS ACT_STATUS
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O
|
|
WHERE O.CODE_ID = (CASE WHEN SPC.ACT_STATUS IS NULL THEN '0001063' ELSE SPC.ACT_STATUS END)
|
|
) AS ACT_STATUS_NAME
|
|
,TO_CHAR(PM.HIS_REG_DATE,'YYYY-MM-DD') AS HIS_REG_DATE_TITLE
|
|
,PM.BOM_REPORT_OBJID
|
|
,PM.QTY_CHILD_OBJID
|
|
FROM PART_MNG_HISTORY PM
|
|
LEFT OUTER JOIN SALES_PART_CHG SPC
|
|
ON PM.OBJID::varchar = SPC.PART_OBJID
|
|
AND PM.QTY_CHILD_OBJID = SPC.QTY_CHILD_OBJID
|
|
LEFT OUTER JOIN PURCHASE_ORDER_MASTER POM
|
|
ON SPC.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID
|
|
LEFT OUTER JOIN PART_BOM_REPORT B
|
|
ON PM.BOM_REPORT_OBJID = B.OBJID
|
|
LEFT OUTER JOIN PROJECT_MGMT CM
|
|
ON PM.CONTRACT_OBJID = CM.OBJID
|
|
LEFT OUTER JOIN PROJECT_MGMT CM2
|
|
ON B.CONTRACT_OBJID = CM2.OBJID
|
|
WHERE 1=1
|
|
<!-- 파트 신규등록건 조회 제외 -->
|
|
AND NOT ( PM.HIS_STATUS = 'DEPLOY'
|
|
AND PM.CHANGE_TYPE IS NULL
|
|
AND PM.REVISION = 'RE')
|
|
AND PM.REVISION IS NOT NULL
|
|
<!-- 240520 조건 추가-->
|
|
AND NVL(PM.BOM_STATUS, '') = 'deploy'
|
|
<if test="Year !=null and Year != '' ">
|
|
AND TO_CHAR(CM.REGDATE, 'YYYY') = #{Year}
|
|
</if>
|
|
<!-- <if test="contract_objid !=null and contract_objid != '' ">
|
|
AND CM.OBJID = #{contract_objid}
|
|
</if> -->
|
|
<if test="project_nos != null and project_nos != ''">
|
|
AND COALESCE(CM2.OBJID, CM.OBJID) IN
|
|
<foreach item="state" collection="project_nos.split(',')"
|
|
open="(" separator="," close=")">
|
|
#{state}
|
|
</foreach>
|
|
</if>
|
|
|
|
<if test="part_no !=null and part_no != '' ">
|
|
AND PM.PART_NO = #{part_no}
|
|
</if>
|
|
<if test="part_name !=null and part_name != '' ">
|
|
AND PM.PART_NAME = #{part_name}
|
|
</if>
|
|
<if test="change_option !=null and change_option != '' ">
|
|
AND PM.CHANGE_OPTION = #{change_option}
|
|
</if>
|
|
<if test="eo_date_start !=null and eo_date_start != '' ">
|
|
AND TO_DATE(PM.EO_DATE, 'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{eo_date_start}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="eo_date_end !=null and eo_date_end != '' ">
|
|
AND TO_DATE(PM.EO_DATE, 'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{eo_date_end} , 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="change_type !=null and change_type != '' ">
|
|
AND PM.CHANGE_TYPE = #{change_type}
|
|
</if>
|
|
<if test="part_type !=null and part_type != '' ">
|
|
AND PM.PART_TYPE = #{part_type}
|
|
</if>
|
|
<if test="part_writer !=null and part_writer != '' ">
|
|
AND PM.WRITER = #{part_writer}
|
|
</if>
|
|
<if test="sales_writer !=null and sales_writer != '' ">
|
|
AND SPC.WRITER = #{sales_writer}
|
|
</if>
|
|
<if test="revision !=null and revision != '' ">
|
|
AND PM.REVISION = #{revision}
|
|
</if>
|
|
<if test="confirm_date_start !=null and confirm_date_start != '' ">
|
|
AND TO_DATE(SPC.CONFIRM_DATE,'YYYY-MM-DD') <![CDATA[ >= ]]> TO_DATE(#{confirm_date_start}, 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="confirm_date_end !=null and confirm_date_end != '' ">
|
|
AND TO_DATE(SPC.CONFIRM_DATE,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{confirm_date_end} , 'YYYY-MM-DD')
|
|
</if>
|
|
<if test="act_cd !=null and act_cd != '' ">
|
|
AND SPC.ACT_CD = #{act_cd}
|
|
</if>
|
|
<if test="act_status !=null and act_status != '' ">
|
|
AND (CASE WHEN SPC.ACT_STATUS IS NULL THEN '0001063' ELSE SPC.ACT_STATUS END) = #{act_status}
|
|
</if>
|
|
ORDER BY COALESCE(PM.HIS_REG_DATE, PM.REG_DATE) DESC, PM.PART_NO
|
|
</select>
|
|
|
|
<select id="salesPartChgInfo" parameterType="map" resultType="map">
|
|
SELECT SPC.OBJID
|
|
,SPC.PART_OBJID
|
|
,SPC.CONFIRM_DATE
|
|
,SPC.ACT_CD
|
|
,SPC.PURCHASE_ORDER_MASTER_OBJID
|
|
,SPC.NOTE
|
|
,SPC.REGDATE
|
|
,SPC.WRITER
|
|
,SPC.ACT_STATUS
|
|
,PM.EO_NO
|
|
,PM.PART_NO
|
|
,CM.PROJECT_NO
|
|
FROM SALES_PART_CHG SPC
|
|
,PART_MNG_HISTORY PM
|
|
,PROJECT_MGMT CM
|
|
WHERE SPC.PART_OBJID = PM.OBJID::varchar
|
|
AND PM.CONTRACT_OBJID = CM.OBJID
|
|
AND SPC.OBJID = #{objId}
|
|
limit 1
|
|
</select>
|
|
<update id="mergeSalesPartChgInfo" parameterType="map">
|
|
INSERT INTO SALES_PART_CHG (
|
|
OBJID
|
|
,PART_OBJID
|
|
,CONFIRM_DATE
|
|
,ACT_CD
|
|
,PURCHASE_ORDER_MASTER_OBJID
|
|
,NOTE
|
|
,WRITER
|
|
,REGDATE
|
|
,ACT_STATUS
|
|
,BOM_REPORT_OBJID
|
|
,QTY_CHILD_OBJID
|
|
) VALUES (
|
|
#{OBJID }
|
|
,#{PART_OBJID }
|
|
,#{CONFIRM_DATE}
|
|
,#{ACT_CD }
|
|
,#{PURCHASE_ORDER_MASTER_OBJID}
|
|
,#{NOTE }
|
|
,#{writer }
|
|
,NOW()
|
|
,#{ACT_STATUS }
|
|
,#{BOM_REPORT_OBJID }
|
|
,#{QTY_CHILD_OBJID }
|
|
<!--
|
|
,(SELECT BOM_REPORT_OBJID FROM PART_MNG_HISTORY H WHERE H.OBJID = #{PART_OBJID}::NUMERIC)
|
|
,(SELECT QTY_CHILD_OBJID FROM PART_MNG_HISTORY H WHERE H.OBJID = #{PART_OBJID}::NUMERIC)
|
|
-->
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
PART_OBJID = #{PART_OBJID }
|
|
,CONFIRM_DATE = #{CONFIRM_DATE}
|
|
,ACT_CD = #{ACT_CD }
|
|
,PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
|
|
,NOTE = #{NOTE }
|
|
,WRITER = #{writer }
|
|
,REGDATE = NOW()
|
|
,ACT_STATUS = #{ACT_STATUS }
|
|
</update>
|
|
|
|
<select id="salesLongDeliveryList" parameterType="map" resultType="map">
|
|
SELECT T1.OBJID
|
|
,T1.LD_PART_NAME
|
|
,T1.SPEC
|
|
,T1.FORM_NO
|
|
,T1.MAKER
|
|
,T1.MATERIAL_CODE
|
|
,T1.SUPPLY_OBJID
|
|
,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG S WHERE S.OBJID = T1.SUPPLY_OBJID::NUMERIC) AS SUPPLY_NAME
|
|
,T1.REGDATE
|
|
,T1.WRITER
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T1.WRITER) AS WRITER_NAME
|
|
,T1.LOCATION
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T1.LOCATION) AS LOCATION_NAME
|
|
,T1.PRICE
|
|
,(T1.PRICE::NUMERIC * (SELECT SUM(COALESCE(INPUT_QTY, '0')::NUMERIC) FROM SALES_LONG_DELIVERY_INPUT T2 WHERE T1.OBJID = T2.PARENT_OBJID)) AS PRICE_SUM
|
|
|
|
,(SELECT SUM(COALESCE(INPUT_QTY, '0')::NUMERIC) FROM SALES_LONG_DELIVERY_INPUT T2 WHERE T1.OBJID = T2.PARENT_OBJID AND (CONTRACT_OBJID = '' or CONTRACT_OBJID IS NULL))
|
|
- COALESCE((SELECT SUM(COALESCE(INPUT_QTY, '0')::NUMERIC) FROM SALES_LONG_DELIVERY_INPUT T2 WHERE T1.OBJID = T2.PARENT_OBJID AND CONTRACT_OBJID != '' AND CONTRACT_OBJID IS NOT NULL), 0) AS INPUT_QTY
|
|
,(SELECT COALESCE(COUNT(1), 0) FROM SALES_LONG_DELIVERY_INPUT T2 WHERE T1.OBJID = T2.PARENT_OBJID) AS INPUT_CNT
|
|
|
|
,T3.*
|
|
FROM SALES_LONG_DELIVERY T1
|
|
LEFT OUTER JOIN (SELECT PARENT_OBJID
|
|
<!-- RIGHT JOIN (SELECT PARENT_OBJID -->
|
|
,SUM(QTY::NUMERIC) AS M_TOTAL
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 1 THEN QTY::NUMERIC ELSE NULL END) AS M01
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 2 THEN QTY::NUMERIC ELSE NULL END) AS M02
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 3 THEN QTY::NUMERIC ELSE NULL END) AS M03
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 4 THEN QTY::NUMERIC ELSE NULL END) AS M04
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 5 THEN QTY::NUMERIC ELSE NULL END) AS M05
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 6 THEN QTY::NUMERIC ELSE NULL END) AS M06
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 7 THEN QTY::NUMERIC ELSE NULL END) AS M07
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 8 THEN QTY::NUMERIC ELSE NULL END) AS M08
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 9 THEN QTY::NUMERIC ELSE NULL END) AS M09
|
|
,SUM(CASE WHEN MONTH::NUMERIC =10 THEN QTY::NUMERIC ELSE NULL END) AS M10
|
|
,SUM(CASE WHEN MONTH::NUMERIC =11 THEN QTY::NUMERIC ELSE NULL END) AS M11
|
|
,SUM(CASE WHEN MONTH::NUMERIC =12 THEN QTY::NUMERIC ELSE NULL END) AS M12
|
|
FROM SALES_LONG_DELIVERY_PREDICT
|
|
GROUP BY PARENT_OBJID
|
|
) AS T3
|
|
ON T1.OBJID = T3.PARENT_OBJID
|
|
WHERE 1=1
|
|
|
|
<if test="ld_part_name !=null and ld_part_name != '' ">
|
|
AND T1.LD_PART_NAME LIKE '%'|| #{ld_part_name} ||'%'
|
|
</if>
|
|
<if test="Location !=null and Location != '' ">
|
|
AND T1.LOCATION = #{Location}
|
|
</if>
|
|
<if test="spec !=null and spec != '' ">
|
|
AND T1.SPEC LIKE '%'|| #{spec} ||'%'
|
|
</if>
|
|
<if test="maker !=null and maker != '' ">
|
|
AND T1.MAKER LIKE '%'|| #{maker} ||'%'
|
|
</if>
|
|
<if test="material_code !=null and material_code != '' ">
|
|
AND T1.MATERIAL_CODE LIKE '%'|| #{material_code} ||'%'
|
|
</if>
|
|
<if test="admin_supply !=null and admin_supply != '' ">
|
|
AND T1.SUPPLY_OBJID = #{admin_supply}
|
|
</if>
|
|
ORDER BY LD_PART_NAME, SUPPLY_NAME
|
|
</select>
|
|
|
|
<select id="salesLongDeliveryListSum" parameterType="map" resultType="map">
|
|
SELECT
|
|
SUM(T.PRICE_SUM) AS TOTAL_PRICE_SUM
|
|
FROM
|
|
(SELECT
|
|
T1.OBJID
|
|
,T1.LD_PART_NAME
|
|
,T1.SPEC
|
|
,T1.FORM_NO
|
|
,T1.MAKER
|
|
,T1.MATERIAL_CODE
|
|
,T1.SUPPLY_OBJID
|
|
,(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG S WHERE S.OBJID = T1.SUPPLY_OBJID::NUMERIC) AS SUPPLY_NAME
|
|
,T1.REGDATE
|
|
,T1.WRITER
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T1.WRITER) AS WRITER_NAME
|
|
,T1.LOCATION
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T1.LOCATION) AS LOCATION_NAME
|
|
,T1.PRICE
|
|
,(T1.PRICE::NUMERIC * (SELECT SUM(COALESCE(INPUT_QTY, '0')::NUMERIC) FROM SALES_LONG_DELIVERY_INPUT T2 WHERE T1.OBJID = T2.PARENT_OBJID)) AS PRICE_SUM
|
|
|
|
,(SELECT SUM(COALESCE(INPUT_QTY, '0')::NUMERIC) FROM SALES_LONG_DELIVERY_INPUT T2 WHERE T1.OBJID = T2.PARENT_OBJID) AS INPUT_QTY
|
|
,(SELECT COALESCE(COUNT(1), 0) FROM SALES_LONG_DELIVERY_INPUT T2 WHERE T1.OBJID = T2.PARENT_OBJID) AS INPUT_CNT
|
|
|
|
,T3.*
|
|
FROM SALES_LONG_DELIVERY T1
|
|
LEFT OUTER JOIN (SELECT PARENT_OBJID
|
|
<!-- RIGHT JOIN (SELECT PARENT_OBJID -->
|
|
,SUM(QTY::NUMERIC) AS M_TOTAL
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 1 THEN QTY::NUMERIC ELSE NULL END) AS M01
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 2 THEN QTY::NUMERIC ELSE NULL END) AS M02
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 3 THEN QTY::NUMERIC ELSE NULL END) AS M03
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 4 THEN QTY::NUMERIC ELSE NULL END) AS M04
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 5 THEN QTY::NUMERIC ELSE NULL END) AS M05
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 6 THEN QTY::NUMERIC ELSE NULL END) AS M06
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 7 THEN QTY::NUMERIC ELSE NULL END) AS M07
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 8 THEN QTY::NUMERIC ELSE NULL END) AS M08
|
|
,SUM(CASE WHEN MONTH::NUMERIC = 9 THEN QTY::NUMERIC ELSE NULL END) AS M09
|
|
,SUM(CASE WHEN MONTH::NUMERIC =10 THEN QTY::NUMERIC ELSE NULL END) AS M10
|
|
,SUM(CASE WHEN MONTH::NUMERIC =11 THEN QTY::NUMERIC ELSE NULL END) AS M11
|
|
,SUM(CASE WHEN MONTH::NUMERIC =12 THEN QTY::NUMERIC ELSE NULL END) AS M12
|
|
FROM SALES_LONG_DELIVERY_PREDICT
|
|
GROUP BY PARENT_OBJID
|
|
) AS T3
|
|
ON T1.OBJID = T3.PARENT_OBJID
|
|
WHERE 1=1
|
|
|
|
<if test="ld_part_name !=null and ld_part_name != '' ">
|
|
AND T1.LD_PART_NAME LIKE '%'|| #{ld_part_name} ||'%'
|
|
</if>
|
|
<if test="Location !=null and Location != '' ">
|
|
AND T1.LOCATION = #{Location}
|
|
</if>
|
|
<if test="spec !=null and spec != '' ">
|
|
AND T1.SPEC LIKE '%'|| #{spec} ||'%'
|
|
</if>
|
|
<if test="maker !=null and maker != '' ">
|
|
AND T1.MAKER LIKE '%'|| #{maker} ||'%'
|
|
</if>
|
|
<if test="material_code !=null and material_code != '' ">
|
|
AND T1.MATERIAL_CODE LIKE '%'|| #{material_code} ||'%'
|
|
</if>
|
|
<if test="admin_supply !=null and admin_supply != '' ">
|
|
AND T1.SUPPLY_OBJID = #{admin_supply}
|
|
</if> ) T
|
|
</select>
|
|
|
|
<select id="salesLongDeliveryInfo" parameterType="map" resultType="map">
|
|
SELECT T1.OBJID
|
|
,T1.LD_PART_NAME
|
|
,T1.SPEC
|
|
,T1.FORM_NO
|
|
,T1.MAKER
|
|
,T1.MATERIAL_CODE
|
|
,T1.SUPPLY_OBJID
|
|
,(SELECT SUPPLY_NAME FROM admin_supply_mng s WHERE s.objid = T1.SUPPLY_OBJID::numeric) AS SUPPLY_NAME
|
|
,T1.REGDATE
|
|
,T1.WRITER
|
|
,(SELECT USER_NAME FROM USER_INFO WHERE USER_ID = T1.WRITER) AS WRITER_NAME
|
|
,T1.LOCATION
|
|
,(SELECT CODE_NAME FROM COMM_CODE AS O WHERE O.CODE_ID = T1.LOCATION) AS LOCATION_NAME
|
|
,PRICE
|
|
FROM SALES_LONG_DELIVERY T1
|
|
WHERE 1=1
|
|
AND T1.OBJID = #{objId}
|
|
</select>
|
|
<select id="salesLongDeliveryInputList" parameterType="map" resultType="map">
|
|
SELECT OBJID
|
|
,PARENT_OBJID
|
|
,CONTRACT_OBJID
|
|
,INPUT_QTY
|
|
,INPUT_DATE
|
|
FROM SALES_LONG_DELIVERY_INPUT
|
|
WHERE 1=1
|
|
AND PARENT_OBJID = #{objId}
|
|
</select>
|
|
<select id="salesLongDeliveryPredictList" parameterType="map" resultType="map">
|
|
SELECT OBJID
|
|
,PARENT_OBJID
|
|
,CONTRACT_OBJID
|
|
,MONTH
|
|
,USE_PLACE
|
|
,QTY
|
|
,NOTE
|
|
FROM SALES_LONG_DELIVERY_PREDICT
|
|
WHERE 1=1
|
|
AND PARENT_OBJID = #{objId}
|
|
<if test="month !=null and month != '' ">
|
|
AND MONTH = #{month}
|
|
</if>
|
|
</select>
|
|
<delete id="deleteSalesLongDelivery" parameterType="map">
|
|
DELETE FROM SALES_LONG_DELIVERY WHERE OBJID = #{OBJID}
|
|
</delete>
|
|
<update id="mergeSalesLongDelivery" parameterType="map">
|
|
INSERT INTO SALES_LONG_DELIVERY (
|
|
OBJID
|
|
,LD_PART_NAME
|
|
,SPEC
|
|
,FORM_NO
|
|
,MAKER
|
|
,MATERIAL_CODE
|
|
,SUPPLY_OBJID
|
|
,REGDATE
|
|
,WRITER
|
|
,LOCATION
|
|
,PRICE
|
|
) VALUES (
|
|
#{OBJID }
|
|
,#{LD_PART_NAME }
|
|
,#{SPEC }
|
|
,#{FORM_NO }
|
|
,#{MAKER }
|
|
,#{MATERIAL_CODE}
|
|
,#{SUPPLY_OBJID }
|
|
,NOW()
|
|
,#{writer }
|
|
,#{LOCATION }
|
|
,#{PRICE }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
LD_PART_NAME = #{LD_PART_NAME }
|
|
,SPEC = #{SPEC }
|
|
,FORM_NO = #{FORM_NO }
|
|
,MAKER = #{MAKER }
|
|
,MATERIAL_CODE = #{MATERIAL_CODE}
|
|
,SUPPLY_OBJID = #{SUPPLY_OBJID }
|
|
,REGDATE = NOW()
|
|
,WRITER = #{writer }
|
|
,LOCATION = #{LOCATION }
|
|
,PRICE = #{PRICE }
|
|
</update>
|
|
<delete id="deleteSalesLongDeliveryInput" parameterType="map">
|
|
DELETE FROM SALES_LONG_DELIVERY_INPUT WHERE PARENT_OBJID = #{PARENT_OBJID}
|
|
</delete>
|
|
<delete id="deleteSalesLongDeliveryPredict" parameterType="map">
|
|
DELETE FROM SALES_LONG_DELIVERY_PREDICT WHERE PARENT_OBJID = #{PARENT_OBJID}
|
|
</delete>
|
|
<update id="mergeSalesLongDeliveryInput" parameterType="map">
|
|
INSERT INTO SALES_LONG_DELIVERY_INPUT (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,CONTRACT_OBJID
|
|
,INPUT_QTY
|
|
,INPUT_DATE
|
|
) VALUES (
|
|
#{OBJID }
|
|
,#{PARENT_OBJID }
|
|
,#{CONTRACT_OBJID}
|
|
,#{INPUT_QTY }
|
|
,#{INPUT_DATE }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
PARENT_OBJID = #{PARENT_OBJID }
|
|
,CONTRACT_OBJID= #{CONTRACT_OBJID}
|
|
,INPUT_QTY = #{INPUT_QTY }
|
|
,INPUT_DATE = #{INPUT_DATE }
|
|
</update>
|
|
<update id="mergeSalesLongDeliveryPredict" parameterType="map">
|
|
INSERT INTO SALES_LONG_DELIVERY_PREDICT (
|
|
OBJID
|
|
,PARENT_OBJID
|
|
,CONTRACT_OBJID
|
|
,MONTH
|
|
,USE_PLACE
|
|
,QTY
|
|
,NOTE
|
|
) VALUES (
|
|
#{OBJID }
|
|
,#{PARENT_OBJID}
|
|
,#{CONTRACT_OBJID}
|
|
,#{MONTH }
|
|
,#{USE_PLACE }
|
|
,#{QTY }
|
|
,#{NOTE }
|
|
) ON CONFLICT (OBJID) DO
|
|
UPDATE SET
|
|
PARENT_OBJID= #{PARENT_OBJID}
|
|
,CONTRACT_OBJID= #{CONTRACT_OBJID}
|
|
,MONTH = #{MONTH }
|
|
,USE_PLACE = #{USE_PLACE }
|
|
,QTY = #{QTY }
|
|
,NOTE = #{NOTE }
|
|
</update>
|
|
|
|
</mapper> |