调整结算管理

This commit is contained in:
2026-08-25 22:34:49 +08:00
parent fa58ce052d
commit 8075d3bf4d
22 changed files with 287 additions and 66 deletions
@@ -11,7 +11,9 @@ CREATE TABLE IF NOT EXISTS `blade_formal_settlement` (
`payee_name` varchar(200) DEFAULT NULL, `currency` varchar(20) NOT NULL DEFAULT 'RMB', `settlement_amount` decimal(18,2) NOT NULL DEFAULT '0.00',
`local_currency` varchar(20) NOT NULL DEFAULT 'RMB', `local_settlement_amount` decimal(18,2) DEFAULT NULL,
`applied_payment_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '申请付款金额含预付',
`paid_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '已收已付合计',
`paid_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '已收已付合计含预付',
`remaining_payable_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '剩余可付金额',
`invoice_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '发票金额',
`exchange_rate_date` date DEFAULT NULL, `exchange_rate` decimal(18,6) DEFAULT NULL,
`invoice_status` varchar(30) NOT NULL DEFAULT 'unreceived', `payment_status` varchar(30) NOT NULL DEFAULT 'unpaid',
`approval_status` varchar(30) NOT NULL DEFAULT 'draft', `current_node` varchar(100) DEFAULT NULL, `current_processor` varchar(200) DEFAULT NULL,
@@ -0,0 +1,34 @@
-- 正式结算列表补充剩余可付金额、发票金额
ALTER TABLE `blade_formal_settlement`
ADD COLUMN `remaining_payable_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '剩余可付金额' AFTER `paid_amount`,
ADD COLUMN `invoice_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '发票金额' AFTER `remaining_payable_amount`;
UPDATE `blade_formal_settlement`
SET `remaining_payable_amount` = GREATEST(`settlement_amount` - `paid_amount`, 0)
WHERE `is_deleted` = 0;
UPDATE `blade_formal_settlement` settlement
LEFT JOIN (
SELECT invoice_relation.`formal_settlement_id`, SUM(invoice_relation.`allocated_invoice_amount`) AS `invoice_amount`
FROM (
SELECT relation.`formal_settlement_id`, relation.`allocated_invoice_amount`
FROM `blade_invoice_application_settlement` relation
INNER JOIN `blade_invoice_application` application
ON application.`id` = relation.`invoice_application_id`
AND application.`is_deleted` = 0
AND application.`approval_status` <> 'voided'
WHERE relation.`is_deleted` = 0
UNION ALL
SELECT relation.`formal_settlement_id`, relation.`allocated_invoice_amount`
FROM `blade_invoice_receipt_settlement` relation
INNER JOIN `blade_invoice_receipt` receipt
ON receipt.`id` = relation.`invoice_receipt_id`
AND receipt.`is_deleted` = 0
AND receipt.`approval_status` <> 'voided'
WHERE relation.`is_deleted` = 0
) invoice_relation
GROUP BY invoice_relation.`formal_settlement_id`
) invoice_summary ON invoice_summary.`formal_settlement_id` = settlement.`id`
SET settlement.`invoice_amount` = COALESCE(invoice_summary.`invoice_amount`, 0)
WHERE settlement.`is_deleted` = 0;
@@ -0,0 +1,35 @@
-- MySQL 5.7+ 兼容:为应收应付货物费用明细增加来源。
-- 请在 transport 数据库执行。本脚本使用 information_schema 判断,可重复执行。
DELIMITER $$
DROP PROCEDURE IF EXISTS `upgrade_receivable_payable_cargo_fee_data_source_20260825`$$
CREATE PROCEDURE `upgrade_receivable_payable_cargo_fee_data_source_20260825`()
BEGIN
DECLARE db_name varchar(128);
SET db_name = DATABASE();
IF NOT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_schema = db_name
AND table_name = 'blade_receivable_payable_cargo_fee'
AND column_name = 'data_source'
) THEN
ALTER TABLE `blade_receivable_payable_cargo_fee`
ADD COLUMN `data_source` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
NOT NULL DEFAULT '自动生成'
COMMENT '来源:自动生成/手工录入' AFTER `line_no`;
END IF;
UPDATE `blade_receivable_payable_cargo_fee`
SET `data_source` = '手工录入'
WHERE `billing_factor` = '手工调整'
AND `data_source` <> '手工录入';
END$$
CALL `upgrade_receivable_payable_cargo_fee_data_source_20260825`()$$
DROP PROCEDURE `upgrade_receivable_payable_cargo_fee_data_source_20260825`$$
DELIMITER ;
@@ -64,12 +64,13 @@ CREATE TABLE IF NOT EXISTS `blade_receivable_payable_cargo_fee` (
`detail_id` bigint(20) NOT NULL COMMENT '应收应付明细ID',
`waybill_id` bigint(20) DEFAULT NULL COMMENT '运单ID',
`line_no` varchar(30) DEFAULT NULL COMMENT '行号',
`data_source` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '自动生成' COMMENT '来源:自动生成/手工录入',
`cargo_name` varchar(100) DEFAULT NULL COMMENT '货物名称',
`cargo_type` varchar(100) DEFAULT NULL COMMENT '货物类型',
`specification` varchar(255) DEFAULT NULL COMMENT '规格',
`model` varchar(255) DEFAULT NULL COMMENT '型号',
`billing_factor` varchar(100) DEFAULT NULL COMMENT '运费计费要素',
`billing_type` varchar(100) DEFAULT NULL COMMENT '运费计费类型',
`billing_factor` varchar(100) DEFAULT NULL COMMENT '计费要素',
`billing_type` varchar(100) DEFAULT NULL COMMENT '计费类型',
`transport_quantity` decimal(18,6) DEFAULT NULL COMMENT '运输量',
`quantity_unit` varchar(50) DEFAULT NULL COMMENT '数量单位',
`price_unit` varchar(50) DEFAULT NULL COMMENT '运费计算单位',
@@ -11,7 +11,8 @@ CREATE TABLE IF NOT EXISTS `blade_settlement_adjustment` (
`original_settlement_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '原结算金额',
`adjusted_settlement_amount` decimal(18,2) NOT NULL DEFAULT '0.00' COMMENT '调整后结算金额',
`approval_status` varchar(30) NOT NULL DEFAULT 'draft', `current_node` varchar(100) DEFAULT NULL,
`current_processor` varchar(200) DEFAULT NULL, `kingdee_sync_status` varchar(30) DEFAULT NULL COMMENT '关联正式单金蝶状态', `remark` varchar(200) DEFAULT NULL, `approved_time` datetime DEFAULT NULL,
`current_processor` varchar(200) DEFAULT NULL, `kingdee_sync_status` varchar(30) DEFAULT NULL COMMENT '关联正式单金蝶状态',
`attachments_json` longtext COLLATE utf8mb4_general_ci COMMENT '附件材料JSON', `remark` varchar(200) DEFAULT NULL, `approved_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`), UNIQUE KEY `uk_settlement_adjustment_no` (`tenant_id`,`adjustment_no`),
KEY `idx_adjustment_formal` (`formal_settlement_id`), KEY `idx_adjustment_status` (`approval_status`), KEY `idx_adjustment_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='结算调整单';
@@ -0,0 +1,3 @@
-- 结算调整单增加附件材料字段
ALTER TABLE `blade_settlement_adjustment`
ADD COLUMN `attachments_json` longtext COLLATE utf8mb4_general_ci NULL COMMENT '附件材料JSON' AFTER `kingdee_sync_status`;