-- `pay_bill` 增加对方金额 ALTER TABLE `bms`.`pay_bill` ADD COLUMN `supplier_amount` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '对方金额' AFTER `total_amount`; -- `pay_bill` 增加对账差额 ALTER TABLE `bms`.`pay_bill` ADD COLUMN `diff_amount` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '差额,对方减我方' AFTER `supplier_amount`; -- `pay_bill` 增加已核销金额 ALTER TABLE `bms`.`pay_bill` ADD COLUMN `paid_amount` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '已核销金额' AFTER `diff_amount`; -- `pay_bill` 增加到期日 ALTER TABLE `bms`.`pay_bill` ADD COLUMN `due_date` date DEFAULT NULL COMMENT '到期日' AFTER `paid_amount`; -- `pay_bill` 增加蓝字红字 ALTER TABLE `bms`.`pay_bill` ADD COLUMN `bill_kind` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'BLUE' COMMENT 'BLUE蓝字 RED红字' AFTER `status`; -- `pay_bill` 增加原账单 ALTER TABLE `bms`.`pay_bill` ADD COLUMN `original_bill_id` bigint(20) DEFAULT NULL COMMENT '红字对应的原账单ID' AFTER `bill_kind`; -- `pay_bill` 增加审核人 ALTER TABLE `bms`.`pay_bill` ADD COLUMN `confirm_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '审核人' AFTER `void_time`; -- `pay_bill` 增加审核时间 ALTER TABLE `bms`.`pay_bill` ADD COLUMN `confirm_time` datetime DEFAULT NULL COMMENT '审核时间' AFTER `confirm_by`; -- `pay_bill_line` 增加费用明细ID ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `fee_id` bigint(20) DEFAULT NULL COMMENT '应付费用明细ID' AFTER `bill_id`; -- `pay_bill_line` 增加费用来源 ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `fee_source` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'CALC计算 LADING提单分摊 MANUAL人工' AFTER `fee_name`; -- `pay_bill_line` 增加费用阶段 ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `fee_level` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '费用阶段 1A 2B 3C 4D' AFTER `fee_source`; -- `pay_bill_line` 增加对方金额 ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `supplier_amount` decimal(18,4) DEFAULT NULL COMMENT '对方金额' AFTER `amount`; -- `pay_bill_line` 增加差额 ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `diff_amount` decimal(18,4) DEFAULT NULL COMMENT '差额,对方减我方' AFTER `supplier_amount`; -- `pay_bill_line` 增加差异状态 ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `diff_status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'NONE' COMMENT 'NONE无差异 OPEN待处理 ACCEPT_OURS接受我方 ACCEPT_THEIRS接受对方' AFTER `diff_amount`; -- `prc_pay_bill_fee` 增加对账单行占用 ALTER TABLE `bms`.`prc_pay_bill_fee` ADD COLUMN `statement_line_id` bigint(20) DEFAULT NULL COMMENT '已进入的应付账单行ID,空表示未出账' AFTER `is_deleted`; -- `pay_bill_log` 增加业务类型 ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `biz_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'BILL账单 PAYMENT付款 FILE凭证' AFTER `bill_id`; -- `pay_bill_log` 增加业务单号 ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `biz_id` bigint(20) DEFAULT NULL COMMENT '业务单号' AFTER `biz_type`; -- `pay_bill_log` 增加账单行 ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `line_id` bigint(20) DEFAULT NULL COMMENT '账单行ID' AFTER `biz_id`; -- `pay_bill_log` 增加费用明细 ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `fee_id` bigint(20) DEFAULT NULL COMMENT '费用明细ID' AFTER `line_id`; -- `pay_bill_log` 增加改前金额 ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `amount_before` decimal(18,4) DEFAULT NULL COMMENT '改前金额' AFTER `operation_desc`; -- `pay_bill_log` 增加改后金额 ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `amount_after` decimal(18,4) DEFAULT NULL COMMENT '改后金额' AFTER `amount_before`; -- 新建应付账单差异表 CREATE TABLE `bms`.`pay_bill_diff` ( `diff_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '差异ID', `bill_id` bigint(20) NOT NULL COMMENT '应付账单ID', `line_id` bigint(20) NOT NULL COMMENT '账单行ID', `fee_id` bigint(20) DEFAULT NULL COMMENT '费用明细ID', `our_amount` decimal(18,4) NOT NULL COMMENT '我方金额', `supplier_amount` decimal(18,4) NOT NULL COMMENT '对方金额', `diff_amount` decimal(18,4) NOT NULL COMMENT '差额,对方减我方', `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '差异原因', `handle_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'OPEN未处理 ACCEPT_OURS接受我方 ACCEPT_THEIRS接受对方', `adjust_fee_id` bigint(20) DEFAULT NULL COMMENT '接受对方时新增的调整费用', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL COMMENT '创建时间', PRIMARY KEY (`diff_id`), KEY `idx_pay_bill_diff_line` (`line_id`, `handle_type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='应付账单差异'; -- 新建应付凭证表 CREATE TABLE `bms`.`pay_bill_file` ( `file_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '凭证ID', `bill_id` bigint(20) NOT NULL COMMENT '应付账单ID', `file_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'INVOICE发票 STATEMENT对账单 DEBIT费用通知 OTHER其他', `invoice_no` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '发票号', `invoice_date` date DEFAULT NULL COMMENT '开票日', `amount` decimal(18,2) DEFAULT NULL COMMENT '价税合计', `tax_amount` decimal(18,2) DEFAULT NULL COMMENT '税额', `file_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件名', `file_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件地址', `deleted` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '0正常 1删除', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '上传人', `create_time` datetime NOT NULL COMMENT '上传时间', PRIMARY KEY (`file_id`), KEY `idx_pay_bill_file_bill` (`bill_id`, `deleted`), KEY `idx_pay_bill_file_invoice` (`invoice_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='应付凭证'; -- 新建应付账单审核表 CREATE TABLE `bms`.`pay_bill_approval` ( `approval_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '审核ID', `bill_id` bigint(20) NOT NULL COMMENT '应付账单ID', `action` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'SUBMIT提交 APPROVE通过 REJECT驳回', `opinion` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '意见', `operator_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '操作人', `create_time` datetime NOT NULL COMMENT '操作时间', PRIMARY KEY (`approval_id`), KEY `idx_pay_bill_approval_bill` (`bill_id`, `create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='应付账单审核'; -- 新建应付付款表 CREATE TABLE `bms`.`pay_payment` ( `payment_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '付款单ID', `payment_no` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '付款单号', `supplier_id` bigint(20) NOT NULL COMMENT '供应商ID', `supplier_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '供应商名称', `currency` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '币种', `pay_date` date NOT NULL COMMENT '付款日', `pay_method` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'BANK银行转账 CASH现金 OTHER其他', `bank_account` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '付款账户', `amount` decimal(18,2) NOT NULL COMMENT '付款金额', `bank_fee` decimal(18,2) NOT NULL DEFAULT 0.00 COMMENT '手续费', `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'DRAFT' COMMENT 'DRAFT草稿 PAID已付款 VOID已作废', `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL COMMENT '创建时间', `confirm_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '确认人', `confirm_time` datetime DEFAULT NULL COMMENT '确认时间', PRIMARY KEY (`payment_id`), UNIQUE KEY `uk_pay_payment_no` (`payment_no`), KEY `idx_pay_payment_supplier` (`supplier_id`, `status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='应付付款'; -- 新建应付付款核销表 CREATE TABLE `bms`.`pay_payment_alloc` ( `alloc_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '核销ID', `payment_id` bigint(20) NOT NULL COMMENT '付款单ID', `bill_id` bigint(20) NOT NULL COMMENT '应付账单ID', `alloc_amount` decimal(18,2) NOT NULL COMMENT '本次核销金额', PRIMARY KEY (`alloc_id`), KEY `idx_pay_payment_alloc_pay` (`payment_id`), KEY `idx_pay_payment_alloc_bill` (`bill_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='应付付款核销'; -- 账单管理下新增应付付款菜单 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) SELECT '应付付款', parent.menu_id, 9, 'payPayment', 'price/billing/payPayment/index', 1, 0, 'C', '0', '0', 'price:payPayment:list', 'money', 'admin', sysdate(), '应付付款单,核销已确认的应付账单' FROM `bms`.`sys_menu` parent WHERE parent.menu_name = '账单管理' AND parent.menu_type = 'M' ORDER BY parent.menu_id LIMIT 1; -- 应付付款查询按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付付款查询', m.menu_id, 1, '', '', 1, 0, 'F', '0', '0', 'price:payPayment:query', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payPayment:list' LIMIT 1; -- 应付付款登记按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付付款登记', m.menu_id, 2, '', '', 1, 0, 'F', '0', '0', 'price:payPayment:add', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payPayment:list' LIMIT 1; -- 应付付款确认按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付付款确认', m.menu_id, 3, '', '', 1, 0, 'F', '0', '0', 'price:payPayment:confirm', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payPayment:list' LIMIT 1; -- 应付付款作废按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付付款作废', m.menu_id, 4, '', '', 1, 0, 'F', '0', '0', 'price:payPayment:void', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payPayment:list' LIMIT 1; -- 账单管理下新增应付凭证菜单 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`) SELECT '应付凭证', parent.menu_id, 10, 'payVoucher', 'price/billing/payVoucher/index', 1, 0, 'C', '0', '0', 'price:payVoucher:list', 'documentation', 'admin', sysdate(), '应付发票和对账凭证' FROM `bms`.`sys_menu` parent WHERE parent.menu_name = '账单管理' AND parent.menu_type = 'M' ORDER BY parent.menu_id LIMIT 1; -- 应付凭证查询按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付凭证查询', m.menu_id, 1, '', '', 1, 0, 'F', '0', '0', 'price:payVoucher:query', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payVoucher:list' LIMIT 1; -- 应付凭证上传按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付凭证上传', m.menu_id, 2, '', '', 1, 0, 'F', '0', '0', 'price:payVoucher:add', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payVoucher:list' LIMIT 1; -- 应付凭证删除按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付凭证删除', m.menu_id, 3, '', '', 1, 0, 'F', '0', '0', 'price:payVoucher:remove', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payVoucher:list' LIMIT 1; -- 应付账单提交审核按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付账单提交', m.menu_id, 5, '', '', 1, 0, 'F', '0', '0', 'price:payBill:submit', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payBill:list' LIMIT 1; -- 应付账单审核按钮 INSERT INTO `bms`.`sys_menu` (`menu_name`, `parent_id`, `order_num`, `path`, `component`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`) SELECT '应付账单审核', m.menu_id, 6, '', '', 1, 0, 'F', '0', '0', 'price:payBill:approve', '#', 'admin', sysdate() FROM `bms`.`sys_menu` m WHERE m.perms = 'price:payBill:list' LIMIT 1; -- 应付付款和应付凭证授给已有应付账单菜单的角色 INSERT INTO `bms`.`sys_role_menu` (`role_id`, `menu_id`) SELECT rm.role_id, dst.menu_id FROM `bms`.`sys_role_menu` rm INNER JOIN `bms`.`sys_menu` src ON src.menu_id = rm.menu_id AND src.perms = 'price:payBill:list' INNER JOIN `bms`.`sys_menu` dst ON dst.perms IN ('price:payPayment:list', 'price:payPayment:query', 'price:payPayment:add', 'price:payPayment:confirm', 'price:payPayment:void', 'price:payVoucher:list', 'price:payVoucher:query', 'price:payVoucher:add', 'price:payVoucher:remove', 'price:payBill:submit', 'price:payBill:approve');