const SettlementModel = require('../models/settlementModel'); const logger = require('../utils/logger'); const SettlementController = { // 월간 요약 (분류별 + 업체별) getMonthlySummary: async (req, res) => { try { const { year_month } = req.query; if (!year_month) return res.status(400).json({ success: false, message: '년월을 선택해주세요.' }); const [categorySummary, vendorSummary] = await Promise.all([ SettlementModel.getCategorySummary(year_month), SettlementModel.getVendorSummary(year_month) ]); res.json({ success: true, data: { categorySummary, vendorSummary } }); } catch (err) { logger.error('Settlement summary error:', err); res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); } }, // 월간 상세 구매 목록 getMonthlyPurchases: async (req, res) => { try { const { year_month } = req.query; if (!year_month) return res.status(400).json({ success: false, message: '년월을 선택해주세요.' }); const rows = await SettlementModel.getMonthlyPurchases(year_month); res.json({ success: true, data: rows }); } catch (err) { logger.error('Settlement purchases error:', err); res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); } }, // 가격 변동 목록 getPriceChanges: async (req, res) => { try { const { year_month } = req.query; if (!year_month) return res.status(400).json({ success: false, message: '년월을 선택해주세요.' }); const rows = await SettlementModel.getPriceChanges(year_month); res.json({ success: true, data: rows }); } catch (err) { logger.error('Settlement priceChanges error:', err); res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); } }, // 정산 완료 complete: async (req, res) => { try { const { year_month, vendor_id, notes } = req.body; if (!year_month || !vendor_id) return res.status(400).json({ success: false, message: '년월과 업체를 선택해주세요.' }); const result = await SettlementModel.completeSettlement(year_month, vendor_id, req.user.id, notes); res.json({ success: true, data: result, message: '정산 완료 처리되었습니다.' }); } catch (err) { logger.error('Settlement complete error:', err); res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); } }, // 정산 취소 cancel: async (req, res) => { try { const { year_month, vendor_id } = req.body; if (!year_month || !vendor_id) return res.status(400).json({ success: false, message: '년월과 업체를 선택해주세요.' }); const result = await SettlementModel.cancelSettlement(year_month, vendor_id); res.json({ success: true, data: result, message: '정산이 취소되었습니다.' }); } catch (err) { logger.error('Settlement cancel error:', err); res.status(500).json({ success: false, message: '서버 오류가 발생했습니다.' }); } } }; module.exports = SettlementController;