-- =====================================================
-- CRM 开票功能初始化脚本
-- 1. 建表 crm_invoice
-- 2. 数据字典 crm_invoice_type（发票类型）
-- 3. 菜单与按钮权限（营销管理 -> 开票管理）
-- =====================================================

-- 1. 建表
CREATE TABLE IF NOT EXISTS `crm_invoice` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `no` varchar(64) NOT NULL COMMENT '开票编号',
  `customer_id` bigint NOT NULL COMMENT '客户编号',
  `contract_id` bigint NOT NULL COMMENT '合同编号',
  `owner_user_id` bigint NOT NULL COMMENT '负责人编号',
  `invoice_type` int NOT NULL COMMENT '发票类型（字典 crm_invoice_type）',
  `invoice_no` varchar(64) DEFAULT NULL COMMENT '发票号码',
  `invoice_title` varchar(255) DEFAULT NULL COMMENT '发票抬头',
  `price` decimal(18,2) NOT NULL COMMENT '开票金额（元）',
  `invoice_time` datetime DEFAULT NULL COMMENT '开票日期',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `process_instance_id` varchar(64) DEFAULT NULL COMMENT '工作流编号',
  `audit_status` int NOT NULL COMMENT '审批状态（crm_audit_status）',
  `creator` varchar(64) DEFAULT NULL COMMENT '创建者',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updater` varchar(64) DEFAULT NULL COMMENT '更新者',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
  `deleted` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='CRM 开票';

-- 2. 数据字典类型：crm_invoice_type
INSERT INTO `system_dict_type` (`id`, `name`, `type`, `status`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `deleted_time`)
VALUES (1061500, 'CRM 发票类型', 'crm_invoice_type', 0, '开票记录的发票类型', '1', NOW(), '1', NOW(), b'0', NULL);

-- 2.1 数据字典数据
INSERT INTO `system_dict_data` (`id`, `sort`, `label`, `value`, `dict_type`, `status`, `color_type`, `css_class`, `remark`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
  (1061600, 1, '增值税专用发票', '1', 'crm_invoice_type', 0, 'primary', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1061601, 2, '增值税普通发票', '2', 'crm_invoice_type', 0, 'success', '', '', '1', NOW(), '1', NOW(), b'0'),
  (1061602, 3, '电子发票', '3', 'crm_invoice_type', 0, 'warning', '', '', '1', NOW(), '1', NOW(), b'0');

-- 3. 菜单：营销管理(id=2617) -> 开票管理
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES (1064000, '开票管理', '', 2, 59, 2617, 'invoice', '#', 'crm/invoice/index', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');

-- 3.1 开票管理按钮权限
INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `component_name`, `status`, `visible`, `keep_alive`, `always_show`, `creator`, `create_time`, `updater`, `update_time`, `deleted`)
VALUES
  (1064001, '开票管理查询', 'crm:invoice:query', 3, 1, 1064000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1064002, '开票管理创建', 'crm:invoice:create', 3, 2, 1064000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1064003, '开票管理更新', 'crm:invoice:update', 3, 3, 1064000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1064004, '开票管理删除', 'crm:invoice:delete', 3, 4, 1064000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0'),
  (1064005, '开票管理导出', 'crm:invoice:export', 3, 5, 1064000, '', '', '', '', 0, b'1', b'1', b'1', '1', NOW(), '1', NOW(), b'0');
