구매관리 입고 3메뉴 + 프로젝트 발주/입고 통계 빈 그리드 채움

- DDL: purchase_order_part(43 cols) + arrival_plan(37 cols) + POM 보충 컬럼 10개
  (mail_send_yn/date, form_type, purchase_close_date 등)
- 데이터: 운영 sample purchase_order_master 1건 + part 1건 + arrival_plan 1건
- listInbound — wace deliveryMngList_new 매퍼 1:1 (POM + S1 집계, AP × POP)
- listInboundByItem — wace deliveryMngPartList 매퍼 1:1 (품목별)
- listInboundByDate — wace purchaseCloseList 매퍼 1:1 (입고일별 + 매입마감)
- listProjectStatus — PO/DLV 통계 0 → 실데이터 (purchase_order_part + arrival_plan)
- INVENTORY_MGMT / INCOMING_INSPECTION 미존재 → 검사/폐기 0 처리 (확정수량=입고수량)
This commit is contained in:
hjjeong
2026-05-15 15:51:22 +09:00
parent 6b029e20f9
commit c2e364207e
3 changed files with 599 additions and 31 deletions
@@ -0,0 +1,61 @@
-- ============================================================
-- 발주/입고 운영 sample 데이터 → RPS 이관
-- 운영: 211.115.91.141:11133/waceplm
-- purchase_order_master 1건 / purchase_order_part 1건 / arrival_plan 1건
-- 대상: 211.115.91.141:11134/vexplor_rps
--
-- FK 매칭 (확인):
-- sales_request_objid='-233034270' → RPS sales_request_master.objid (있음)
-- contract_mgmt_objid='-1752090174' → 운영DB project_mgmt.objid (RPS contract_mgmt 미매칭, project_mgmt 매칭)
-- part_objid=1868260552 → RPS part_mng (있음)
-- partner_objid='0000000007' → RPS client_mng 서울반도체(주) (있음)
--
-- 멱등성: ON CONFLICT DO NOTHING
-- ============================================================
-- ── purchase_order_master (RPS 이미 존재하면 mail_send_* 만 보강) ──
-- PK constraint 없어 ON CONFLICT 사용 불가 → WHERE NOT EXISTS 패턴
INSERT INTO purchase_order_master
(objid, purchase_order_no, partner_objid, contract_mgmt_objid, sales_request_objid,
regdate, writer, status, mail_send_yn, mail_send_date,
sales_mng_user_id, payment_terms)
SELECT
'-2135417309','RPS26-0401-01','0000000007','-1752090174','-233034270',
'2026-04-01 07:20:58.687075','ady1225','create','Y','2026-04-03',
'ish0312','0001069'
WHERE NOT EXISTS (SELECT 1 FROM purchase_order_master WHERE objid='-2135417309');
-- 이미 있던 행에는 매퍼 필수 필드(mail_send_*) 보강
UPDATE purchase_order_master
SET mail_send_yn='Y', mail_send_date='2026-04-03'
WHERE objid='-2135417309'
AND COALESCE(mail_send_yn,'') = '';
-- ── purchase_order_part ───────────────────────────────────────
INSERT INTO purchase_order_part
(objid, purchase_order_master_objid, part_objid, order_qty, partner_price,
remark, writer, regdate, part_name, spec, supply_unit_price, unit,
part_no, qty, part_delivery_place, delivery_request_date)
VALUES
('-192149597','-2135417309',1868260552,'1','10000',
'W/M ASSY (RWMR1070-NO07 LH) / HOLDER','ady1225','2026-04-01 07:20:58.687075',
'Ti(GR5)','Ø50*22','10000','0001400','C3P50L22','1','RPS','2026-04-03')
ON CONFLICT (objid) DO NOTHING;
-- ── arrival_plan ──────────────────────────────────────────────
INSERT INTO arrival_plan
(objid, parent_objid, order_part_objid, part_objid,
arrival_qty, receipt_qty, receipt_date, location,
writer, group_seq, seq, inventory_status, sub_location, receiver_id)
VALUES
('1030275443','-2135417309','-192149597',1868260552,
'1','1','2026-04-01','L101',
'ady1225','1','1','Y','1490000','ady1225')
ON CONFLICT (objid) DO NOTHING;
-- 검증: 매퍼 WHERE (mail_send_date IS NOT NULL AND status='create') 통과 여부
-- SELECT pom.purchase_order_no, pop.part_no, ap.receipt_date
-- FROM purchase_order_master pom
-- JOIN purchase_order_part pop ON pop.purchase_order_master_objid = pom.objid
-- LEFT JOIN arrival_plan ap ON ap.parent_objid = pom.objid AND ap.part_objid = pop.part_objid
-- WHERE pom.mail_send_date IS NOT NULL AND pom.status = 'create';
@@ -0,0 +1,131 @@
-- ============================================================
-- 발주서 + 입고관리 — 구매관리 입고 3메뉴 + 발주서관리 의존 테이블
-- 원본: 운영DB 211.115.91.141:11133/waceplm
-- purchase_order_master 1건 (mail_send_yn='Y', status='create')
-- purchase_order_part 1건 (RPS26-0401-01 / C3P50L22)
-- arrival_plan 1건 (receipt_qty=1, receipt_date=2026-04-01)
-- 추출일: 2026-05-15
-- 적용대상: vexplor_rps (11134)
--
-- 운영 ↔ RPS 타입 차이:
-- part_objid: 운영 varchar(64) → RPS bigint (part_mng.objid bigint 호환)
--
-- 매퍼:
-- deliveryMngPartList: wace_plm/src/com/pms/mapper/purchaseOrder.xml:6309-6543
-- purchaseCloseList: wace_plm/src/com/pms/mapper/purchaseOrder.xml:6549-6765
-- projectPurchaseStat: wace_plm/src/com/pms/mapper/purchaseOrder.xml:6768-6951
--
-- 함정:
-- 1) wace 매퍼는 PROJECT_MGMT.OBJID = POM.CONTRACT_MGMT_OBJID 로 LEFT JOIN
-- (즉 contract_mgmt_objid 컬럼명이 실제로는 project_mgmt 키를 저장)
-- 2) WHERE: POM.MAIL_SEND_DATE IS NOT NULL AND POM.STATUS='create'
-- ============================================================
-- ── 1. purchase_order_master 보충 컬럼 (10개) ───────────────────
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS mail_send_yn varchar;
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS mail_send_date varchar;
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS form_type varchar(20);
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS sales_mng_user_id2 varchar(50);
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS request_content text;
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS purchase_close_date varchar(10);
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS shipment varchar;
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS packing varchar;
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS validity varchar;
ALTER TABLE purchase_order_master ADD COLUMN IF NOT EXISTS attn_to varchar;
-- ── 2. purchase_order_part (운영 43 cols 1:1, part_objid 만 bigint) ─
CREATE TABLE IF NOT EXISTS purchase_order_part (
objid varchar(64) NOT NULL,
purchase_order_master_objid varchar(64),
part_objid bigint,
order_qty varchar,
partner_price varchar,
remark varchar,
writer varchar,
regdate timestamp,
status varchar,
part_name varchar,
do_no varchar,
thickness varchar,
width varchar,
height varchar,
out_diameter varchar,
length varchar,
in_diameter varchar,
inven_total_qty varchar,
ld_part_objid varchar,
spec varchar,
maker varchar,
supply_unit_price varchar,
unit varchar,
price1 varchar,
price2 varchar,
price3 varchar,
part_no varchar,
supply_unit_vat_price varchar,
price4 varchar,
supply_unit_vat_sum_price varchar,
total_order_qty varchar,
stock_qty varchar,
real_order_qty varchar,
update_date timestamp,
modifier varchar,
real_supply_price varchar,
bom_qty varchar,
qty varchar,
part_delivery_place varchar(50),
product_name varchar(200),
work_order_no varchar(50),
delivery_request_date varchar(20),
currency varchar,
CONSTRAINT purchase_order_part_pkey PRIMARY KEY (objid)
);
CREATE INDEX IF NOT EXISTS idx_pop_master ON purchase_order_part (purchase_order_master_objid);
CREATE INDEX IF NOT EXISTS idx_pop_part ON purchase_order_part (part_objid);
-- ── 3. arrival_plan (운영 37 cols 1:1, part_objid bigint) ───────
CREATE TABLE IF NOT EXISTS arrival_plan (
objid varchar(64) NOT NULL,
parent_objid varchar(64),
order_part_objid varchar(64),
part_objid bigint,
arrival_plan_date varchar,
re_arrival_plan_date varchar,
arrival_qty varchar,
receipt_qty varchar,
genuine_qty varchar,
receipt_date varchar,
inspection_date varchar,
location varchar,
error_qty varchar,
error_reason varchar,
attribution varchar,
status varchar,
assembly_status varchar,
writer varchar,
group_seq varchar,
seq varchar,
defect_content varchar,
defect_action varchar,
defect_note varchar,
defect_action_date varchar,
defect_action_title varchar,
inventory_status varchar,
sub_location varchar,
receiver_id varchar,
purchase_close_date varchar,
foreign_type varchar(10),
exchange_rate numeric(15,2),
duty numeric(15,2),
import_vat numeric(15,2),
tax_invoice_date varchar(10),
export_decl_no varchar(100),
loading_date varchar(10),
tax_type varchar(20),
CONSTRAINT arrival_plan_pkey PRIMARY KEY (objid)
);
CREATE INDEX IF NOT EXISTS idx_arrival_parent ON arrival_plan (parent_objid);
CREATE INDEX IF NOT EXISTS idx_arrival_order_part ON arrival_plan (order_part_objid);
CREATE INDEX IF NOT EXISTS idx_arrival_part ON arrival_plan (part_objid);