-- 创建财务分类配置表
CREATE TABLE IF NOT EXISTS expense_categories (
  id SERIAL PRIMARY KEY,
  category_level1 TEXT NOT NULL,
  category_level2 TEXT NOT NULL,
  label TEXT NOT NULL,
  description TEXT,
  sort_order INTEGER DEFAULT 0,
  is_active BOOLEAN DEFAULT true,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  UNIQUE(category_level1, category_level2)
);

-- 收入分类
INSERT INTO expense_categories (category_level1, category_level2, label, description, sort_order) VALUES
('income', 'contract_payment', '项目合同收款', '客户按合同打款到账', 1),
('income', 'deposit_refund', '质保金退回', '项目质保期满退回的质保金', 2),
('income', 'shareholder_investment', '股东投资入股', '股东注入的资金/股本', 3),
('income', 'other_income', '其他收入', '利息、退税、资产处置等', 4);

-- 项目支出分类
INSERT INTO expense_categories (category_level1, category_level2, label, description, sort_order) VALUES
('project', 'material', '材料采购', '电杆、导线、电缆、横担、金具、水泥等', 1),
('project', 'equipment', '设备采购', '变压器、开关柜、配电箱、计量箱等', 2),
('project', 'subcontract', '施工分包', '外包施工队的劳务/工程费', 3),
('project', 'labor', '人工工资', '项目现场工人、项目经理的工资或劳务费', 4),
('project', 'travel', '差旅交通', '驻现场人员路费，含跨境交通、油费', 5),
('project', 'accommodation', '食宿费用', '驻现场人员住宿费、餐饮费', 6),
('project', 'freight', '运输物流', '材料/设备一次运输、二次转运', 7),
('project', 'design', '勘测设计', '现场勘测、图纸设计费', 8),
('project', 'tools', '小型工具', '零散小工具，非固定资产', 9),
('project', 'client_relations', '客户/EDL关系', '项目相关的客户招待、电力局关系', 10),
('project', 'other_project', '其他项目支出', '保险、临时杂费', 11);

-- 公司支出分类
INSERT INTO expense_categories (category_level1, category_level2, label, description, sort_order) VALUES
('company', 'salary', '工资薪酬', '办公室管理人员工资、社保、公积金', 1),
('company', 'rent', '房租物业', '办公室/仓库租金、物业费、水电', 2),
('company', 'office', '办公费用', '办公用品、打印耗材、网络、电话', 3),
('company', 'commute', '交通通勤', '日常市内交通、公司车辆油费', 4),
('company', 'vehicle_maintenance', '车辆维保', '车辆维修、保养、配件更换', 5),
('company', 'assets', '固定资产', '购买车辆、大型工具、办公设备', 6),
('company', 'marketing', '营销拓展', '业务拓展、广告推广、展会', 7),
('company', 'entertainment', '招待费用', '公司级客户/合作方招待', 8),
('company', 'welfare', '员工福利', '聚餐、团建、节日礼品、体检', 9),
('company', 'logistics', '快递物流', '文件、样品快递费', 10),
('company', 'other_company', '其他公司支出', '中介佣金、税费等', 11);

-- 索引
CREATE INDEX IF NOT EXISTS idx_expense_categories_level1 ON expense_categories(category_level1);
CREATE INDEX IF NOT EXISTS idx_expense_categories_active ON expense_categories(is_active);
