INSERT INTO PURCHASE_ORDER_MASTER
(
OBJID,
PO_CLIENT_ID,
PURCHASE_ORDER_NO,
CATEGORY_CD,
PRODUCT_GROUP,
PRODUCT,
PRODUCT_CODE,
MY_COMPANY_OBJID,
PARTNER_OBJID,
DELIVERY_DATE,
DELIVERY_PLACE,
EFFECTIVE_DATE,
PAYMENT_TERMS,
REMARK,
WRITER,
REGDATE,
STATUS,
SALES_REQUEST_OBJID,
SALES_MNG_USER_ID
,TITLE
,PURCHASE_DATE
,CONTRACT_MGMT_OBJID
,TYPE
,INSPECT_METHOD
,TOTAL_PRICE_TXT
,TOTAL_PRICE_TXT_ALL
,VAT_METHOD
,TOTAL_SUPPLY_UNIT_PRICE
,TOTAL_SUPPLY_PRICE
,TOTAL_REAL_SUPPLY_PRICE
,DISCOUNT_PRICE
,TOTAL_PRICE
,NEGO_RATE
,SUPPLY_BUS_NO
,SUPPLY_USER_NAME
,SUPPLY_USER_HP
,SUPPLY_USER_TEL
,SUPPLY_USER_FAX
,SUPPLY_USER_EMAIL
,SUPPLY_ADDR
,UNIT_CODE
,BOM_REPORT_OBJID
,ORDER_TYPE_CD
,MULTI_YN
,MULTI_MASTER_YN
,MULTI_MASTER_OBJID
,DELIVERY_PLAN_DATE
,DELIVERY_PLAN_QTY
,PURCHASE_ORDER_NO_ORG
)
VALUES
(
#{OBJID},
#{PO_CLIENT_ID},
(SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||(COALESCE(MAX(case when SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) = '' or PURCHASE_ORDER_NO is null then '0' else SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) end ::numeric ))::INTEGER+1)::TEXT FROM PURCHASE_ORDER_MASTER),
#{CATEGORY_CD},
#{PRODUCT_GROUP},
#{PRODUCT},
#{PRODUCT_CODE},
#{MY_COMPANY_OBJID},
#{PARTNER_OBJID},
#{DELIVERY_DATE},
#{DELIVERY_PLACE},
#{EFFECTIVE_DATE},
#{PAYMENT_TERMS},
#{REMARK},
#{WRITER},
NOW(),
#{STATUS},
#{SALES_REQUEST_OBJID},
#{SALES_MNG_USER_ID}
,#{TITLE}
,#{PURCHASE_DATE}
,#{CONTRACT_MGMT_OBJID}::NUMERIC
,#{TYPE }
,#{INSPECT_METHOD }
,#{TOTAL_PRICE_TXT }
,#{TOTAL_PRICE_TXT_ALL }
,#{VAT_METHOD }
,#{TOTAL_SUPPLY_UNIT_PRICE}
,#{TOTAL_SUPPLY_PRICE}
,#{TOTAL_REAL_SUPPLY_PRICE}
,#{DISCOUNT_PRICE }
,#{TOTAL_PRICE }
,#{NEGO_RATE }
,#{SUPPLY_BUS_NO }
,#{SUPPLY_USER_NAME }
,#{SUPPLY_USER_HP }
,#{SUPPLY_USER_TEL }
,#{SUPPLY_USER_FAX }
,#{SUPPLY_USER_EMAIL }
,#{SUPPLY_ADDR }
,#{UNIT_CODE }
,#{BOM_REPORT_OBJID }
,#{ORDER_TYPE_CD }
,#{MULTI_YN }
,#{MULTI_MASTER_YN }
,#{MULTI_MASTER_OBJID }
,#{DELIVERY_PLAN_DATE}
,#{DELIVERY_PLAN_QTY}
,#{PURCHASE_ORDER_NO_ORG}
) ON CONFLICT (OBJID) DO
UPDATE
SET
PO_CLIENT_ID = #{PO_CLIENT_ID},
CATEGORY_CD = #{CATEGORY_CD},
PRODUCT_GROUP = #{PRODUCT_GROUP},
PRODUCT = #{PRODUCT},
PRODUCT_CODE = #{PRODUCT_CODE},
MY_COMPANY_OBJID = #{MY_COMPANY_OBJID},
PARTNER_OBJID = #{PARTNER_OBJID},
DELIVERY_DATE = #{DELIVERY_DATE},
DELIVERY_PLACE = #{DELIVERY_PLACE},
EFFECTIVE_DATE = #{EFFECTIVE_DATE},
PAYMENT_TERMS = #{PAYMENT_TERMS},
REMARK = #{REMARK},
WRITER = #{WRITER},
STATUS = #{STATUS},
SALES_MNG_USER_ID = #{SALES_MNG_USER_ID}
,TITLE = #{TITLE}
,PURCHASE_DATE = #{PURCHASE_DATE}
,CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}::NUMERIC
,TYPE = #{TYPE }
,INSPECT_METHOD = #{INSPECT_METHOD }
,TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT }
,TOTAL_PRICE_TXT_ALL = #{TOTAL_PRICE_TXT_ALL }
,VAT_METHOD = #{VAT_METHOD }
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
,TOTAL_SUPPLY_PRICE = #{TOTAL_SUPPLY_PRICE}
,TOTAL_REAL_SUPPLY_PRICE = #{TOTAL_REAL_SUPPLY_PRICE}
,DISCOUNT_PRICE = #{DISCOUNT_PRICE }
,TOTAL_PRICE = #{TOTAL_PRICE }
,NEGO_RATE = #{NEGO_RATE }
,SUPPLY_BUS_NO = #{SUPPLY_BUS_NO }
,SUPPLY_USER_NAME = #{SUPPLY_USER_NAME }
,SUPPLY_USER_HP = #{SUPPLY_USER_HP }
,SUPPLY_USER_TEL = #{SUPPLY_USER_TEL }
,SUPPLY_USER_FAX = #{SUPPLY_USER_FAX }
,SUPPLY_USER_EMAIL = #{SUPPLY_USER_EMAIL }
,SUPPLY_ADDR = #{SUPPLY_ADDR }
,UNIT_CODE = #{UNIT_CODE }
,BOM_REPORT_OBJID = #{BOM_REPORT_OBJID }
,ORDER_TYPE_CD = #{ORDER_TYPE_CD }
,DELIVERY_PLAN_DATE = #{DELIVERY_PLAN_DATE}
,DELIVERY_PLAN_QTY = #{DELIVERY_PLAN_QTY}
,MULTI_YN = #{MULTI_YN}
,MULTI_MASTER_YN = #{MULTI_MASTER_YN}
,PURCHASE_ORDER_NO_ORG = #{PURCHASE_ORDER_NO_ORG}
INSERT INTO PURCHASE_ORDER_MASTER
(
OBJID,
PO_CLIENT_ID,
PURCHASE_ORDER_NO,
PARTNER_OBJID,
DELIVERY_DATE,
DELIVERY_PLACE,
EFFECTIVE_DATE,
PAYMENT_TERMS,
REMARK,
WRITER,
REGDATE,
STATUS,
SALES_REQUEST_OBJID,
SALES_MNG_USER_ID
,TITLE
,PURCHASE_DATE
,CONTRACT_MGMT_OBJID
,TYPE
,INSPECT_METHOD
,TOTAL_PRICE_TXT
,VAT_METHOD
,TOTAL_SUPPLY_UNIT_PRICE
,DISCOUNT_PRICE
,TOTAL_PRICE
,NEGO_RATE
,SUPPLY_BUS_NO
,SUPPLY_USER_NAME
,SUPPLY_USER_HP
,SUPPLY_USER_TEL
,SUPPLY_USER_FAX
,SUPPLY_USER_EMAIL
,SUPPLY_ADDR
,UNIT_CODE
,BOM_REPORT_OBJID
,ORDER_TYPE_CD
)
VALUES
(
#{OBJID},
#{PO_CLIENT_ID},
(SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||(COALESCE(MAX(case when SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) = '' or PURCHASE_ORDER_NO is null then '0' else SPLIT_PART( PURCHASE_ORDER_NO, '-', 3) end ::numeric ))::INTEGER+1)::TEXT FROM PURCHASE_ORDER_MASTER),
#{PARTNER_OBJID},
#{DELIVERY_REQUEST_DATE},
#{DELIVERY_PLACE},
#{EFFECTIVE_DATE},
#{PAYMENT_TERMS},
#{REMARK},
#{WRITER},
NOW(),
'create',
#{SALES_REQUEST_OBJID},
#{SALES_MNG_USER_ID}
,#{TITLE}
,#{PURCHASE_DATE}
,#{PROJECT_NO}::NUMERIC
,#{TYPE }
,#{INSPECT_METHOD }
,#{TOTAL_PRICE_TXT }
,#{VAT_METHOD }
,#{TOTAL_SUPPLY_UNIT_PRICE}
,#{DISCOUNT_PRICE }
,#{TOTAL_PRICE }
,#{NEGO_RATE }
,#{SUPPLY_BUS_NO }
,#{SUPPLY_USER_NAME }
,#{SUPPLY_USER_HP }
,#{SUPPLY_USER_TEL }
,#{SUPPLY_USER_FAX }
,#{SUPPLY_USER_EMAIL }
,#{SUPPLY_ADDR }
,#{UNIT_NAME }
,#{BOM_REPORT_OBJID }
,#{ORDER_TYPE_CD }
) ON CONFLICT (OBJID) DO
UPDATE
SET
PO_CLIENT_ID = #{PO_CLIENT_ID},
PURCHASE_ORDER_NO = #{PURCHASE_ORDER_NO},
PARTNER_OBJID = #{PARTNER_OBJID},
DELIVERY_DATE = #{DELIVERY_DATE},
DELIVERY_PLACE = #{DELIVERY_PLACE},
EFFECTIVE_DATE = #{EFFECTIVE_DATE},
PAYMENT_TERMS = #{PAYMENT_TERMS},
REMARK = #{REMARK},
WRITER = #{WRITER},
STATUS = #{STATUS},
SALES_MNG_USER_ID = #{SALES_MNG_USER_ID}
,TITLE = #{TITLE}
,PURCHASE_DATE = #{PURCHASE_DATE}
,CONTRACT_MGMT_OBJID = #{CONTRACT_MGMT_OBJID}::NUMERIC
,TYPE = #{TYPE }
,INSPECT_METHOD = #{INSPECT_METHOD }
,TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT }
,VAT_METHOD = #{VAT_METHOD }
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
,DISCOUNT_PRICE = #{DISCOUNT_PRICE }
,TOTAL_PRICE = #{TOTAL_PRICE }
,NEGO_RATE = #{NEGO_RATE }
,SUPPLY_BUS_NO = #{SUPPLY_BUS_NO }
,SUPPLY_USER_NAME = #{SUPPLY_USER_NAME }
,SUPPLY_USER_HP = #{SUPPLY_USER_HP }
,SUPPLY_USER_TEL = #{SUPPLY_USER_TEL }
,SUPPLY_USER_FAX = #{SUPPLY_USER_FAX }
,SUPPLY_USER_EMAIL = #{SUPPLY_USER_EMAIL }
,SUPPLY_ADDR = #{SUPPLY_ADDR }
,UNIT_CODE = #{UNIT_CODE }
,BOM_REPORT_OBJID = #{BOM_REPORT_OBJID }
,ORDER_TYPE_CD = #{ORDER_TYPE_CD }
INSERT INTO PURCHASE_ORDER_MASTER
(
OBJID,
PO_CLIENT_ID,
PURCHASE_ORDER_NO,
CATEGORY_CD,
PRODUCT_GROUP,
PRODUCT,
PRODUCT_CODE,
MY_COMPANY_OBJID,
PARTNER_OBJID,
DELIVERY_DATE,
DELIVERY_PLACE,
EFFECTIVE_DATE,
PAYMENT_TERMS,
REMARK,
WRITER,
REGDATE,
STATUS,
SALES_REQUEST_OBJID,
SALES_MNG_USER_ID
,TITLE
,PURCHASE_DATE
,CONTRACT_MGMT_OBJID
,TYPE
,INSPECT_METHOD
,TOTAL_PRICE_TXT
,VAT_METHOD
,TOTAL_SUPPLY_UNIT_PRICE
,DISCOUNT_PRICE
,TOTAL_PRICE
,NEGO_RATE
,SUPPLY_BUS_NO
,SUPPLY_USER_NAME
,SUPPLY_USER_HP
,SUPPLY_USER_TEL
,SUPPLY_USER_FAX
,SUPPLY_USER_EMAIL
,SUPPLY_ADDR
,UNIT_CODE
,BOM_REPORT_OBJID
,ORDER_TYPE_CD
)
VALUES
(
#{OBJID},
#{PO_CLIENT_ID},
(SELECT 'PO-'||TO_CHAR(NOW(),'YYMM')||'-'||LPAD((COALESCE(MAX(SUBSTR(PURCHASE_ORDER_NO,9,11)),'0')::INTEGER+1)::TEXT,3,'0') FROM PURCHASE_ORDER_MASTER),
#{CATEGORY_CD},
#{PRODUCT_GROUP},
#{PRODUCT},
#{PRODUCT_CODE},
#{MY_COMPANY_OBJID},
#{PARTNER_OBJID},
#{DELIVERY_DATE},
#{DELIVERY_PLACE},
#{EFFECTIVE_DATE},
#{PAYMENT_TERMS},
#{REMARK},
#{WRITER},
NOW(),
#{STATUS},
#{SALES_REQUEST_OBJID},
#{SALES_MNG_USER_ID}
,#{TITLE}
,#{PURCHASE_DATE}
,#{CONTRACT_MGMT_OBJID}::NUMERIC
,#{TYPE }
,#{INSPECT_METHOD }
,#{TOTAL_PRICE_TXT }
,#{VAT_METHOD }
,#{TOTAL_SUPPLY_UNIT_PRICE}
,#{DISCOUNT_PRICE }
,#{TOTAL_PRICE }
,#{NEGO_RATE }
,#{SUPPLY_BUS_NO }
,#{SUPPLY_USER_NAME }
,#{SUPPLY_USER_HP }
,#{SUPPLY_USER_TEL }
,#{SUPPLY_USER_FAX }
,#{SUPPLY_USER_EMAIL }
,#{SUPPLY_ADDR }
,#{UNIT_CODE }
,#{BOM_REPORT_OBJID }
,#{ORDER_TYPE_CD }
) ON CONFLICT (OBJID) DO
UPDATE
SET
TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT }
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
,TOTAL_SUPPLY_PRICE = #{TOTAL_SUPPLY_PRICE}
,TOTAL_REAL_SUPPLY_PRICE = #{TOTAL_REAL_SUPPLY_PRICE}
,DISCOUNT_PRICE = #{DISCOUNT_PRICE }
,TOTAL_PRICE = #{TOTAL_PRICE }
,NEGO_RATE = #{NEGO_RATE }
UPDATE PURCHASE_ORDER_MASTER
SET
TOTAL_PRICE_TXT = #{TOTAL_PRICE_TXT }
,TOTAL_SUPPLY_PRICE = #{TOTAL_SUPPLY_PRICE }
,TOTAL_SUPPLY_UNIT_PRICE = #{TOTAL_SUPPLY_UNIT_PRICE}
,TOTAL_PRICE = TOTAL_SUPPLY_PRICE::NUMERIC - DISCOUNT_PRICE::NUMERIC
,NEGO_RATE = (case when TOTAL_SUPPLY_PRICE = 0 then 0 else ROUND(DISCOUNT_PRICE/TOTAL_SUPPLY_PRICE, 1) end)
WHERE OBJID = #{OBJID}
UPDATE PURCHASE_ORDER_MASTER
SET
TOTAL_REAL_SUPPLY_PRICE = #{TOTAL_REAL_SUPPLY_PRICE}
WHERE OBJID = #{OBJID} OR MULTI_MASTER_OBJID = #{OBJID}
UPDATE PURCHASE_ORDER_PART SET
PARTNER_PRICE = #{PARTNER_PRICE}
,PRICE1 = #{PRICE1}
,PRICE2 = #{PRICE2}
,PRICE3 = #{PRICE3}
,PRICE4 = #{PRICE4}
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
AND OBJID = #{OBJID}
UPDATE PURCHASE_ORDER_PART P SET
SUPPLY_UNIT_PRICE = ORDER_QTY::numeric * (PARTNER_PRICE::numeric + PRICE1::numeric + PRICE2::numeric + PRICE3::numeric + PRICE4::numeric)
,SUPPLY_UNIT_VAT_PRICE = ORDER_QTY::numeric * (PARTNER_PRICE::numeric + PRICE1::numeric + PRICE2::numeric + PRICE3::numeric + PRICE4::numeric) * 0.1
,SUPPLY_UNIT_VAT_SUM_PRICE = ORDER_QTY::numeric * (PARTNER_PRICE::numeric + PRICE1::numeric + PRICE2::numeric + PRICE3::numeric + PRICE4::numeric)
+ ORDER_QTY::numeric * (PARTNER_PRICE::numeric + PRICE1::numeric + PRICE2::numeric + PRICE3::numeric + PRICE4::numeric) * 0.1
,REAL_SUPPLY_PRICE = (SELECT
SUM(ORDER_QTY::numeric) * (SUM(PARTNER_PRICE::numeric) + SUM(PRICE1::numeric) + SUM(PRICE2::numeric) + SUM(PRICE3::numeric) + SUM(PRICE4::numeric))
FROM PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
WHERE (POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID } OR POM.MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID })
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
AND POP.OBJID = P.OBJID
)
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
UPDATE PURCHASE_ORDER_MASTER SET
TOTAL_SUPPLY_UNIT_PRICE = T.SUPPLY_UNIT_PRICE + T.SUPPLY_UNIT_VAT_PRICE
,TOTAL_SUPPLY_PRICE = T.SUPPLY_UNIT_PRICE
,TOTAL_PRICE = (CASE WHEN T.DISCOUNT_PRICE != 0 THEN T.SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE ELSE NULL END)
,NEGO_RATE = (CASE WHEN T.DISCOUNT_PRICE != 0 THEN ROUND( ((1-((T.SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE)/T.SUPPLY_UNIT_PRICE))*100), 1) ELSE NULL END)
,TOTAL_PRICE_TXT = NUM_TO_KOR((T.SUPPLY_UNIT_PRICE + T.SUPPLY_UNIT_VAT_PRICE)::varchar,'일금 ',' 원정 (₩ ') || trim(TO_CHAR((T.SUPPLY_UNIT_PRICE + T.SUPPLY_UNIT_VAT_PRICE), '999,999,999,999')) ||')'
FROM
(SELECT
SUM(SUPPLY_UNIT_PRICE::NUMERIC) SUPPLY_UNIT_PRICE
,SUM(TRUNC(SUPPLY_UNIT_VAT_PRICE::NUMERIC, 0)) SUPPLY_UNIT_VAT_PRICE
,SUM(TRUNC(SUPPLY_UNIT_VAT_SUM_PRICE::NUMERIC, 0)) SUPPLY_UNIT_VAT_SUM_PRICE
,SUM(TRUNC(REAL_SUPPLY_PRICE::NUMERIC, 0)) REAL_SUPPLY_PRICE
,MAX(NVL(REAL_ORDER_QTY, '0')::NUMERIC) REAL_ORDER_QTY
,(CASE WHEN COALESCE(DISCOUNT_PRICE, '') = '' THEN '0'
ELSE DISCOUNT_PRICE END)::NUMERIC AS DISCOUNT_PRICE
FROM PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
GROUP BY POM.OBJID
) T
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
UPDATE PURCHASE_ORDER_MASTER SET
TOTAL_PRICE_TXT_ALL = NUM_TO_KOR((T.REAL_SUPPLY_PRICE_VAT)::varchar,'일금 ',' 원정 (₩ ') || TRIM(TO_CHAR((T.REAL_SUPPLY_PRICE_VAT), '999,999,999,999')) ||')'
,TOTAL_REAL_SUPPLY_PRICE = T.REAL_SUPPLY_PRICE
,TOTAL_PRICE_ALL = (CASE WHEN T.DISCOUNT_PRICE != 0 THEN T.REAL_SUPPLY_PRICE - T.DISCOUNT_PRICE ELSE NULL END)
FROM (SELECT
SUM(REAL_SUPPLY_PRICE::numeric) REAL_SUPPLY_PRICE
,SUM(REAL_SUPPLY_PRICE::numeric) + ROUND(SUM(REAL_SUPPLY_PRICE::numeric)*0.1) REAL_SUPPLY_PRICE_VAT
,MAX(NVL(DISCOUNT_PRICE, '0')::NUMERIC) DISCOUNT_PRICE
FROM PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
WHERE POM.OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
) T
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
OR MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
INSERT INTO PURCHASE_ORDER_PART
(
OBJID,
PURCHASE_ORDER_MASTER_OBJID,
PART_OBJID,
BOM_QTY,
QTY,
ORDER_QTY,
PARTNER_PRICE,
REMARK,
WRITER,
REGDATE,
STATUS
,PART_NAME
,PART_NO
,DO_NO
,THICKNESS
,WIDTH
,HEIGHT
,OUT_DIAMETER
,LENGTH
,IN_DIAMETER
,INVEN_TOTAL_QTY
,LD_PART_OBJID
,SPEC
,MAKER
,UNIT
,SUPPLY_UNIT_PRICE
,PRICE1
,PRICE2
,PRICE3
,PRICE4
,SUPPLY_UNIT_VAT_PRICE
,SUPPLY_UNIT_VAT_SUM_PRICE
,TOTAL_ORDER_QTY
,STOCK_QTY
,REAL_ORDER_QTY
,REAL_SUPPLY_PRICE
)
VALUES
(
#{OBJID},
#{PURCHASE_ORDER_MASTER_OBJID},
#{PART_OBJID},
REPLACE(#{BOM_QTY}::VARCHAR, ',', ''),
REPLACE(#{QTY}::VARCHAR, ',', ''),
REPLACE(#{ORDER_QTY}::VARCHAR, ',', ''),
#{PARTNER_PRICE},
#{REMARK},
#{WRITER},
NOW(),
#{STATUS}
,#{PART_NAME }
,#{PART_NO }
,#{DO_NO }
,#{THICKNESS }
,#{WIDTH }
,#{HEIGHT }
,#{OUT_DIAMETER }
,#{LENGTH }
,#{IN_DIAMETER }
,#{INVEN_TOTAL_QTY}
,#{LD_PART_OBJID }
,#{SPEC }
,#{MAKER }
,#{UNIT }
,REPLACE(#{SUPPLY_UNIT_PRICE} ::VARCHAR, ',', '')
,REPLACE(#{PRICE1} ::VARCHAR, ',', '')
,REPLACE(#{PRICE2} ::VARCHAR, ',', '')
,REPLACE(#{PRICE3} ::VARCHAR, ',', '')
,REPLACE(#{PRICE4} ::VARCHAR, ',', '')
,REPLACE(#{SUPPLY_UNIT_VAT_PRICE} ::VARCHAR, ',', '')
,REPLACE(#{SUPPLY_UNIT_VAT_SUM_PRICE}::VARCHAR, ',', '')
,REPLACE(#{TOTAL_ORDER_QTY} ::VARCHAR, ',', '')
,REPLACE(#{STOCK_QTY} ::VARCHAR, ',', '')
,REPLACE(#{REAL_ORDER_QTY} ::VARCHAR, ',', '')
,REPLACE(#{REAL_SUPPLY_PRICE} ::VARCHAR, ',', '')
) ON CONFLICT (OBJID) DO
UPDATE
SET
ORDER_QTY = REPLACE(#{ORDER_QTY} ::VARCHAR, ',', '')
,PARTNER_PRICE = REPLACE(#{PARTNER_PRICE} ::VARCHAR, ',', '')
,REMARK = #{REMARK}
,STATUS = #{STATUS}
,MODIFIER = #{WRITER }
,UPDATE_DATE = NOW()
,LD_PART_OBJID = #{LD_PART_OBJID }
,SPEC = #{SPEC }
,MAKER = #{MAKER }
,UNIT = #{UNIT }
,SUPPLY_UNIT_PRICE = REPLACE(#{SUPPLY_UNIT_PRICE}, ',', '')
,PRICE1 = REPLACE(#{PRICE1}::VARCHAR, ',', '')
,PRICE2 = REPLACE(#{PRICE2}::VARCHAR, ',', '')
,PRICE3 = REPLACE(#{PRICE3}::VARCHAR, ',', '')
,PRICE4 = REPLACE(#{PRICE4}::VARCHAR, ',', '')
,SUPPLY_UNIT_VAT_PRICE = REPLACE(#{SUPPLY_UNIT_VAT_PRICE} ::VARCHAR, ',', '')
,SUPPLY_UNIT_VAT_SUM_PRICE = REPLACE(#{SUPPLY_UNIT_VAT_SUM_PRICE}::VARCHAR, ',', '')
,TOTAL_ORDER_QTY = REPLACE(#{TOTAL_ORDER_QTY} ::VARCHAR, ',', '')
,STOCK_QTY = REPLACE(#{STOCK_QTY} ::VARCHAR, ',', '')
,REAL_ORDER_QTY = REPLACE(#{REAL_ORDER_QTY} ::VARCHAR, ',', '')
,REAL_SUPPLY_PRICE = REPLACE(#{REAL_SUPPLY_PRICE} ::VARCHAR, ',', '')
UPDATE PURCHASE_ORDER_MASTER
SET MULTI_MASTER_YN = #{MULTI_MASTER_YN}
,MULTI_YN = #{MULTI_YN}
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
UPDATE PURCHASE_ORDER_MASTER
SET NEGO_RATE = #{NEGO_RATE}
,DISCOUNT_PRICE_ALL = #{DISCOUNT_PRICE_ALL}
,DISCOUNT_PRICE = (CASE WHEN NVL(#{DISCOUNT_PRICE_ALL}::VARCHAR, '') != '' THEN ROUND(NVL(#{DISCOUNT_PRICE_ALL}::VARCHAR, '0')::NUMERIC/(SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER WHERE OBJID = #{OBJID} OR MULTI_MASTER_OBJID = #{OBJID}),1)
ELSE NULL END)
,TOTAL_PRICE = (CASE WHEN NVL(#{TOTAL_PRICE_ALL}::VARCHAR, '') != '' THEN ROUND(NVL(#{TOTAL_PRICE_ALL}::VARCHAR, '0')::NUMERIC/(SELECT COUNT(1) FROM PURCHASE_ORDER_MASTER WHERE OBJID = #{OBJID} OR MULTI_MASTER_OBJID = #{OBJID}),1)
ELSE NULL END)
,TOTAL_PRICE_ALL = #{TOTAL_PRICE_ALL}
,TOTAL_SUPPLY_UNIT_PRICE = FLOOR(NVL(#{TOTAL_PRICE}::VARCHAR, TOTAL_SUPPLY_PRICE)::NUMERIC * 1.1)
,TOTAL_SUPPLY_UNIT_PRICE_ALL = FLOOR(NVL(#{TOTAL_PRICE_ALL}::VARCHAR, TOTAL_REAL_SUPPLY_PRICE)::NUMERIC * 1.1)
WHERE ( OBJID = #{OBJID}
OR MULTI_MASTER_OBJID = #{OBJID}
)
UPDATE PURCHASE_ORDER_MASTER
SET
TOTAL_PRICE_TXT = NUM_TO_KOR(TOTAL_SUPPLY_UNIT_PRICE,'일금 ',' 원정 (₩ ') || TO_CHAR((TOTAL_SUPPLY_UNIT_PRICE)::Numeric, '999,999,999,999') ||')'
,TOTAL_PRICE_TXT_ALL = NUM_TO_KOR(TOTAL_SUPPLY_UNIT_PRICE_ALL,'일금 ',' 원정 (₩ ') || TO_CHAR((TOTAL_SUPPLY_UNIT_PRICE_ALL)::Numeric, '999,999,999,999') ||')'
WHERE ( OBJID = #{OBJID}
OR MULTI_MASTER_OBJID = #{OBJID}
)
DELETE FROM PURCHASE_ORDER_MASTER
WHERE MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
AND OBJID NOT IN
#{objkey}
DELETE FROM PURCHASE_ORDER_PART
WHERE PURCHASE_ORDER_MASTER_OBJID IN
(SELECT OBJID FROM PURCHASE_ORDER_MASTER
WHERE MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
)
AND PURCHASE_ORDER_MASTER_OBJID IN
(SELECT OBJID FROM PURCHASE_ORDER_MASTER
WHERE (
MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID})
AND OBJID NOT IN
#{objkey}
)
DELETE FROM PURCHASE_ORDER_MULTI
WHERE MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
AND OBJID NOT IN
#{objkey}
DELETE FROM PURCHASE_ORDER_PART
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
DELETE FROM PURCHASE_ORDER_PART
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID}
OR PURCHASE_ORDER_MASTER_OBJID IN (SELECT OBJID
FROM PURCHASE_ORDER_MASTER
WHERE MULTI_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID})
DELETE FROM PURCHASE_ORDER_MASTER
WHERE 1=1
DELETE FROM PURCHASE_ORDER_PART
WHERE 1=1
UPDATE PURCHASE_ORDER_MASTER
SET STATUS = 'cancel'
WHERE
OR
INSERT INTO DELIVERY_HISTORY
(
OBJID,
PART_OBJID,
LD_PART_OBJID,
PURCHASE_ORDER_PART_OBJID,
ORDER_QTY,
DELIVERY_QTY,
DELIVERY_PLACE_CD,
DELIVERY_DATE,
DELIVERY_PLAN_DATE,
REMARK,
WRITER,
REGDATE,
NON_ARRIVAL_QTY,
DELIVERY_MNG_NO
,DEFECT_QTY
,INSPECT_DATE
,DEFECT_REASON
,DEFECT_RESP
,RESULT
,DEFECT_NOTE
)VALUES(
#{OBJID},
#{PART_OBJID},
#{LD_PART_OBJID},
#{PURCHASE_ORDER_PART_OBJID},
#{ORDER_QTY},
#{DELIVERY_QTY},
#{DELIVERY_PLACE_CD},
#{DELIVERY_DATE},
#{DELIVERY_PLAN_DATE},
#{REMARK},
#{WRITER},
NOW(),
#{NON_ARRIVAL_QTY},
(SELECT 'I'||TO_CHAR(NOW(),'YYYYMMDD')||'-'||LPAD((COALESCE(MAX(SUBSTR(DELIVERY_MNG_NO,11,13)),'0')::INTEGER+1)::TEXT,3,'0') FROM DELIVERY_HISTORY)
,#{DEFECT_QTY}
,#{INSPECT_DATE}
,#{DEFECT_REASON}
,#{DEFECT_RESP}
,#{RESULT}
,#{DEFECT_NOTE}
)
UPDATE DELIVERY_HISTORY
SET
DELIVERY_QTY = #{DELIVERY_QTY}
,DELIVERY_PLACE_CD = #{DELIVERY_PLACE_CD}
,DELIVERY_DATE = #{DELIVERY_DATE}
,INSPECT_DATE = #{INSPECT_DATE}
,DEFECT_QTY = #{DEFECT_QTY}
,DEFECT_RESP = #{DEFECT_RESP}
,DEFECT_REASON = #{DEFECT_REASON}
,MODWRITER = #{WRITER}
,MODDATE = NOW()
WHERE OBJID = #{OBJID}
INSERT INTO RESOURCE_MNG
(
OBJID,
PART_OBJID,
LD_PART_OBJID,
PART_NAME,
SPEC,
MATERIAL,
UNIT,
MAKER,
WEIGHT,
REGDATE,
WRITER
)
SELECT
#{OBJID}::NUMERIC,
#{PART_OBJID},
#{LD_PART_OBJID},
(SELECT PM.PART_NAME FROM PART_MNG PM WHERE 1=1 AND PM.OBJID::VARCHAR = #{PART_OBJID}::VARCHAR),
#{SPEC},
(SELECT PM.MATERIAL FROM PART_MNG PM WHERE 1=1 AND PM.OBJID::VARCHAR = #{PART_OBJID}::VARCHAR),
#{MAKER},
#{UNIT},
(SELECT PM.WEIGHT FROM PART_MNG PM WHERE 1=1 AND PM.OBJID::VARCHAR = #{PART_OBJID}::VARCHAR),
NOW(),
#{WRITER}
WHERE
NOT EXISTS(
SELECT 1 FROM RESOURCE_MNG WHERE PART_OBJID = #{PART_OBJID}
UNION ALL
SELECT 1 FROM RESOURCE_MNG WHERE LD_PART_OBJID = #{LD_PART_OBJID}
)
UPDATE
INVENTORY_MNG
SET
IS_LAST = 'N'
WHERE PARENT_OBJID = (SELECT RM.OBJID FROM RESOURCE_MNG RM WHERE PART_OBJID = #{PART_OBJID})
AND LOCATION = #{LOCATION}
AND SUB_LOCATION = #{SUB_LOCATION}
UPDATE
INVENTORY_MNG
SET
IS_LAST = 'N'
WHERE LD_PART_OBJID = #{LD_PART_OBJID}
AND LOCATION = #{LOCATION}
AND SUB_LOCATION = #{SUB_LOCATION}
DELETE FROM PURCHASE_ORDER_MASTER
WHERE OBJID = #{objId} OR MULTI_MASTER_OBJID = #{objId}
INSERT INTO DELIVERY_PART_PRICE
(
OBJID
,PURCHASE_ORDER_PART_OBJID
,PART_OBJID
,LD_PART_OBJID
,PRICE
,PRICE1
,PRICE2
,PRICE3
,PRICE4
,PRICE_SUM
,WRITER
,REGDATE
)
VALUES
(
#{OBJID}
,#{PURCHASE_ORDER_PART_OBJID}
,#{PART_OBJID}
,#{LD_PART_OBJID}
,#{PRICE}
,#{PRICE1}
,#{PRICE2}
,#{PRICE3}
,#{PRICE4}
,#{PRICE_SUM}
,#{WRITER}
,NOW()
) ON CONFLICT (OBJID) DO
UPDATE
SET
PRICE = #{PRICE}
,PRICE1 = #{PRICE1}
,PRICE2 = #{PRICE2}
,PRICE3 = #{PRICE3}
,PRICE4 = #{PRICE4}
,PRICE_SUM = #{PRICE_SUM}
UPDATE SALES_BOM_REPORT_PART SET
PRICE = #{PARTNER_PRICE}
,PRICE1 = #{PRICE1 }
,PRICE2 = #{PRICE2 }
,PRICE3 = #{PRICE3 }
,PRICE4 = #{PRICE4 }
,PRICE_SUM = #{SUPPLY_UNIT_PRICE }
,MODIFIER = #{WRITER }
,UPDATE_DATE = NOW()
WHERE OBJID = (SELECT SBRP.OBJID
FROM PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
,SALES_BOM_REPORT_PART SBRP
,BOM_PART_QTY Q
WHERE POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
AND POP.OBJID = #{OBJID}
AND SBRP.PARENT_OBJID = POM.BOM_REPORT_OBJID
AND SBRP.BOM_PART_QTY_OBJID = Q.CHILD_OBJID
AND NVL(Q.LAST_PART_OBJID, Q.PART_NO) = POP.PART_OBJID
)
UPDATE PURCHASE_ORDER_PART SET
PARTNER_PRICE = #{PRICE }
,PRICE1 = #{PRICE1 }
,PRICE2 = #{PRICE2 }
,PRICE3 = #{PRICE3 }
,PRICE4 = #{PRICE4 }
,SUPPLY_UNIT_PRICE = #{PRICE_SUM }
,SUPPLY_UNIT_VAT_PRICE = #{PRICE_SUM }::numeric *0.1
WHERE OBJID = #{PURCHASE_ORDER_PART_OBJID }
UPDATE PURCHASE_ORDER_MASTER SET
TOTAL_SUPPLY_UNIT_PRICE = SUPPLY_UNIT_PRICE
,TOTAL_PRICE = SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE
,NEGO_RATE = ROUND( ((1-((SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE)/SUPPLY_UNIT_PRICE))*100), 1) ||'%'
,TOTAL_PRICE_TXT = NUM_TO_KOR((SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE)::INTEGER::VARCHAR,'일금 ',' 원정 (₩ ') || TO_CHAR((SUPPLY_UNIT_PRICE - T.DISCOUNT_PRICE), '999,999,999,999') ||')'
FROM
(SELECT
SUM(SUPPLY_UNIT_PRICE::NUMERIC) + SUM(SUPPLY_UNIT_VAT_PRICE::NUMERIC) SUPPLY_UNIT_PRICE
,(CASE WHEN COALESCE(DISCOUNT_PRICE, '') = '' THEN '0'
ELSE DISCOUNT_PRICE END)::NUMERIC AS DISCOUNT_PRICE
FROM PURCHASE_ORDER_MASTER POM
,PURCHASE_ORDER_PART POP
WHERE PURCHASE_ORDER_MASTER_OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
AND POM.OBJID = POP.PURCHASE_ORDER_MASTER_OBJID
GROUP BY POM.OBJID
) T
WHERE OBJID = #{PURCHASE_ORDER_MASTER_OBJID }
UPDATE SALES_PART_CHG
SET
ACT_STATUS = #{act_status}
WHERE purchase_order_master_objid = #{targetObjId}
UPDATE SALES_REQUEST_MASTER
SET
STATUS = #{STATUS}
WHERE OBJID = #{SALES_REQUEST_OBJID}
DELETE FROM DELIVERY_HISTORY_DEFECT
WHERE PURCHASE_ORDER_PART_OBJID = #{PURCHASE_ORDER_PART_OBJID}
INSERT INTO DELIVERY_HISTORY_DEFECT
(
OBJID,
PURCHASE_ORDER_PART_OBJID,
DEFECT_QTY,
DEFECT_REASON_CD,
WRITER,
REGDATE
)VALUES(
#{OBJID},
#{PURCHASE_ORDER_PART_OBJID},
#{DEFECT_QTY},
#{DEFECT_REASON_CD},
#{WRITER},
NOW()
)
UPDATE ARRIVAL_PLAN
SET DEFECT_ACTION = #{defect_action}
, DEFECT_CONTENT = #{defect_content}
, DEFECT_ACTION_DATE = #{defect_action_date}
, RE_ARRIVAL_PLAN_DATE = #{delivery_plan_date}
, DEFECT_ACTION_TITLE = #{defect_action_title}
, DEFECT_NOTE = #{defect_note}
WHERE OBJID IN
#{objkey}