// ============================================================
// 구매관리 — 7개 메뉴 + 공통 옵션 라우트.
// app.ts: app.use("/api/purchase", purchaseRoutes)
// ============================================================

import { Router } from "express";
import { authenticateToken } from "../middleware/authMiddleware";
import * as ctrl from "../controllers/purchaseController";

const router = Router();
router.use(authenticateToken);

// 그리드 7종
router.get("/purchase-request",  ctrl.getPurchaseRequest);   // 구매리스트관리
router.get("/quotation-request", ctrl.getQuotationRequest);  // 견적요청서관리
router.get("/proposal",          ctrl.getProposal);          // 품의서관리
router.get("/inbound",           ctrl.getInbound);           // 입고관리
router.get("/inbound-by-item",   ctrl.getInboundByItem);     // 품목별 입고관리
router.get("/inbound-by-date",   ctrl.getInboundByDate);     // 입고일별 입고관리
router.get("/project-status",    ctrl.getProjectStatus);     // 프로젝트별 발주/입고 현황
router.get("/order-list",        ctrl.getPurchaseOrderList);  // 발주서관리 (wace purchaseOrderMasterList_new 1:1)

// 발주서 폼 (general / outsourcing / english 양식, wace purchaseOrderFormPopup_*.do 1:1)
router.get   ("/order-form/init",                ctrl.getPurchaseOrderFormInit);     // 품의서에서 자동 채움
router.post  ("/order-form/save",                ctrl.savePurchaseOrderForm);        // 마스터+파트 UPSERT
router.post  ("/order-form/mail",                ctrl.sendPurchaseOrderMail);        // 메일 발송 (PDF 첨부)
router.get   ("/order-form/mail-info/:objid",    ctrl.getPurchaseOrderMailInfo);     // 메일 다이얼로그 자동 채움
router.get   ("/order-form/:objid",              ctrl.getPurchaseOrderForm);         // 수정/조회
router.delete("/order-form/:objid",              ctrl.deletePurchaseOrderForm);      // 삭제 cascade

// 입고관리 (wace deliveryAcceptanceFormPopUp_new 1:1)
router.get ("/inbound-form/:pomObjid", ctrl.getInboundFormInit);   // 입고등록 팝업 자동채움
router.post("/inbound-form/save",      ctrl.saveInboundForm);      // arrival_plan 다수 UPSERT
router.post("/arrival/deadline",       ctrl.saveArrivalDeadline);  // 마감정보 일괄 UPDATE
router.post("/arrival/close",          ctrl.closeArrival);         // 매입마감 일괄

// 공통 옵션
router.get("/options/suppliers", ctrl.getSuppliers);
router.get("/options/vendors",   ctrl.getVendors);    // wace client_mng 기반
router.get("/options/users",     ctrl.getUsers);
router.get("/options/projects",  ctrl.getProjects);
router.get("/options/partner-managers/:partnerObjid", ctrl.getPartnerManagers);   // 발주서 메일 담당자
router.get("/options/warehouses", ctrl.getWarehouses);   // 입고창고 (warehouse_info)
router.get("/options/acct-codes", ctrl.getAcctCodes);    // 계정과목 (account_code_info)

export default router;
