賬務微服務包括科目管理、賬單管理。
1. 科目管理
科目是指賬單中一筆賬款的商品,可以理解爲是在項目和商戶進行交易的一個東西。
1.1 業務功能
(1)科目資料包括名稱和代碼,其中代碼全局唯一。錄入之後就不允許再進行修改。
(2)兩種業務狀態:使用中、已停用。
(3)兩種業務操作:啓用、停用。
(4)科目有稅額的概念,比如價內稅、價外稅等等,該屬性是用於計算稅額的。
1.2 數據結構
CREATE TABLE `acc_subject` (
`uuid` varchar(38) NOT NULL COMMENT '唯一標識',
`code` varchar(32) NOT NULL COMMENT '代碼',
`name` varchar(64) NOT NULL COMMENT '名稱',
`state` varchar(16) NOT NULL COMMENT '狀態',
`tax_rate` numeric(6, 4) NOT NULL COMMENT '稅率',
`remark` varchar(1024) NULL COMMENT '說明',
PRIMARY KEY (`uuid`),
INDEX `idx_subject_1`(`code`)
) COMMENT = '科目表';
2. 賬單管理
賬單的數據由招商微服務的結算週期明細出賬而來。
2.1 業務功能
(1)一個賬單包括項目(甲方)、商戶(乙方)、合同、銷售提成率、記賬日期、賬單總金額等數據。
(2)兩種業務狀態:未生效、已生效。當對結算週期明細進行出賬生成賬單,此時賬單爲未生效狀態,允許重複編輯和刪除。若刪除賬單,需要對相應的結算週期明細恢復出賬。
(3)一個賬單中包含若干賬款明細數據,一條賬款明細包括本次結算起止日期,本次結算金額,本次銷售提成總額,以及科目等數據。
2.2 數據結構
- 主表
CREATE TABLE `acc_statement` (
`uuid` varchar(38) NOT NULL COMMENT '唯一標識',
`bill_number` varchar(38) NOT NULL COMMENT '單號',
`state` varchar(16) NOT NULL COMMENT '業務狀態',
`pay_state` varchar(16) NOT NULL COMMENT '付款狀態',
`store_uuid` varchar(38) NOT NULL COMMENT '項目uuid',
`tenant_uuid` varchar(38) NOT NULL COMMENT '商戶uuid',
`contract_uuid` varchar(38) NOT NULL COMMENT '合同uuid',
`account_date` date NOT NULL COMMENT '記賬日期',
`sales_rate` numeric(19, 4) NOT NULL COMMENT '銷售提成率',
`total` numeric(19, 2) NOT NULL COMMENT '賬單總金額',
`tax` numeric(19, 2) NOT NULL COMMENT '賬單總稅額',
PRIMARY KEY (`uuid`),
INDEX `idx_statement_1`(`contract_uuid`),
INDEX `idx_statement_2`(`store_uuid`, `tenant_uuid`)
) COMMENT = '賬單主表';
- 賬款明細表
CREATE TABLE `acc_statement_detail` (
`uuid` varchar(38) NOT NULL COMMENT '唯一標識',
`statement_uuid` varchar(38) NOT NULL COMMENT '賬單主表uuid',
`line_number` int(8) NOT NULL COMMENT '行號',
`begin_date` date NOT NULL COMMENT '結算起始日期',
`end_date` date NOT NULL COMMENT '結算結束日期',
`total` numeric(19, 2) NOT NULL COMMENT '本次結算金額',
`tax` numeric(19, 2) NOT NULL COMMENT '本次結算稅額',
`sales_total` numeric(19, 2) NOT NULL COMMENT '本次銷售提成總額',
`sales_tax` numeric(19, 2) NOT NULL COMMENT '本次銷售提成稅額',
`subject_uuid` varchar(38) NOT NULL COMMENT '科目uuid',
`tax_rate` numeric(19, 4) NOT NULL COMMENT '稅率',
PRIMARY KEY (`uuid`),
INDEX `idx_smdetail_1`(`statement_uuid`, `line_number`)
) COMMENT = '賬單明細表';