财务模块-新需求整理与开发
- 财务ERP系统需求规格说明书与开发方案
- 财务ERP - 进销存模块(采购与台账)详细开发文档
- 财务ERP - 进销存模块(采购与台账)详细开发流程文档
- 财务ERP - 进销存模块(采购与台账)开发纲要
- 财务设计框架20251011-原始需求
财务ERP系统需求规格说明书与开发方案
版本历史
| 日期 | 版本 | 修改内容 | 作者 |
|---|---|---|---|
| 2026-06-25 | v1.0 | 初始版本 | 架构组 |
1. 项目概述
1.1 项目背景
本公司目前财务管理分散在多个系统(金蝶、飞书多维表格、Wimoor ERP、海外仓、OMS等),缺乏统一的财务核算与报表体系。为满足合规要求、提高核算效率、实现业财一体化,决定自建财务ERP会计模块,作为现有业务系统的补充与整合。
1.2 系统目标
-
统一会计核算:建立标准化的会计科目、账套、凭证、报表体系。
-
多数据源自动记账:对接飞书多维表格、亚马逊结算报告、采购模块、支付平台等,自动生成会计凭证。
-
全链路台账管理:实现采购账户、供应商、发票、库存(进销存)的精细化管理,支持账期、对账、分摊等复杂业务场景。
-
合规留痕:四票一致(合同、发票、物流、付款)与业务附件留存,满足税务稽查与审计要求。
-
灵活报表与合并:支持单个账套报表及多账套合并,提供资产负债表、利润表、现金流量表等标准财务报表。
-
权限与隔离:支持按账套、科目、操作权限精细化控制,满足多公司、多项目的数据隔离与授权需求。
1.3 适用范围
本系统服务于公司财务部、采购部、物流部、运营部及管理层,覆盖跨境电商全业务流程(采购、物流、销售、支付、库存、税务)。
2. 总体功能架构
系统分为基础设置、凭证管理、自动记账、台账管理、报表中心、结账处理六大模块。
3. 功能需求详述
3.1 基础设置
3.1.1 会计科目
-
科目结构:支持多级科目(如一级、二级、三级),编码使用数字分层(如10020101)。
-
科目属性:需指定是否为“现金及现金等价物科目”、“非现金科目”;支持多币种(默认人民币,可设置外币)。
-
辅助核算:支持按供应商、客户、部门、存货、项目等进行辅助核算,便于报表多维分析。
-
科目禁用/启用:支持科目停用,历史数据保留。
-
科目复制:支持从金蝶或现有模板快速导入。
3.1.2 账套管理
-
账套定义:代表一个独立的会计核算主体(如公司、店铺、项目)。
-
账套组合:允许创建“合并账套”,其数据为多个子账套的汇总(如集团账套包含所有子公司)。
-
账套权限:用户可被授予特定账套的查看/登记权限,各账套数据隔离。
-
账套参数:每个账套可独立设置本位币、会计期间、小数位数等。
3.1.3 用户与权限
-
功能权限:控制用户对各菜单模块的访问(查看、新增、修改、删除、审核)。
-
数据权限:按账套、科目范围限制数据可见性。
-
操作审计:记录所有关键操作(凭证录入、审核、修改)的日志(时间、操作人、IP)。
3.1.4 进销存配置
-
采购账户配置:定义采购支付账户类型(现金/账期)、费用类型、对应会计科目、凭证生成规则(详见3.4.1)。
-
供应商配置:维护供应商基本信息及多个收款账户(公司名称、银行账号),支持默认设置。
-
存货核算方法:仅支持移动加权平均法,系统自动计算出库成本。
-
仓库设置:区分本地仓库与FBA仓库,设定对应的科目映射。
3.2 凭证管理
3.2.1 手工录入凭证
-
凭证要素:凭证字(收、付、转、记)、凭证号、日期、账套、制单人、摘要、会计科目(带辅助核算)、借贷方金额、币别/汇率、附件张数。
-
借贷平衡校验:自动校验借贷合计是否相等,不相等禁止保存。
-
凭证模板:支持保存常用分录模板,提高录入效率。
-
凭证审核:需审核后方可生成报表;支持反审核。
3.2.2 凭证查询与导出
-
多维筛选:按凭证字号、日期范围、账套、科目、制单人、来源模块、摘要模糊搜索等。
-
显示原币:支持显示外币凭证的原币金额及折算本位币金额。
-
导出格式:支持导出为Excel、PDF,用于打印或外部审计。
3.2.3 凭证附件
-
每张凭证可关联多个附件(图片、PDF、Excel等),附件存储于服务器并加密,保存期限不少于10年。
-
支持从飞书审批、多维表格自动关联附件。
3.3 自动记账
3.3.1 飞书多维表格连接
-
配置模板:定义多维表格数据源(API Token、表格ID)、字段映射(账套、日期、金额、科目等)、筛选条件、凭证生成规则。
-
生成方式:支持前端手动触发(勾选记录发送至ERP)或定时轮询自动生成。
-
异常处理:记录未成功生成凭证的异常数据,提供异常列表供人工处理。
-
典型应用:工资分摊、行政费用付款、报销审批等。
3.3.2 亚马逊月度结算数据自动凭证
-
数据来源:通过SP-API获取Settlement Report或Payment Report,按月度汇总。
-
凭证逻辑:
-
按回款日期确认收入,借:应收账款-亚马逊平台,贷:主营业务收入(按商品类别)、其他业务收入(运费等)。
-
平台费用(佣金、仓储费、广告费等)计入费用科目,借:销售费用/管理费用,贷:应收账款-亚马逊平台。
-
汇率使用当月中国外汇交易中心公布的中间价。
-
-
附件留存:自动下载月度结算PDF作为凭证附件。
3.3.3 采购模块自动记账(详见3.4.1)
-
采购订单付款、入库、发票入账等操作实时生成会计凭证。
3.3.4 支付平台出账
-
连连星球等支付平台:提供模块展示各币种余额,出账时按账套分摊金额,生成凭证(借:内部往来/费用,贷:其他货币资金-连连)。
-
内部往来:用于账套间资金调拨,合并报表时抵消为零。
3.4 台账管理(核心模块)
3.4.1 采购账户台账
-
功能目标:管理所有采购支付账户(现金类/账期类)的收支明细、余额、对账;支持账期结算与批量付款。
-
数据来源:采购订单付款、台账付款(账期还款)、退款等操作。
-
筛选视图:按采购账户、账套、时间、付款/库存/发票状态多维过滤。
-
台账付款(账期类):
-
支持勾选多条未付记录,统一生成付款单,选择现金类账户进行实际支付。
-
支持Excel模板批量导入付款明细(用于跨境直采等批量场景)。
-
付款时自动生成凭证(借:应付账款-供应商,贷:其他货币资金/银行存款)。
-
-
退款处理:支持部分或全额退款,自动生成红字凭证冲销原分录。
-
余额/对账:提供账户余额统计、与银行流水对账功能(后续对接银行API)。
3.4.2 供应商台账
-
功能目标:管理供应商的应付、预付、发票、库存状态。
-
核心字段:供应商、订单、SKU、收款账号、付款状态、库存状态、发票状态。
-
发票入账:支持勾选未开票记录,关联数电发票(通过API获取)生成凭证(借:预付账款-在途发票,贷:预付账款-采购供应商)。
-
对账单导出:可按供应商导出未开票明细,用于催开发票。
3.4.3 发票台账
-
数据同步:通过税局API(或金蝶接口)获取数电发票信息(发票号码、销方、金额、税额、状态)。
-
台账展示:按账套、销方、时间筛选,显示发票状态(未入账/已入账/作废/红冲等)。
-
入账操作:支持手工选择发票并生成凭证(借:费用/库存,贷:预付账款-供应商),可分摊到不同账套。
-
统计分析:按账簿汇总发票金额、税额,比对账面预付账款余额。
3.4.4 本地仓库台账(进销存)
-
核算方式:移动加权平均法,每笔入库重新计算单位成本。
-
汇总账:按月展示SKU的期初、入库、出库、期末数量与金额,提供勾稽校验(与科目余额对比)。
-
明细账:按时间、操作类型(采购入库、销售出库、盘点盈亏、调拨等)展示每次变动明细,点击可联查对应凭证。
-
成本计算:自动计算每次出库成本(出库数量 × 当前移动平均单价),保留精度,避免尾差。
3.4.5 FBA仓库台账
-
数据来源:亚马逊库存报告(Inventory Health Report)及发货记录。
-
核算方式:按月汇总核算,发货至FBA时按移动加权价结转成本。
-
勾稽校验:与亚马逊平台报告核对,确保库存价值准确。
3.5 报表中心
-
科目余额表:展示所选期间各科目期初、发生额、期末余额,支持外币原币与本位币双列显示。
-
明细账/总账:按科目查询所有凭证明细,支持导出。
-
资产负债表:按标准格式(期末余额、年初余额)自动生成,项目名称与金蝶一致。
-
利润表:支持月、季、年,展示本期金额与本年累计,可隐藏/显示成本占比。
-
现金流量表:按直接法编制,提供试算平衡校验。
-
所有者权益变动表:年报格式,暂简化处理。
3.6 结账处理
-
期末调汇:对外币科目按月末汇率调整汇兑损益。
-
结转销售成本:根据出库记录自动计算并生成凭证(借:主营业务成本,贷:库存商品)。
-
结转损益:将损益类科目余额结转至本年利润。
-
结账:结账后禁止修改该期间凭证,支持反结账。
4. 非功能需求
4.1 性能要求
-
支持并发用户数≥50,凭证查询响应时间≤2秒。
-
月度结算数据生成凭证(约1万条记录)处理时间≤5分钟。
-
数据库读写分离,历史数据归档。
4.2 安全性
-
数据传输HTTPS加密,敏感字段(金额)数据库加密存储。
-
操作日志保留不少于180天,审计日志保留不少于10年。
-
防SQL注入、XSS攻击,接口鉴权采用JWT Token。
4.3 可靠性
-
系统可用性≥99.9%,每日自动备份数据库与附件。
-
异常数据自动记录并告警(邮件/飞书通知)。
4.4 可维护性
-
模块化、微服务化设计(可拆分会计核心、台账、报表独立服务)。
-
配置化程度高(科目映射、凭证模板、连接器均支持界面配置)。
5. 技术架构
5.1 整体技术栈
-
后端:Spring Boot 2.7+,Spring Security,MyBatis-Plus,MySQL 8.0,Redis(缓存),RabbitMQ(异步任务)。
-
前端:Vue 3 + TypeScript,Element Plus,Vite,Axios。
-
部署:Docker容器化,Nginx负载均衡,Jenkins CI/CD。
5.2 模块划分(后端微服务)
| 服务名 | 职责 |
|---|---|
accounting-core |
科目、账套、凭证、基础设置、手工录入、查询 |
automation-service |
自动记账引擎(多维表格、亚马逊、采购事件) |
ledger-service |
台账管理(采购账户、供应商、发票、库存) |
report-service |
报表生成(科目余额表、三表等) |
file-service |
附件存储与管理 |
auth-service |
用户认证与权限 |
5.3 数据库设计概要(核心表)
-
account_set(账套表) -
account_subject(科目表,含辅助核算字段) -
voucher(凭证主表) -
voucher_detail(凭证分录明细,含外币字段) -
auto_template(自动凭证模板配置) -
purchase_account(采购账户) -
purchase_order(采购订单) -
purchase_payment(采购付款记录) -
supplier(供应商) -
invoice(发票台账) -
inventory_transaction(库存变动明细) -
warehouse_stock(仓库库存余额)
5.4 关键接口设计(RESTful)
-
/api/v1/accounting/...凭证相关 -
/api/v1/ledger/purchase-account/...采购台账 -
/api/v1/automation/feishu/...飞书连接 -
/api/v1/report/...报表数据
6. 开发计划(分阶段实施)
| 阶段 | 时间节点 | 主要内容 | 备注 |
|---|---|---|---|
| 第一阶段 | 2026-10 ~ 2027-02 | 基础设置(科目、账套、权限)、手工凭证、凭证查询、基础报表(科目余额表) | 核心基建 |
| 第二阶段 | 2027-03 ~ 2027-05 | 自动记账:飞书多维表格连接、亚马逊月度数据自动凭证、结账处理(调汇、结转) | 提高效率 |
| 第三阶段 | 2027-06 ~ 2027-09 | 进销存模块(采购账户台账、供应商台账、发票台账、仓库台账)及关联凭证生成 | 业财融合 |
| 第四阶段 | 2027-10 ~ 2027-12 | 完善报表(三表)、权限深化、附件管理、多币种优化、性能调优 | 精细化 |
| 后续 | 2028+ | 对接银行API、税务接口、更多平台(Wimoor、海外仓) | 生态扩展 |
7. 关键业务规则说明
-
损益类科目红字规则:损益类科目不允许借方蓝字,必须记贷方红字(负数),以保证利润表取数正确。
-
凭证日期:必须等于业务实际发生日期(如付款日期、收入确认日期),不得随意提前或推后。
-
内部往来抵消:多账套合并报表时,内部往来科目(如其他应收款-账套间)必须清零。
-
库存成本核算:采用移动加权平均,每次出库成本 = 出库数量 × 当前移动平均单价;库存余额不通过单价×数量反算,而通过期初+入库-出库滚动计算。
-
附件保存:所有凭证和重要业务单据(合同、发票、物流单)均需上传附件,电子档案保存不少于10年。
8. 开发注意事项
-
前端适配:大量表格需支持动态列、排序、筛选、导出,建议封装通用表格组件。
-
性能优化:台账页面数据量大,需后端分页、前端虚拟滚动。
-
安全性:金额字段前端展示需千分位格式化,但传输时保持原始数值。
-
国际化:预留多语言接口(目前仅中文)。
-
测试重点:凭证借贷平衡、外币折算、移动加权平均计算、自动生成凭证的异常处理。
9. 附录:参考文档与资源
-
公司内部《2025-财务及海关ERP设计方案》
财务ERP - 进销存模块(采购与台账)详细开发文档
版本历史
| 版本 | 日期 | 修改内容 | 作者 |
|---|---|---|---|
| v1.0 | 2026-06-25 | 基于20260618需求梳理,定义采购模块与台账功能 | 架构组 |
1. 模块定位与范围
1.1 模块目标
实现采购业务全流程的财务核算与台账管理,打通采购订单 → 付款 → 入库 → 发票的业务闭环,并提供多维度的台账查询与对账功能。本模块作为现有 wimoor-finance 微服务的扩展,复用已有凭证、科目、辅助核算等基础能力。
1.2 涉及功能清单
-
进销存配置:采购账户、供应商收款账户、库存核算方法、凭证科目映射
-
采购单(会计版):创建、付款、退款、入库、退货,状态追踪
-
采购账户台账:多维度查询、台账付款(账期结算)、批量上传对账单、退款处理
-
供应商台账:按供应商汇总应付/已付/待付、库存价值、发票状态,支持发票入账
-
发票台账:数电发票同步、入账、查询、统计分析
-
本地仓库台账:移动加权平均核算,汇总账与明细账,与总账勾稽
-
FBA仓库台账:与亚马逊库存报告对接,按月汇总核算(后续迭代)
1.3 依赖关系
-
复用
wimoor-finance现有表:fin_accounting_subjects、fin_vouchers、fin_voucher_entries、fin_auxiliary_*、fin_currency -
调用
wimoor-erp模块:供应商基础信息、SKU信息、仓库信息 -
调用
wimoor-amazon模块:FBA库存报告数据(后续) -
调用
wimoor-admin模块:飞书多维表格连接配置(用于发票同步等)
2. 数据库设计(新增表)
2.1 采购账户表 fin_purchase_account
已在原文档中定义,此处补充字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
id |
bigint unsigned | 主键 |
groupid |
bigint unsigned | 租户ID(账套) |
account_name |
varchar(100) | 账户名称,如“公户现金”“跨境直采” |
account_type |
tinyint | 1-现金,2-账期 |
related_subject_id |
bigint unsigned | 对应会计科目ID(如“银行存款-浦发”) |
config_json |
json | 完整配置:费用类型列表、归属标记、借贷科目映射、退款设置、支持的付款账户等 |
is_enabled |
tinyint | 是否启用 |
created_time |
datetime | |
updated_time |
datetime |
config_json 结构示例:
{
"feeTypes": [
{ "code": "GOODS", "name": "货款", "isSupplierRelated": true },
{ "code": "FREIGHT", "name": "运费", "isSupplierRelated": true },
{ "code": "SERVICE", "name": "跨境直采手续费", "isSupplierRelated": false }
],
"paySubjectMapping": {
"GOODS": { "debitSubjectId": 101, "creditSubjectId": 201 },
"FREIGHT": { "debitSubjectId": 102, "creditSubjectId": 201 },
"SERVICE": { "debitSubjectId": 501, "creditSubjectId": 201 }
},
"refundMapping": {
"GOODS": { "debitSubjectId": 201, "creditSubjectId": 101 },
"FREIGHT": { "debitSubjectId": 201, "creditSubjectId": 102 }
},
"creditPayAccounts": [ // 仅账期类型有效,可选的现金账户列表
{ "cashAccountId": 1, "subjectMapping": { "debit": 301, "credit": 201 } }
]
}
2.2 采购订单表 fin_purchase_order
已在原文档中定义,补充以下索引和约束:
ALTER TABLE `fin_purchase_order` ADD INDEX `idx_status_pay` (`status_pay`), ADD INDEX `idx_status_inv` (`status_inv`), ADD INDEX `idx_status_stock` (`status_stock`);
2.3 采购付款明细表 fin_purchase_payment
已在原文档定义,确保与 purchase_order_id 和 voucher_id 关联。
2.4 供应商收款账户表 fin_supplier_bank
(新增)用于维护供应商的多个收款账户信息:
CREATE TABLE `fin_supplier_bank` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `groupid` bigint unsigned NOT NULL, `supplier_id` bigint unsigned NOT NULL, `bank_name` varchar(100) COLLATE utf8mb4_bin DEFAULT NULL, `account_name` varchar(100) COLLATE utf8mb4_bin NOT NULL, `account_no` varchar(50) COLLATE utf8mb4_bin NOT NULL, `is_default` tinyint DEFAULT '0', `is_enabled` tinyint DEFAULT '1', `created_time` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_supplier` (`supplier_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='供应商收款账户';
2.5 库存余额表 fin_warehouse_stock
已在原文档定义,新增 warehouse_type 字段区分本地/FBA:
ALTER TABLE `fin_warehouse_stock` ADD COLUMN `warehouse_type` tinyint DEFAULT '1' COMMENT '1-本地,2-FBA';
2.6 库存变动明细表 fin_inventory_transaction
已在原文档定义。
2.7 采购发票关联表(可选)
为支持“一张发票对应多笔采购订单”,可新增中间表,但当前简化设计,发票直接关联凭证,通过凭证分录的辅助核算追踪订单,暂不建中间表。
3. 核心业务逻辑
3.1 采购付款凭证生成规则(完整版)
根据需求,采购付款涉及三个环节:付款、在途库存确认、发票入账。系统按以下规则自动生成凭证。
3.1.1 现金类账户付款(公户、跨境直采等)
-
付款时(采购单点击“付款”):
-
凭证1(付款):
借:预付账款-ERP采购供应商 (供应商辅助核算) 贷:银行存款-浦发银行(2384) / 其他货币资金-连连跨境直采
-
凭证2(在途库存):
借:在途库存_XX本地仓库 (存货辅助核算) 贷:预付账款-ERP在途发票
-
-
收到发票时(发票入账操作):
借:预付账款-ERP在途发票 贷:预付账款-ERP采购供应商
-
入库时(采购单收货):
借:库存商品_XX本地仓库 (存货辅助核算) 贷:在途库存_XX本地仓库
3.1.2 账期类账户付款(先采后付、公户请款等)
-
采购单点击“付款”(即发起请款):
借:预付账款-ERP采购供应商 贷:应付账款_1688先采后付 (或应付账款_公户请款即付等)
-
在途库存确认(同3.1.1):
借:在途库存_XX本地仓库 贷:预付账款-ERP在途发票
-
台账付款(实际还款):
-
借:应付账款_1688先采后付
-
贷:银行存款-浦发 / 其他货币资金-连连跨境直采
-
若有跨境直采手续费,另加一笔:
借:财务费用_跨境直采 贷:其他货币资金-连连跨境直采
-
3.1.3 退款处理
退款时,根据已付款、已入库、已开票的不同状态,系统自动生成红字冲销凭证(方向相反),并更新台账。具体规则已在需求中列出,此处不再赘述。
3.1.4 辅助核算要求
所有涉及供应商的科目必须启用“供应商”辅助核算;涉及存货的科目启用“存货”辅助核算(即SKU)。系统在生成凭证时自动填充 fin_voucher_entries_auxiliary 表。
3.2 移动加权平均成本计算
在每次采购入库、盘盈入库时,重新计算库存单价。出库时,出库成本 = 出库数量 × 当前移动单价。
Java 核心实现:
@Component
public class MovingAverageCostCalculator {
/**
* 计算新移动平均单价
* @param currentQty 当前数量
* @param currentAmount 当前金额
* @param inQty 入库数量(正数)
* @param inAmount 入库金额(正数)
* @return 新单价,保留4位小数
*/
public BigDecimal calculateNewUnitCost(BigDecimal currentQty, BigDecimal currentAmount,
BigDecimal inQty, BigDecimal inAmount) {
if (inQty.compareTo(BigDecimal.ZERO) == 0) {
return BigDecimal.ZERO;
}
BigDecimal newQty = currentQty.add(inQty);
if (newQty.compareTo(BigDecimal.ZERO) == 0) {
return BigDecimal.ZERO;
}
BigDecimal newAmount = currentAmount.add(inAmount);
return newAmount.divide(newQty, 4, RoundingMode.HALF_UP);
}
/**
* 计算出库成本(金额)
*/
public BigDecimal calculateOutCost(BigDecimal qty, BigDecimal unitCost) {
return qty.multiply(unitCost).setScale(2, RoundingMode.HALF_UP);
}
}
库存余额更新(确保不反算):
@Transactional
public void updateStockForTransaction(InventoryTransactionDTO dto) {
// 1. 获取当前期间库存
WarehouseStock stock = stockMapper.selectBySkuPeriod(...);
BigDecimal oldQty = stock.getCurrentQty();
BigDecimal oldAmount = stock.getCurrentAmount();
BigDecimal oldUnitCost = stock.getUnitCost();
if (dto.getTransType() == PURCHASE_IN) {
// 入库:重新计算单价
BigDecimal newUnitCost = calculateNewUnitCost(oldQty, oldAmount, dto.getQty(), dto.getAmount());
stock.setUnitCost(newUnitCost);
stock.setCurrentQty(oldQty.add(dto.getQty()));
stock.setCurrentAmount(oldAmount.add(dto.getAmount()));
} else if (dto.getTransType() == SALE_OUT) {
// 出库:使用当前单价计算成本
BigDecimal cost = calculateOutCost(dto.getQty().abs(), oldUnitCost);
dto.setAmountChange(cost.negate()); // 记录变动金额
stock.setCurrentQty(oldQty.subtract(dto.getQty().abs()));
stock.setCurrentAmount(oldAmount.subtract(cost));
// 单价不变
}
// 其他类型(调拨、盘点等)类似...
stockMapper.updateById(stock);
// 插入变动明细
inventoryTransactionMapper.insert(buildTransaction(dto, oldUnitCost));
}
3.3 采购账户台账查询与批量付款
3.3.1 台账列表查询
支持多维度筛选(采购账户、账套、时间、状态),返回以下核心字段:
-
账簿、采购账户、采购订单号、SKU、供应商、收款账号
-
付款状态、库存状态、发票状态
-
金额字段:订单金额、请款金额(归属供应商)、已付金额、待付金额
-
库存字段:库存价值、已入库价值、待入库价值
-
发票字段:应开票金额、已开票金额、待开票金额
SQL 查询核心(MyBatis XML):
<select id="queryLedgerList" resultType="com.wimoor.finance.vo.PurchaseLedgerVO">
SELECT
po.groupid,
po.id as orderId,
po.sku,
s.name as supplierName,
sb.account_no as bankAccount,
po.total_amount,
po.paid_amount,
po.inventory_value,
po.invoiced_amount,
-- 计算待付、待入库、待开票
(po.total_amount - po.paid_amount) as pending_pay,
(po.inventory_value - IFNULL(SUM(ir.received_value),0)) as pending_stock,
(po.total_amount - po.invoiced_amount) as pending_invoice,
po.status_pay,
po.status_stock,
po.status_inv
FROM fin_purchase_order po
LEFT JOIN t_erp_supplier s ON po.supplier_id = s.id
LEFT JOIN fin_supplier_bank sb ON s.id = sb.supplier_id AND sb.is_default=1
LEFT JOIN fin_inventory_transaction ir ON po.id = ir.source_doc_id AND ir.trans_type='RECEIVE'
WHERE po.groupid = #{groupid}
<if test="accountIds != null and accountIds.size()>0">
AND po.purchase_account_id IN
</if>
<if test="startDate != null"> AND po.created_time >= #{startDate} </if>
<if test="endDate != null"> AND po.created_time < #{endDate} </if>
<if test="payStatus != null"> AND po.status_pay IN ... </if>
GROUP BY po.id
ORDER BY po.created_time DESC
</select>
3.3.2 台账付款操作
-
前端勾选多条记录 → 调用
/api/finance/ledger/purchase-account/ledger-pay -
后端校验:所有记录必须属于同一个账期采购账户;必须选择现金类付款账户
-
生成凭证(借贷科目按配置)并插入
fin_purchase_payment,更新paid_amount和状态 -
支持分摊:若付款金额与应付总额不一致,按比例分摊到尾差处理
批量上传对账单(Excel)流程:
-
下载模板(含列:采购订单号、SKU、应付金额、本次付款金额、费用类型)
-
用户填写后上传
-
后端解析,校验订单号有效、未超额付款
-
预览确认,用户提交
-
批量生成付款记录和凭证
3.4 供应商台账与发票入账
3.4.1 供应商台账查询
与采购账户台账类似,但按供应商维度汇总,展示:
-
供应商、账簿、采购订单明细
-
应付/已付/待付(归属供应商)
-
库存价值、已入库、待入库
-
应开票、已开票、待开票
3.4.2 发票入账操作
-
前端勾选多条未开票记录 → 选择数电发票(从发票台账中选)
-
调用
/api/finance/ledger/invoice/post -
后端:生成凭证:
借:预付账款-ERP在途发票 贷:预付账款-ERP采购供应商
-
同时更新采购订单的
invoiced_amount和status_inv,更新发票的posting_status=1、voucher_id -
支持发票分摊到多条订单(按订单待开票金额比例)
3.5 发票台账同步与入账
3.5.1 发票数据同步
-
定时任务调用税局电子发票API(或从金蝶拉取),将数电发票信息写入
fin_invoice -
同步时,根据发票销方税号匹配内部供应商(
supplier_id),若无法匹配则记录为“待匹配” -
同步后,发票状态默认为“正常”
3.5.2 发票台账查询
提供多维度筛选(账簿、销方、日期、入账状态、发票状态),展示发票号码、开票日期、价税合计、税额、入账状态等。
3.5.3 手工入账(未匹配自动入账)
用户可在发票台账页面勾选发票,选择“入账”,系统生成凭证(借:预付账款-ERP在途发票 贷:预付账款-ERP采购供应商),并关联供应商(若之前未匹配)。
3.6 本地仓库台账(移动加权平均核算)
3.6.1 汇总账
按“期间 + 账簿 + SKU + 仓库”展示期初、入库、出库、期末的数量和金额。
-
期初 = 上一期间期末
-
入库 = 所有
PURCHASE_IN类型变动汇总 -
出库 = 所有
SALE_OUT类型变动汇总 -
期末 = 期初 + 入库 - 出库
勾稽校验:期末金额应与对应会计科目(库存商品)余额一致,若不一致,系统提示差异。
3.6.2 明细账
展示每笔库存变动明细:操作时间、类型、数量、单价、金额变动、关联单据号、凭证号。支持按SKU、仓库、时间筛选。
4. API 接口详细设计
4.1 采购账户管理
| 方法 | 路径 | 说明 | 请求参数 |
|---|---|---|---|
| POST | /api/finance/purchase/account/create |
创建采购账户 | PurchaseAccountSaveDTO |
| PUT | /api/finance/purchase/account/update |
更新配置 | PurchaseAccountUpdateDTO |
| GET | /api/finance/purchase/account/list |
查询可用账户 | groupid |
| GET | /api/finance/purchase/account/detail/{id} |
获取详情 | id |
4.2 采购订单(会计版)
| 方法 | 路径 | 说明 | 请求参数 |
|---|---|---|---|
| POST | /api/finance/purchase/order/create |
创建采购订单(从ERP业务单转换) | PurchaseOrderSaveDTO |
| POST | /api/finance/purchase/order/pay |
付款(生成凭证) | PurchasePayDTO(含付款账户、费用明细) |
| POST | /api/finance/purchase/order/refund |
退款 | RefundDTO |
| POST | /api/finance/purchase/order/receive |
入库 | ReceiveDTO(收货数量/金额) |
| GET | /api/finance/purchase/order/page |
订单列表 | PageQuery + 筛选条件 |
4.3 采购账户台账
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/finance/ledger/purchase/page |
台账列表(分页) |
| POST | /api/finance/ledger/purchase/ledger-pay |
台账付款(批量) |
| POST | /api/finance/ledger/purchase/upload-pay |
上传对账单批量付款 |
| GET | /api/finance/ledger/purchase/statistics |
统计图表数据 |
4.4 供应商台账
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/finance/ledger/supplier/page |
供应商台账列表 |
| POST | /api/finance/ledger/supplier/invoice-post |
发票入账 |
| GET | /api/finance/ledger/supplier/export-uninvoiced |
导出未开票明细 |
4.5 发票台账
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/finance/ledger/invoice/page |
发票台账列表 |
| POST | /api/finance/ledger/invoice/sync |
手动触发同步(定时任务自动) |
| POST | /api/finance/ledger/invoice/post |
发票入账(勾选后) |
| GET | /api/finance/ledger/invoice/statistics |
发票统计 |
4.6 库存台账
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/finance/ledger/stock/summary |
汇总账(按期间) |
| GET | /api/finance/ledger/stock/detail |
明细账(按SKU) |
| GET | /api/finance/ledger/stock/check |
勾稽校验(与总账对比) |
5. 服务层实现要点
5.1 采购付款服务(PurchasePaymentService)
-
职责:处理采购单付款、退款、台账付款
-
主要方法:
-
payOrder(PurchasePayDTO):校验账户余额(现金类)、生成凭证、更新订单状态、更新台账 -
ledgerPay(LedgerPayDTO):批量处理账期还款,支持分摊 -
refund(RefundDTO):退款,生成红字凭证,更新订单状态
-
5.2 库存服务(InventoryService)
-
职责:管理库存余额、变动明细、成本计算
-
主要方法:
-
onPurchaseReceive(PurchaseOrder order, ReceiveDTO):入库,调用成本计算器更新库存 -
onSaleOut(SaleOutDTO):销售出库,计算成本并更新库存 -
getStockSummary(String period):汇总账查询 -
getStockDetail(String sku):明细账查询
-
5.3 发票服务(InvoiceService)
-
职责:同步税局发票、匹配供应商、入账
-
主要方法:
-
syncFromTaxAPI():调用外部API拉取发票 -
matchSupplier():根据税号匹配供应商 -
postInvoice(InvoicePostingDTO):生成入账凭证,关联采购订单
-
5.4 台账查询服务(LedgerQueryService)
-
职责:提供采购账户、供应商、发票、库存的统一查询视图
-
使用 MyBatis-Plus 分页 + 复杂SQL关联查询
6. 前端页面交互设计
6.1 采购单(会计版)页面
-
列表页:展示订单号、SKU、供应商、金额、付款/库存/发票状态;支持筛选、排序
-
详情/操作页:显示完整信息,提供“付款”“退款”“收货”“退货”按钮,点击弹出对应表单
-
付款表单:选择采购账户(带出对应费用类型)、填写金额、选择供应商收款账户
6.2 采购账户台账页面
-
筛选区:采购账户下拉、账套、时间、状态
-
表格:展示上述金额字段,底部汇总行
-
操作区:“台账付款”按钮(勾选后弹出付款对话框),“导出对账单”按钮
-
图表页签:按日期展示付款趋势图
6.3 供应商台账页面
-
筛选区:供应商下拉、账套、时间
-
表格:展示应付/已付/待付、库存价值、应开票/已开票/待开票
-
操作:“发票入账”按钮(勾选后弹出选择发票对话框)
6.4 发票台账页面
-
筛选区:账簿、销方、日期、入账状态
-
表格:发票号码、金额、税额、状态
-
操作:“同步”按钮(手动触发),“入账”按钮
6.5 本地仓库台账
-
汇总账:期间选择、SKU搜索,展示期初/入库/出库/期末数量和金额,提供校验标识
-
明细账:点击SKU跳转明细,展示每笔变动,联查凭证
7. 定时任务与消息队列
7.1 定时任务(XXL-JOB)
| 任务名称 | Cron | 说明 |
|---|---|---|
InvoiceSyncJob |
0 0 2 * * ? |
同步税局发票数据 |
StockCheckJob |
0 0 3 1 * ? |
每月1号执行库存与总账勾稽校验 |
AutoPostInvoiceJob |
0 0/30 9-18 * * ? |
工作时间内自动匹配未入账发票(可选) |
7.2 消息队列(RabbitMQ)
-
采购订单状态变更时,发送事件(如
ORDER_PAID、ORDER_RECEIVED)到 exchange,库存服务、台账服务监听更新。 -
避免同步调用,提高响应速度。
8. 异常处理与日志
8.1 异常场景
-
付款金额超过订单未付金额 → 提示“超额付款”
-
发票金额与订单待开票金额不一致 → 提示“金额不符,请确认分摊”
-
供应商未维护收款账户 → 提示“请先维护供应商收款信息”
-
科目配置缺失 → 提示“采购账户科目映射不完整,请联系管理员”
8.2 日志规范
-
关键操作(付款、退款、入库、发票入账)记录 INFO 日志,包含操作人、订单号、金额
-
异常堆栈记录 ERROR 日志,并发送飞书告警(通过
wimoor-common的告警组件)
9. 测试策略
9.1 单元测试(JUnit + Mockito)
-
移动加权平均计算器
-
凭证生成逻辑(各场景)
-
分摊算法
9.2 集成测试(@SpringBootTest + Testcontainers)
-
完整流程:创建订单 → 现金付款 → 入库 → 发票入账 → 查询台账
-
账期流程:创建订单 → 账期付款 → 台账付款 → 查询供应商待付
-
退款流程:部分退款、全额退款(不同状态组合)
9.3 前端测试(Vue Test Utils)
-
页面渲染、表单交互、数据校验
10. 部署与配置
10.1 依赖环境
-
MySQL 8.0(已有)
-
Redis(用于缓存科目、辅助核算项)
-
RabbitMQ(事件驱动)
-
XXL-JOB(调度中心)
10.2 配置示例(application.yml)
wimoor:
finance:
inventory:
cost-method: moving_average # 仅支持移动加权
invoice:
sync-api: https://api.tax.gov/invoice
sync-cron: 0 0 2 * * ?
ledger:
batch-size: 1000 # 批量导入单次最大行数
11. 后续扩展规划
-
FBA仓库台账:对接亚马逊库存报告,按月汇总,与本地仓库成本联动
-
关务台账:报关单与FBA货件关联,统计出口数据
-
无票成本统计:在利润表中增加无票成本明细
-
银行API对接:自动获取对公账户流水,与采购账户对账
开发周期估计:
数据库设计与基础服务:3天
核心业务逻辑(凭证生成、成本计算、台账查询):5天
接口开发与联调:4天
前端页面开发:5天
测试与修复:3天
总计约20人天
财务ERP - 进销存模块(采购与台账)详细开发流程文档
文档说明
本文档为20260618进销存模块梳理后的详细开发流程文档,面向开发团队,明确开发的顺序、依赖、任务拆解、开发步骤及验收标准。重点覆盖采购模块与财务模块的互通,以及台账管理的完整实现。
重要说明:本文档仅包含业务需求、流程设计、接口契约和验收标准,不包含具体代码实现。请根据现有系统架构自行设计代码结构,避免与现有代码产生冲突。
版本历史
| 版本 | 日期 | 修改内容 | 作者 |
|---|---|---|---|
| v1.0 | 2026-06-25 | 初稿,基于20260618需求梳理 | 架构组 |
1. 模块依赖关系与开发顺序
1.1 模块依赖图
┌─────────────────────────────────────────────────────────────────────────────┐
│ 开发依赖关系(自上而下) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────┐ │
│ │ 基础配置模块 │ ◄── 第1周:无依赖,可优先开发 │
│ │ - 采购账户配置 │ │
│ │ - 供应商收款账户 │ │
│ │ - 进销存全局配置 │ │
│ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ 采购订单(会计版) │ ◄── 第2周:依赖基础配置 + ERP供应商/SKU数据 │
│ │ - 订单创建/查询 │ │
│ │ - 付款/退款/入库 │ │
│ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ ◄── 第3周:依赖采购订单数据 │
│ │ 采购账户台账 │ │
│ │ - 台账列表查询 │ │
│ │ - 台账付款 │ │
│ │ - 批量对账单上传 │ │
│ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ ◄── 第4周:依赖采购订单 + 税局API │
│ │ 发票台账 │ │
│ │ - 发票同步 │ │
│ │ - 发票入账 │ │
│ │ - 供应商台账查询 │ │
│ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ ◄── 第5周:依赖库存变动数据 │
│ │ 库存台账 │ │
│ │ - 移动加权平均计算 │ │
│ │ - 汇总账/明细账 │ │
│ │ - 勾稽校验 │ │
│ └─────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
1.2 开发顺序总览
| 阶段 | 周期 | 模块 | 产出物 | 依赖 |
|---|---|---|---|---|
| 阶段一 | 第1周 | 基础配置模块 | 采购账户CRUD、供应商收款账户管理、配置校验逻辑 | 现有科目表、辅助核算表 |
| 阶段二 | 第2-3周 | 采购订单(会计版) | 订单创建、付款、退款、入库、状态管理、凭证生成 | 阶段一 + ERP供应商/SKU数据 |
| 阶段三 | 第3-4周 | 采购账户台账 | 台账列表、台账付款、批量上传对账单、图表统计 | 阶段二 |
| 阶段四 | 第4-5周 | 发票台账与供应商台账 | 发票同步、发票入账、供应商汇总查询、未开票导出 | 阶段二 + 税局API |
| 阶段五 | 第5-6周 | 库存台账(本地仓库) | 移动加权平均计算、汇总账、明细账、勾稽校验 | 阶段二 + 阶段四 |
| 阶段六 | 第6周 | 联调与测试 | 端到端流程测试、性能测试、Bug修复 | 全部模块 |
2. 数据库设计(新增表)
2.1 新增表清单
| 表名 | 说明 | 关联模块 |
|---|---|---|
fin_purchase_account |
采购账户表 | 基础配置 |
fin_supplier_bank |
供应商收款账户表 | 基础配置 |
fin_purchase_order |
采购订单表(会计版) | 采购订单 |
fin_purchase_payment |
采购付款明细表 | 采购订单/台账 |
fin_invoice |
发票台账表 | 发票台账 |
fin_warehouse_stock |
库存余额表 | 库存台账 |
fin_inventory_transaction |
库存变动明细表 | 库存台账 |
2.2 表结构设计要点
2.2.1 采购账户表 fin_purchase_account
| 字段 | 类型 | 说明 | 校验规则 |
|---|---|---|---|
id |
bigint unsigned | 主键 | 自增 |
groupid |
bigint unsigned | 租户ID | 必填,索引 |
account_name |
varchar(100) | 账户名称 | 必填,唯一(同租户下) |
account_type |
tinyint | 1-现金,2-账期 | 必填,默认1 |
related_subject_id |
bigint unsigned | 对应会计科目ID | 必填,关联fin_accounting_subjects |
config_json |
json | 完整配置 | 见下方结构 |
is_enabled |
tinyint | 是否启用 | 默认1 |
created_time |
datetime | 创建时间 | 自动 |
updated_time |
datetime | 更新时间 | 自动 |
config_json 结构:
{
"feeTypes": [
{ "code": "GOODS", "name": "货款", "isSupplierRelated": true },
{ "code": "FREIGHT", "name": "运费", "isSupplierRelated": true },
{ "code": "SERVICE", "name": "跨境直采手续费", "isSupplierRelated": false }
],
"paySubjectMapping": {
"GOODS": { "debitSubjectId": 101, "creditSubjectId": 201 },
"FREIGHT": { "debitSubjectId": 102, "creditSubjectId": 201 }
},
"refundMapping": {
"GOODS": { "debitSubjectId": 201, "creditSubjectId": 101 }
},
"creditPayAccounts": [
{ "cashAccountId": 1, "subjectMapping": { "debit": 301, "credit": 201 } }
]
}
2.2.2 供应商收款账户表 fin_supplier_bank
| 字段 | 类型 | 说明 | 校验规则 |
|---|---|---|---|
id |
bigint unsigned | 主键 | 自增 |
groupid |
bigint unsigned | 租户ID | 必填 |
supplier_id |
bigint unsigned | 供应商ID | 必填,索引 |
bank_name |
varchar(100) | 开户银行 | 可选 |
account_name |
varchar(100) | 收款账户名称 | 必填 |
account_no |
varchar(50) | 收款账号 | 必填 |
is_default |
tinyint | 是否默认 | 默认0,同供应商仅一个默认 |
is_enabled |
tinyint | 是否启用 | 默认1 |
created_time |
datetime | 创建时间 | 自动 |
2.2.3 采购订单表 fin_purchase_order
| 字段 | 类型 | 说明 | 校验规则 |
|---|---|---|---|
id |
bigint unsigned | 主键 | 自增 |
groupid |
bigint unsigned | 租户ID | 必填,索引 |
supplier_id |
bigint unsigned | 供应商ID | 必填,关联t_erp_supplier |
purchase_account_id |
bigint unsigned | 采购账户ID | 必填 |
sku |
varchar(50) | SKU编码 | 必填 |
warehouse_code |
varchar(50) | 入库仓库编码 | 必填 |
order_qty |
decimal(12,2) | 订单数量 | >0 |
unit_price |
decimal(18,4) | 采购单价 | ≥0 |
total_amount |
decimal(18,2) | 订单金额 | = order_qty × unit_price |
paid_amount |
decimal(18,2) | 累计已付 | ≥0,≤total_amount |
inventory_value |
decimal(18,2) | 库存价值 | ≥0 |
invoiced_amount |
decimal(18,2) | 已开票金额 | ≥0,≤total_amount |
status_order |
tinyint | 1-草稿,2-已确认,3-已完成,4-已取消 | 默认1 |
status_pay |
tinyint | 1-未付款,2-部分付款,3-已付款,4-退款中,5-已退款 | 默认1 |
status_inv |
tinyint | 1-未开票,2-部分开票,3-已开票 | 默认1 |
status_stock |
tinyint | 1-未收货,2-部分收货,3-已收货 | 默认1 |
2.2.4 采购付款明细表 fin_purchase_payment
| 字段 | 类型 | 说明 |
|---|---|---|
id |
bigint unsigned | 主键 |
purchase_order_id |
bigint unsigned | 关联采购订单 |
purchase_account_id |
bigint unsigned | 使用的采购账户 |
voucher_id |
bigint unsigned | 生成的凭证ID |
fee_type |
varchar(50) | 费用类型(货款/运费/手续费) |
is_supplier_related |
tinyint | 是否归属供应商款项 |
amount |
decimal(18,2) | 支付金额 |
payment_date |
date | 付款日期 |
is_refund |
tinyint | 是否退款 |
refund_original_id |
bigint unsigned | 退款对应的原付款明细ID |
status |
tinyint | 0-正常,1-已退款 |
2.2.5 发票台账表 fin_invoice
| 字段 | 类型 | 说明 |
|---|---|---|
id |
bigint unsigned | 主键 |
invoice_no |
varchar(100) | 数电发票号码(唯一) |
invoice_type |
varchar(20) | 数电专票/普票/传统 |
groupid |
bigint unsigned | 入账账套ID |
supplier_id |
bigint unsigned | 匹配的供应商ID |
seller_name |
varchar(200) | 销方名称 |
seller_tax_no |
varchar(50) | 销方税号 |
invoice_date |
date | 开票日期 |
amount_with_tax |
decimal(18,2) | 价税合计 |
amount_without_tax |
decimal(18,2) | 不含税金额 |
tax_amount |
decimal(18,2) | 税额 |
status |
varchar(20) | NORMAL/CANCELLED/RED_ALL/RED_PART/ABNORMAL |
posting_status |
tinyint | 0-未入账,1-已入账 |
voucher_id |
bigint unsigned | 入账凭证ID |
2.2.6 库存余额表 fin_warehouse_stock
| 字段 | 类型 | 说明 |
|---|---|---|
id |
bigint unsigned | 主键 |
groupid |
bigint unsigned | 租户ID |
sku |
varchar(50) | SKU编码 |
warehouse_code |
varchar(50) | 仓库编码 |
warehouse_type |
tinyint | 1-本地,2-FBA |
current_qty |
decimal(12,2) | 当前数量 |
current_amount |
decimal(18,2) | 当前金额 |
unit_cost |
decimal(18,4) | 移动平均单价 |
period |
varchar(6) | 会计期间(YYYYMM) |
2.2.7 库存变动明细表 fin_inventory_transaction
| 字段 | 类型 | 说明 |
|---|---|---|
id |
bigint unsigned | 主键 |
groupid |
bigint unsigned | 租户ID |
sku |
varchar(50) | SKU编码 |
warehouse_code |
varchar(50) | 仓库编码 |
trans_date |
date | 变动日期 |
trans_type |
varchar(50) | PURCHASE_IN/SALE_OUT/TRANSFER_IN/ADJUST |
source_doc_id |
varchar(100) | 来源单据号 |
qty_change |
decimal(12,2) | 正为入库,负为出库 |
amount_change |
decimal(18,2) | 金额变动 |
unit_cost |
decimal(18,4) | 发生时单价 |
voucher_id |
bigint unsigned | 关联凭证ID |
3. 服务层开发任务(按顺序执行)
3.1 阶段一:基础配置模块(第1周)
3.1.1 任务清单
| 序号 | 任务 | 服务类 | 方法/职责 | 验收标准 |
|---|---|---|---|---|
| 1 | 采购账户CRUD | PurchaseAccountService |
创建、更新、删除、查询列表 | 可正常增删改查,配置JSON正确序列化 |
| 2 | 采购账户配置校验 | PurchaseAccountValidator |
校验费用类型、科目映射完整性 | 配置不完整时拒绝保存并提示 |
| 3 | 供应商收款账户管理 | SupplierBankService |
保存、更新、设置默认、查询 | 支持多账户、默认账户唯一 |
| 4 | 进销存全局配置 | InventoryConfigService |
获取配置、更新配置 | 支持配置成本方法(仅移动加权) |
3.1.2 开发步骤
- 创建实体类:映射新增表,使用MyBatis-Plus注解,JSON字段配置TypeHandler
- 创建Mapper接口:继承BaseMapper,定义必要的自定义查询方法
- 实现Service层: - 创建:校验参数完整性、唯一性,保存配置JSON - 更新:校验是否被引用,合并配置 - 删除:软删除或校验无引用后删除 - 列表:支持按账套、类型筛选
- 实现Controller层:定义REST接口,参数校验,统一响应格式
- 单元测试:覆盖CRUD各场景
3.1.3 接口契约
创建采购账户
POST /api/finance/purchase/account/create- 请求体:
{
"groupid": 1001,
"accountName": "公户现金",
"accountType": 1,
"relatedSubjectId": 2384,
"configJson": { ... }
}
- 响应:
{ "code": 200, "data": { "id": 1 } }
查询采购账户列表
GET /api/finance/purchase/account/list?groupid=1001&type=1- 响应:账户列表JSON
3.1.4 测试用例
| 测试场景 | 预期结果 |
|---|---|
| 创建现金类账户,配置完整 | 保存成功 |
| 创建账期类账户,未配置cashAccount列表 | 校验失败,提示配置不完整 |
| 删除正在使用的账户 | 返回错误,提示账户已被引用 |
| 设置默认收款账户 | 该账户is_default=1,其他同供应商账户=0 |
3.2 阶段二:采购订单(会计版)(第2-3周)
3.2.1 任务清单
| 序号 | 任务 | 服务类 | 方法/职责 | 验收标准 |
|---|---|---|---|---|
| 1 | 采购订单创建 | PurchaseOrderService |
创建订单,初始状态为草稿 | 订单保存,状态正确 |
| 2 | 采购订单确认 | PurchaseOrderService |
确认订单,状态变为已确认 | 仅草稿状态可确认 |
| 3 | 采购订单付款 | PurchasePaymentService |
付款,生成凭证,更新状态 | 凭证生成正确,状态更新 |
| 4 | 采购订单退款 | PurchasePaymentService |
退款,生成红字凭证,更新状态 | 凭证方向相反,状态更新 |
| 5 | 采购入库 | PurchaseOrderService |
入库,更新库存,生成凭证 | 库存更新,凭证生成 |
| 6 | 采购退货 | PurchaseOrderService |
退货,更新库存,生成凭证 | 库存回退,凭证生成 |
| 7 | 订单列表查询 | PurchaseOrderService |
分页查询,多维度筛选 | 筛选条件生效,状态展示正确 |
3.2.2 订单状态机设计
订单状态(status_order)流转:
1-草稿→ 确认 →2-已确认→ 付款+入库完成 →3-已完成1-草稿→4-已取消(仅草稿可取消)2-已确认→ 任何状态 →3-已完成(所有子状态均为完成)
付款状态(status_pay)流转:
1-未付款→ 付款金额>0且<总额 →2-部分付款1-未付款或2-部分付款→ 付款金额=总额 →3-已付款3-已付款→ 发起退款 →4-退款中→ 退款完成 →5-已退款
库存状态(status_stock)流转:
1-未收货→ 入库数量>0且<订单数量 →2-部分收货1-未收货或2-部分收货→ 入库数量=订单数量 →3-已收货
发票状态(status_inv)流转:
1-未开票→ 开票金额>0且<总额 →2-部分开票1-未开票或2-部分开票→ 开票金额=总额 →3-已开票
3.2.3 凭证生成规则
场景A:现金类账户付款
- 付款凭证: - 借:预付账款-ERP采购供应商(供应商辅助核算) - 贷:对应现金科目(如银行存款-浦发)
- 在途库存凭证(同时生成): - 借:在途库存_XX本地仓库(存货辅助核算) - 贷:预付账款-ERP在途发票
场景B:账期类账户付款
- 付款凭证: - 借:预付账款-ERP采购供应商(供应商辅助核算) - 贷:应付账款_XXX(账期账户对应科目)
- 在途库存凭证(同时生成): - 借:在途库存_XX本地仓库(存货辅助核算) - 贷:预付账款-ERP在途发票
场景C:入库
- 借:库存商品_XX本地仓库(存货辅助核算)
- 贷:在途库存_XX本地仓库
场景D:发票入账
- 借:预付账款-ERP在途发票
- 贷:预付账款-ERP采购供应商(供应商辅助核算)
3.2.4 接口契约
采购订单付款
POST /api/finance/purchase/order/pay- 请求体:
{
"orderId": 1001,
"accountId": 5,
"feeType": "GOODS",
"amount": 10000.00,
"paymentDate": "2026-06-25"
}
- 响应:
{ "code": 200, "data": { "voucherId": 123, "status": "PAID" } }
采购入库
POST /api/finance/purchase/order/receive- 请求体:
{
"orderId": 1001,
"qty": 100,
"receiveDate": "2026-06-25"
}
- 响应:
{ "code": 200, "data": { "voucherId": 124, "newUnitCost": 95.50 } }
3.2.5 异常场景处理
| 异常场景 | 错误码 | 提示信息 |
|---|---|---|
| 付款金额超过未付金额 | 4001 | "付款金额超过未付金额" |
| 订单已付款完成 | 4002 | "订单已付款完成,不可重复付款" |
| 订单状态不可付款 | 4003 | "当前订单状态不可付款" |
| 入库数量超过订单数量 | 4004 | "入库数量超过订单未入库数量" |
| 采购账户科目映射缺失 | 5001 | "采购账户科目映射不完整,请联系管理员" |
3.2.6 测试用例
| 测试场景 | 预期结果 |
|---|---|
| 创建订单,初始状态 | status_order=1(草稿),所有子状态均为1 |
| 现金付款,全额 | 生成2张凭证(付款+在途),status_pay=3(已付款) |
| 账期付款,全额 | 生成2张凭证(应付+在途),status_pay=3,现金未扣 |
| 部分付款 | status_pay=2(部分付款),待付金额正确 |
| 入库数量等于订单数量 | status_stock=3(已收货) |
| 部分入库 | status_stock=2(部分收货) |
| 全额退款 | 生成红字凭证,status_pay=5(已退款) |
3.3 阶段三:采购账户台账(第3-4周)
3.3.1 任务清单
| 序号 | 任务 | 服务类 | 方法/职责 | 验收标准 |
|---|---|---|---|---|
| 1 | 台账列表查询 | LedgerQueryService |
分页查询,汇总行计算 | 数据准确,汇总正确 |
| 2 | 台账付款(批量) | LedgerPaymentService |
勾选多条,生成凭证,更新状态 | 凭证生成,状态更新 |
| 3 | 对账单上传 | LedgerBatchService |
解析Excel,预览确认,批量付款 | 解析成功,预览准确 |
| 4 | 退款处理 | LedgerPaymentService |
生成红字凭证,更新台账 | 凭证正确,台账更新 |
| 5 | 图表统计 | LedgerStatisticsService |
返回日期X轴+金额Y轴数据 | 图表数据正确 |
3.3.2 台账列表查询字段
| 字段组 | 包含字段 | 计算逻辑 |
|---|---|---|
| 订单信息 | 账簿、采购账户、采购订单号、SKU、供应商、收款账号 | 直接从订单表关联查询 |
| 付款状态 | 订单金额、请款金额、已付金额、待付金额 | 请款=归属供应商的费用类型金额合计;已付=累计付款;待付=请款-已付 |
| 库存状态 | 库存价值、已入库价值、待入库价值 | 库存价值=采购订单的inventory_value;已入库=SUM(入库变动金额);待入库=库存价值-已入库 |
| 发票状态 | 应开票金额、已开票金额、待开票金额 | 应开票=归属供应商的请款金额;已开票=sum(invoiced_amount);待开票=应开票-已开票 |
重要限制:
- 非供应商款项(如跨境直采手续费)不计入请款金额
- 退款金额按原方向反冲,减少请款金额
3.3.3 台账付款核心约束
- 同账户约束:一次付款操作,所有选中的记录必须使用同一个账期采购账户
- 账户类型约束:仅账期类型账户支持台账付款
- 现金账户约束:选中的现金账户必须在账期账户的
creditPayAccounts配置中 - 金额约束:付款金额不超过各订单待付金额之和
- 尾差处理:按比例分摊,差额归入最后一条记录
3.3.4 Excel批量上传模板
| 列名 | 类型 | 说明 | 校验规则 |
|---|---|---|---|
| 采购订单号 | 文本 | 订单唯一标识 | 必填,存在于系统 |
| SKU | 文本 | SKU编码 | 必填,与订单匹配 |
| 应付金额 | 数字 | 订单应付金额 | 必填,≥0 |
| 本次付款金额 | 数字 | 本次实际支付 | 必填,>0,≤应付-已付 |
| 费用类型 | 文本 | 货款/运费/其他 | 必填,在配置中 |
上传流程:
- 用户下载模板
- 填写后上传
- 系统解析并校验
- 返回预览数据(含校验结果)
- 用户确认后提交
- 批量生成付款记录和凭证
3.3.5 接口契约
台账列表查询
GET /api/finance/ledger/purchase/page- 参数:
groupid,accountId,startDate,endDate,payStatus,page,size - 响应:分页数据 + 汇总行(订单金额、已付金额、待付金额汇总)
台账付款
POST /api/finance/ledger/purchase/ledger-pay- 请求体:
{
"orderIds": [1001, 1002, 1003],
"cashAccountId": 5,
"paymentDate": "2026-06-25"
}
- 响应:
{ "code": 200, "data": { "voucherIds": [123, 124, 125], "totalAmount": 50000 } }
上传对账单
POST /api/finance/ledger/purchase/upload-pay- 请求:
multipart/form-data,file字段 - 响应:预览数据
3.3.6 测试用例
| 测试场景 | 预期结果 |
|---|---|
| 查询台账列表,带筛选条件 | 返回正确数据,汇总行金额正确 |
| 勾选3条账期记录,台账付款 | 生成3张凭证,订单待付金额归零 |
| 上传对账单Excel | 解析成功,预览显示待付款明细 |
| 确认上传的对账单 | 批量生成凭证,更新订单状态 |
| 部分退款 | 生成红字凭证,订单状态变为退款中/已退款 |
3.4 阶段四:发票台账与供应商台账(第4-5周)
3.4.1 任务清单
| 序号 | 任务 | 服务类 | 方法/职责 | 验收标准 |
|---|---|---|---|---|
| 1 | 发票同步(税局API) | InvoiceSyncService |
拉取发票数据,写入fin_invoice | 去重,匹配供应商 |
| 2 | 发票台账查询 | InvoiceQueryService |
多维度筛选,显示入账状态 | 筛选条件生效 |
| 3 | 发票入账 | InvoicePostingService |
生成凭证,更新发票和订单状态 | 凭证生成,状态更新 |
| 4 | 供应商台账查询 | SupplierLedgerService |
按供应商汇总各金额字段 | 汇总数据正确 |
| 5 | 未开票明细导出 | SupplierLedgerService |
导出Excel | 格式正确,数据完整 |
3.4.2 发票同步流程
- 触发方式: - 定时任务:每日凌晨2点自动执行 - 手动触发:用户在页面点击"同步"按钮
- 数据来源:税局电子发票API(或金蝶接口)
- 处理逻辑:
- 按日期范围拉取发票列表
- 按发票号码去重(已存在则跳过)
- 按销方税号匹配内部供应商(
t_erp_supplier) - 匹配成功则记录supplier_id,否则留空 - 写入fin_invoice,状态为"正常",入账状态为"未入账" - 异常处理:单条失败不影响整体,记录日志
3.4.3 发票入账流程
- 入口:发票台账页面勾选未入账发票 → 点击"入账"
- 或:供应商台账页面勾选待开票记录 → 选择发票 → 提交入账
- 处理逻辑:
- 校验发票未入账
- 校验供应商与订单供应商一致
- 获取该供应商下待开票订单列表
- 按订单待开票金额比例分摊发票金额
- 生成凭证(借:预付账款-ERP在途发票,贷:预付账款-ERP采购供应商)
- 更新发票:
posting_status=1,关联voucher_id- 更新订单:invoiced_amount增加,status_inv重新计算
3.4.4 供应商台账查询字段
| 字段 | 计算逻辑 |
|---|---|
| 供应商名称 | 从t_erp_supplier关联 |
| 应付金额 | SUM(归属供应商的请款金额) |
| 已付金额 | SUM(已付款金额,仅归属供应商部分) |
| 待付金额 | 应付金额 - 已付金额 |
| 库存价值 | SUM(inventory_value) |
| 应开票金额 | SUM(归属供应商的请款金额) |
| 已开票金额 | SUM(invoiced_amount) |
| 待开票金额 | 应开票金额 - 已开票金额 |
3.4.5 接口契约
发票同步
POST /api/finance/ledger/invoice/sync- 请求体(可选):
{
"groupid": 1001,
"startDate": "2026-06-01",
"endDate": "2026-06-25"
}
- 响应:
{ "code": 200, "data": { "success": 50, "failed": 2 } }
发票入账
POST /api/finance/ledger/invoice/post- 请求体:
{
"invoiceIds": [101, 102],
"orderIds": [1001, 1002, 1003],
"voucherDate": "2026-06-25"
}
- 响应:
{ "code": 200, "data": { "voucherId": 200 } }
供应商台账查询
GET /api/finance/ledger/supplier/page- 参数:
groupid,supplierIds,page,size - 响应:分页数据
导出未开票明细
GET /api/finance/ledger/supplier/export-uninvoiced- 参数:
groupid,supplierId - 响应:Excel文件流
3.4.6 测试用例
| 测试场景 | 预期结果 |
|---|---|
| 手动触发发票同步 | 拉取到新发票,写入fin_invoice,匹配供应商 |
| 发票入账(全额匹配) | 生成凭证,订单待开票金额归零 |
| 发票入账(部分匹配) | 分摊到多条订单,待开票金额减少 |
| 供应商台账查询 | 汇总数据正确,与订单明细一致 |
| 导出未开票明细 | Excel包含未开票订单及金额 |
3.5 阶段五:库存台账(本地仓库)(第5-6周)
3.5.1 任务清单
| 序号 | 任务 | 服务类 | 方法/职责 | 验收标准 |
|---|---|---|---|---|
| 1 | 移动加权平均计算 | MovingAverageCostCalculator |
计算新单价、出库成本 | 计算精确,保留4位小数 |
| 2 | 采购入库更新库存 | InventoryService |
更新余额表、插入变动明细、生成凭证 | 余额正确,明细完整 |
| 3 | 销售出库更新库存 | InventoryService |
更新余额表、插入变动明细、生成凭证 | 余额正确,明细完整 |
| 4 | 库存汇总账查询 | InventoryQueryService |
按期间展示期初/入库/出库/期末 | 数据准确 |
| 5 | 库存明细账查询 | InventoryQueryService |
逐笔变动明细,联查凭证 | 明细完整,可联查 |
| 6 | 勾稽校验 | InventoryCheckService |
对比库存余额与科目余额 | 提示差异明细 |
3.5.2 移动加权平均核算规则
核心公式:
新移动单价 = (当前结存金额 + 本次入库金额) / (当前结存数量 + 本次入库数量)
出库成本 = 出库数量 × 当前移动单价
重要规则:
- 只有采购入库(
PURCHASE_IN)、盘盈入库(ADJUST_IN)会改变移动单价 - 销售出库(
SALE_OUT)、调拨出库(TRANSFER_OUT)不改变单价,仅减少数量 - 库存余额不通过"单价×数量"反算,采用滚动加减法: - 新余额 = 旧余额 + 入库金额 - 出库成本
- 单价保留4位小数,金额保留2位小数
- 尾差处理:出库时先乘后减,避免单价反算误差
期间核算:
- 按月汇总,每月初从上月期末结转
- 同一SKU在同一仓库同一期间仅有一条库存余额记录
3.5.3 库存变动类型
| 类型编码 | 说明 | 数量方向 | 是否影响单价 | 来源 |
|---|---|---|---|---|
PURCHASE_IN |
采购入库 | 正 | 是 | 采购订单收货 |
SALE_OUT |
销售出库 | 负 | 否 | 销售订单发货 |
TRANSFER_IN |
调拨入库 | 正 | 否(沿用原单价) | 仓库调拨 |
TRANSFER_OUT |
调拨出库 | 负 | 否 | 仓库调拨 |
ADJUST_IN |
盘盈入库 | 正 | 是 | 盘点调整 |
ADJUST_OUT |
盘亏出库 | 负 | 否 | 盘点调整 |
3.5.4 汇总账查询结构
| 列 | 说明 |
|---|---|
| 期间 | YYYYMM |
| 账簿 | groupid对应账套名称 |
| SKU | SKU编码 |
| 仓库 | 仓库编码 |
| 期初数量 | 上期期末数量 |
| 期初金额 | 上期期末金额 |
| 本期入库数量 | SUM(入库变动数量) |
| 本期入库金额 | SUM(入库变动金额) |
| 本期出库数量 | SUM(出库变动数量绝对值) |
| 本期出库金额 | SUM(出库变动金额绝对值) |
| 期末数量 | 期初数量 + 入库数量 - 出库数量 |
| 期末金额 | 期初金额 + 入库金额 - 出库金额 |
| 期末单价 | 期末金额 / 期末数量 |
3.5.5 明细账查询结构
| 列 | 说明 |
|---|---|
| 日期 | 变动日期 |
| SKU | SKU编码 |
| 仓库 | 仓库编码 |
| 变动类型 | PURCHASE_IN/SALE_OUT等 |
| 数量 | 正为入库,负为出库 |
| 单价 | 发生时使用的单价 |
| 金额 | 数量 × 单价 |
| 来源单据号 | 采购订单号/销售订单号等 |
| 凭证号 | 关联凭证编号 |
3.5.6 勾稽校验逻辑
校验目标:库存台账的期末金额与总账中"库存商品"科目余额一致
校验步骤:
- 查询指定期间内所有SKU的期末库存金额合计
- 查询总账中"库存商品"科目(及所有子科目)的期末余额
- 对比两者差异
- 若差异不为零,列出差异明细(按SKU或按仓库)
差异处理建议:
- 差异 < 100元:可接受,记录为"微小差异"
- 差异 ≥ 100元:需要生成调整凭证
3.5.7 接口契约
库存汇总账查询
GET /api/finance/ledger/stock/summary- 参数:
groupid,period(YYYYMM),sku(可选模糊搜索),warehouseCode(可选) - 响应:分页数据
库存明细账查询
GET /api/finance/ledger/stock/detail- 参数:
groupid,sku,warehouseCode,startDate,endDate - 响应:分页明细数据
勾稽校验
GET /api/finance/ledger/stock/check- 参数:
groupid,period - 响应:
{
"stockAmount": 1000000.00,
"ledgerAmount": 1000050.00,
"diff": -50.00,
"status": "BALANCED", // 或 "DIFF"
"details": [] // 差异明细
}
3.5.8 测试用例
| 测试场景 | 预期结果 |
|---|---|
| 采购入库,库存为空 | 新增库存余额记录,单价=入库金额/数量 |
| 采购入库,库存已有 | 更新余额,重新计算移动单价 |
| 销售出库 | 按当前单价计算成本,减少库存 |
| 盘点调整 | 调整后单价重新计算 |
| 勾稽校验,无差异 | 返回BALANCED状态 |
| 勾稽校验,有差异 | 返回DIFF状态,列出差异明细 |
4. 联调与测试(第6周)
4.1 端到端流程测试
| 测试场景 | 操作步骤 | 验证点 |
|---|---|---|
| 完整采购流程(现金) | 创建订单→付款→入库→发票入账 | 凭证正确,台账更新,状态流转正确 |
| 完整采购流程(账期) | 创建订单→账期付款→台账付款→入库→发票入账 | 凭证正确,台账更新,状态流转正确 |
| 部分付款+部分入库 | 创建订单→部分付款→部分入库→余款付款→余货入库 | 状态正确,金额正确 |
| 退款流程(已付款未入库) | 创建订单→全额付款→全额退款 | 红字凭证,状态变为已退款 |
| 退款流程(已付款已入库) | 创建订单→付款→入库→退货→退款 | 退货凭证,退款凭证,库存回退 |
| 批量对账单上传 | 上传Excel→预览→确认 | 批量生成凭证和付款明细 |
| 月末结账 | 调汇→结转损益→结账 | 期间关闭,不可修改 |
4.2 性能测试
| 测试项 | 数据量 | 性能要求 |
|---|---|---|
| 台账列表查询 | 10万条订单 | 响应时间 ≤ 3秒 |
| 发票同步 | 单次1万条 | 处理时间 ≤ 5分钟 |
| 库存汇总账 | 1万条SKU记录 | 响应时间 ≤ 5秒 |
| 批量对账单上传 | 500条记录 | 处理时间 ≤ 30秒 |
| 移动加权平均计算 | 单次1000条变动 | 计算时间 ≤ 5秒 |
4.3 数据一致性测试
| 测试项 | 验证方法 |
|---|---|
| 采购订单金额 = 付款明细合计 | 查询统计对比 |
| 订单库存价值 = 入库明细合计 | 查询统计对比 |
| 订单已开票金额 = 发票入账金额合计 | 查询统计对比 |
| 库存余额 = 期初 + 入库 - 出库 | 滚动计算校验 |
| 库存余额对应总账科目余额 | 勾稽校验接口 |
5. 数据迁移方案(第6周)
5.1 迁移范围
- 历史采购订单(从ERP采购单表)
- 历史库存数据(从现有库存表)
- 历史发票数据(从金蝶/税局)
5.2 迁移顺序
- 采购账户:手动创建历史使用的采购账户
- 采购订单:按时间分批迁移,每批1000条
- 付款明细:从ERP付款记录中提取
- 库存余额:从当前库存表初始化
- 发票台账:从税局API拉取历史发票
5.3 迁移校验
- 迁移完成后,运行勾稽校验
- 对比迁移前后的总额数据,误差 < 100元为通过
6. 风险与应对
| 风险 | 影响 | 应对措施 |
|---|---|---|
| 税局API不稳定 | 发票同步失败 | 支持手动导入Excel,保留重试机制 |
| 历史数据量过大 | 迁移耗时长 | 分批迁移,错峰执行 |
| 科目配置复杂 | 凭证生成错误 | 提供配置校验工具,预置常用模板 |
| 多账套数据隔离 | 权限混乱 | 所有查询强制带groupid,使用多租户拦截器 |
| 移动加权计算精度 | 尾差累积 | 保留4位小数,定期勾稽校验 |
7. 里程碑与交付物
| 里程碑 | 时间 | 交付物 |
|---|---|---|
| M1:基础配置上线 | 第1周末 | 采购账户CRUD、供应商收款账户管理 |
| M2:采购订单上线 | 第3周末 | 采购订单创建、付款、退款、入库、凭证生成 |
| M3:台账模块上线 | 第4周末 | 采购账户台账、台账付款、批量对账单 |
| M4:发票模块上线 | 第5周末 | 发票同步、发票入账、供应商台账 |
| M5:库存模块上线 | 第6周中 | 库存汇总账、明细账、勾稽校验 |
| M6:全量联调上线 | 第6周末 | 端到端测试通过,数据迁移完成 |
8. 附录:术语表
| 术语 | 说明 |
|---|---|
| 账期账户 | 采购时先挂账,后续通过台账付款实际支付的账户类型 |
| 现金账户 | 采购时直接扣款的账户类型,如银行账户、连连账户 |
| 台账付款 | 账期账户的还款操作,在台账页面批量处理 |
| 归属供应商款项 | 计入供应商应付/已付的金额(如货款、运费),不含手续费等 |
| 非供应商款项 | 不计入供应商应付的金额(如跨境直采手续费) |
| 移动加权平均 | 每笔入库后重新计算库存单价的成本核算方法 |
| 在途库存 | 已付款但尚未入库的存货,在途库存_XX本地仓库科目 |
| 预付账款-ERP采购供应商 | 用于记录已付款但未取得发票的供应商款项 |
| 预付账款-ERP在途发票 | 用于记录已取得发票但未入库的库存 |
财务ERP - 进销存模块(采购与台账)开发纲要
文档说明
本文档为20260618进销存模块梳理后的开发纲要,简明列出业务目标、核心功能、数据库设计及开发优先级,便于开发团队快速把握全貌。
版本历史
| 版本 | 日期 | 修改内容 | 作者 |
|---|---|---|---|
| v1.0 | 2026-06-25 | 初稿 | 架构组 |
1. 业务目标
打通采购业务与财务核算的闭环,实现:
- 采购订单 → 付款 → 入库 → 发票 全流程自动记账
- 多维度台账查询(采购账户、供应商、发票、库存)
- 移动加权平均成本核算
- 账期采购的批量结算与对账
2. 核心功能模块
2.1 功能模块总览
| 序号 | 模块 | 核心功能 | 优先级 |
|---|---|---|---|
| 1 | 基础配置 | 采购账户配置、供应商收款账户、进销存全局配置 | P0 |
| 2 | 采购订单(会计版) | 订单创建、付款、退款、入库、退货、状态管理 | P0 |
| 3 | 采购账户台账 | 台账列表查询、台账付款、批量对账单上传、图表统计 | P0 |
| 4 | 供应商台账 | 供应商汇总查询、未开票明细导出 | P0 |
| 5 | 发票台账 | 发票同步(税局API)、发票入账、发票查询 | P0 |
| 6 | 本地仓库台账 | 移动加权平均计算、汇总账、明细账、勾稽校验 | P1 |
2.2 业务流程图
核心流程:采购 → 财务全链路
┌─────────────────────────────────────────────────────────────────────────────┐
│ 采购全流程业务图 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 创建订单 │────▶│ 确认订单 │───▶│ 采购付款 │────▶│ 采购入库 │ │
│ └─────────┘ └─────────┘ └────┬────┘ └────┬────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────┐ │
│ │ 自动生成凭证 │ │
│ │ 付款凭证 / 在途库存凭证 │ │
│ └─────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌─────────────────────────────┐ │
│ │ 发票入账 │◀────│ 发票同步 │◀────│ 发票台账 │ │
│ └────┬────┘ └─────────┘ └─────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 台账管理 │ │
│ │ 采购账户台账 │ 供应商台账 │ 本地仓库台账 │ FBA仓库台账│ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
账期付款流程:
采购订单(账期付款) ──▶ 生成凭证(应付账款) ──▶ 进入采购账户台账
│
▼
台账付款(批量勾选)
│
▼
选择现金账户实际支付 ──▶ 生成凭证(还款)
│
▼
更新订单付款状态
发票入账流程:
税局API ──▶ 发票同步 ──▶ 发票台账(未入账)
│
▼
匹配采购订单(供应商)
│
▼
发票入账(勾选确认)
│
▼
生成凭证 ──▶ 更新订单开票状态
3. 状态机设计
3.1 采购订单状态(四维状态)
| 状态维度 | 编码 | 说明 | 流转条件 |
|---|---|---|---|
| 订单状态 | 1-草稿 | 初始状态 | 创建时 |
| 2-已确认 | 订单生效 | 用户确认 | |
| 3-已完成 | 全部完成 | 付款+入库完成 | |
| 4-已取消 | 订单取消 | 仅草稿可取消 | |
| 付款状态 | 1-未付款 | 初始 | 创建时 |
| 2-部分付款 | 已付>0且<总额 | 付款操作 | |
| 3-已付款 | 已付=总额 | 付款完成 | |
| 4-退款中 | 已发起退款 | 退款操作 | |
| 5-已退款 | 退款完成 | 退款完成 | |
| 库存状态 | 1-未收货 | 初始 | 创建时 |
| 2-部分收货 | 已收>0且<数量 | 入库操作 | |
| 3-已收货 | 已收=数量 | 入库完成 | |
| 发票状态 | 1-未开票 | 初始 | 创建时 |
| 2-部分开票 | 已开>0且<总额 | 发票入账 | |
| 3-已开票 | 已开=总额 | 开票完成 |
3.2 付款状态流转图
┌──────────────────────────────────────┐
│ │
▼ │
┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ 未付款 │────▶│ 部分付款 │────▶│ 已付款 │ │
└─────────┘ └─────────┘ └────┬────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ 退款中 │ │
│ └────┬─────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
└────────────────────────▶│ 已退款 │─────────────┘
└──────────┘
4. 核心业务规则
4.1 凭证生成规则
| 业务场景 | 借方科目 | 贷方科目 | 辅助核算 |
|---|---|---|---|
| 现金付款 | 预付账款-ERP采购供应商 | 银行存款/其他货币资金 | 供应商 |
| 账期付款 | 预付账款-ERP采购供应商 | 应付账款-XXX(账期户) | 供应商 |
| 在途库存确认 | 在途库存_XX仓库 | 预付账款-ERP在途发票 | 存货(SKU) |
| 采购入库 | 库存商品_XX仓库 | 在途库存_XX仓库 | 存货(SKU) |
| 发票入账 | 预付账款-ERP在途发票 | 预付账款-ERP采购供应商 | 供应商 |
| 账期还款 | 应付账款-XXX(账期户) | 银行存款/其他货币资金 | 供应商 |
| 退款(反向) | 对应贷方科目 | 对应借方科目 | 供应商/存货 |
4.2 成本核算规则
| 规则项 | 说明 |
|---|---|
| 核算方法 | 移动加权平均法 |
| 单价精度 | 保留4位小数 |
| 金额精度 | 保留2位小数 |
| 入库影响 | 每笔采购入库重新计算单价 |
| 出库影响 | 使用当前单价计算成本,不改变单价 |
| 余额计算 | 滚动加减,不反算 |
| 尾差处理 | 出库时先乘后减,差额归入最后一条 |
| 核算周期 | 按月汇总,逐笔明细 |
4.3 台账核算规则
| 规则项 | 说明 |
|---|---|
| 请款金额 | 仅统计"归属供应商款项"的费用类型 |
| 待付金额 | 请款金额 - 已付金额 |
| 待入库金额 | 库存价值 - 已入库价值 |
| 待开票金额 | 应开票金额 - 已开票金额 |
| 应开票金额 | 归属供应商的请款金额(即待开票订单总额) |
| 分摊方式 | 按比例分摊,尾差归最后一条 |
| 退款处理 | 红字冲销,减少请款/已付/库存/开票金额 |
5. 数据库设计
5.1 ER图(核心表关系)
┌─────────────────────────┐
│ fin_purchase_account │
│ (采购账户) │
└───────────┬─────────────┘
│ 1
│
│ N
┌───────────▼─────────────┐ ┌─────────────────────────┐
│ fin_purchase_order │──────────│ t_erp_supplier │
│ (采购订单-会计版) │ N 1│ (供应商-ERP) │
└───────────┬─────────────┘ └─────────────────────────┘
│ 1 │
│ │ 1
│ N │
┌───────────▼─────────────┐ ┌───────▼─────────────────┐
│ fin_purchase_payment │ │ fin_supplier_bank │
│ (采购付款明细) │ │ (供应商收款账户) │
└───────────┬─────────────┘ └─────────────────────────┘
│
│ N:1
┌───────────▼─────────────┐ ┌─────────────────────────┐
│ fin_vouchers │ │ fin_invoice │
│ (凭证-现有表) │◀─────────│ (发票台账) │
└─────────────────────────┘ └─────────────────────────┘
│
┌─────────────────────────┐ ┌───────────▼─────────────┐
│ fin_warehouse_stock │ │ fin_inventory_transaction│
│ (库存余额) │ │ (库存变动明细) │
└───────────┬─────────────┘ └───────────┬─────────────┘
│ │
└───────────────────┬────────────────┘
│
┌───────────▼─────────────┐
│ fin_vouchers │
│ (凭证-关联) │
└─────────────────────────┘
5.2 新增表清单
| 序号 | 表名 | 说明 | 关联模块 |
|---|---|---|---|
| 1 | fin_purchase_account |
采购账户配置表 | 基础配置 |
| 2 | fin_supplier_bank |
供应商收款账户表 | 基础配置 |
| 3 | fin_purchase_order |
采购订单表(会计版) | 采购订单 |
| 4 | fin_purchase_payment |
采购付款明细表 | 采购订单/台账 |
| 5 | fin_invoice |
发票台账表 | 发票台账 |
| 6 | fin_warehouse_stock |
库存余额表 | 库存台账 |
| 7 | fin_inventory_transaction |
库存变动明细表 | 库存台账 |
5.3 表结构详情
5.3.1 采购账户表 fin_purchase_account
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
bigint unsigned | ✅ | 主键,自增 |
groupid |
bigint unsigned | ✅ | 租户ID(账套),索引 |
account_name |
varchar(100) | ✅ | 账户名称,同租户唯一 |
account_type |
tinyint | ✅ | 1-现金,2-账期,默认1 |
related_subject_id |
bigint unsigned | ✅ | 对应会计科目ID |
config_json |
json | ✅ | 完整配置JSON |
is_enabled |
tinyint | 是否启用,默认1 | |
created_time |
datetime | 创建时间,自动 | |
updated_time |
datetime | 更新时间,自动 |
config_json 结构:
{
"feeTypes": [
{ "code": "GOODS", "name": "货款", "isSupplierRelated": true },
{ "code": "FREIGHT", "name": "运费", "isSupplierRelated": true },
{ "code": "SERVICE", "name": "跨境直采手续费", "isSupplierRelated": false }
],
"paySubjectMapping": {
"GOODS": { "debitSubjectId": 101, "creditSubjectId": 201 }
},
"refundMapping": {
"GOODS": { "debitSubjectId": 201, "creditSubjectId": 101 }
},
"creditPayAccounts": [
{ "cashAccountId": 1, "subjectMapping": { "debit": 301, "credit": 201 } }
]
}
5.3.2 供应商收款账户表 fin_supplier_bank
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
bigint unsigned | ✅ | 主键,自增 |
groupid |
bigint unsigned | ✅ | 租户ID |
supplier_id |
bigint unsigned | ✅ | 供应商ID,索引 |
bank_name |
varchar(100) | 开户银行 | |
account_name |
varchar(100) | ✅ | 收款账户名称 |
account_no |
varchar(50) | ✅ | 收款账号 |
is_default |
tinyint | 是否默认,默认0 | |
is_enabled |
tinyint | 是否启用,默认1 | |
created_time |
datetime | 创建时间,自动 |
5.3.3 采购订单表 fin_purchase_order
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
bigint unsigned | ✅ | 主键,自增 |
groupid |
bigint unsigned | ✅ | 租户ID,索引 |
supplier_id |
bigint unsigned | ✅ | 供应商ID |
purchase_account_id |
bigint unsigned | ✅ | 采购账户ID |
sku |
varchar(50) | ✅ | SKU编码 |
warehouse_code |
varchar(50) | ✅ | 入库仓库编码 |
order_qty |
decimal(12,2) | ✅ | 订单数量,>0 |
unit_price |
decimal(18,4) | 采购单价,≥0 | |
total_amount |
decimal(18,2) | ✅ | 订单金额 |
paid_amount |
decimal(18,2) | 累计已付,默认0 | |
inventory_value |
decimal(18,2) | 库存价值,默认0 | |
invoiced_amount |
decimal(18,2) | 已开票金额,默认0 | |
status_order |
tinyint | 1-草稿,2-已确认,3-已完成,4-已取消 | |
status_pay |
tinyint | 1-未付款,2-部分付款,3-已付款,4-退款中,5-已退款 | |
status_inv |
tinyint | 1-未开票,2-部分开票,3-已开票 | |
status_stock |
tinyint | 1-未收货,2-部分收货,3-已收货 | |
created_time |
datetime | 创建时间,自动 | |
updated_time |
datetime | 更新时间,自动 |
索引建议:(groupid, supplier_id), (groupid, status_pay), (groupid, status_inv), (groupid, status_stock)
5.3.4 采购付款明细表 fin_purchase_payment
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
bigint unsigned | ✅ | 主键,自增 |
purchase_order_id |
bigint unsigned | ✅ | 采购订单ID,索引 |
purchase_account_id |
bigint unsigned | ✅ | 采购账户ID |
voucher_id |
bigint unsigned | 关联凭证ID,索引 | |
fee_type |
varchar(50) | ✅ | 费用类型 |
is_supplier_related |
tinyint | 是否归属供应商,默认1 | |
amount |
decimal(18,2) | ✅ | 支付金额 |
payment_date |
date | ✅ | 付款日期 |
is_refund |
tinyint | 是否退款,默认0 | |
refund_original_id |
bigint unsigned | 退款对应的原付款明细ID | |
status |
tinyint | 0-正常,1-已退款,默认0 | |
created_time |
datetime | 创建时间,自动 |
5.3.5 发票台账表 fin_invoice
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
bigint unsigned | ✅ | 主键,自增 |
invoice_no |
varchar(100) | ✅ | 数电发票号码,唯一 |
invoice_type |
varchar(20) | ✅ | 数电专票/普票/传统 |
groupid |
bigint unsigned | 入账账套ID,索引 | |
supplier_id |
bigint unsigned | 匹配的供应商ID | |
seller_name |
varchar(200) | ✅ | 销方名称 |
seller_tax_no |
varchar(50) | 销方税号 | |
invoice_date |
date | ✅ | 开票日期 |
amount_with_tax |
decimal(18,2) | ✅ | 价税合计 |
amount_without_tax |
decimal(18,2) | ✅ | 不含税金额 |
tax_amount |
decimal(18,2) | ✅ | 税额 |
status |
varchar(20) | NORMAL/CANCELLED/RED_ALL/RED_PART/ABNORMAL | |
posting_status |
tinyint | 0-未入账,1-已入账,默认0 | |
voucher_id |
bigint unsigned | 入账凭证ID | |
sync_time |
datetime | 同步时间 | |
created_time |
datetime | 创建时间,自动 |
5.3.6 库存余额表 fin_warehouse_stock
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
bigint unsigned | ✅ | 主键,自增 |
groupid |
bigint unsigned | ✅ | 租户ID |
sku |
varchar(50) | ✅ | SKU编码 |
warehouse_code |
varchar(50) | ✅ | 仓库编码 |
warehouse_type |
tinyint | 1-本地,2-FBA,默认1 | |
current_qty |
decimal(12,2) | 当前数量,默认0 | |
current_amount |
decimal(18,2) | 当前金额,默认0 | |
unit_cost |
decimal(18,4) | 移动平均单价,默认0 | |
period |
varchar(6) | ✅ | 会计期间(YYYYMM) |
updated_time |
datetime | 更新时间,自动 |
唯一索引:(groupid, sku, warehouse_code, warehouse_type, period)
5.3.7 库存变动明细表 fin_inventory_transaction
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
bigint unsigned | ✅ | 主键,自增 |
groupid |
bigint unsigned | ✅ | 租户ID |
sku |
varchar(50) | ✅ | SKU编码 |
warehouse_code |
varchar(50) | ✅ | 仓库编码 |
trans_date |
date | ✅ | 变动日期 |
trans_type |
varchar(50) | ✅ | PURCHASE_IN/SALE_OUT/TRANSFER_IN/ADJUST |
source_doc_id |
varchar(100) | 来源单据号 | |
qty_change |
decimal(12,2) | ✅ | 正为入库,负为出库 |
amount_change |
decimal(18,2) | ✅ | 金额变动 |
unit_cost |
decimal(18,4) | 发生时单价 | |
voucher_id |
bigint unsigned | 关联凭证ID,索引 | |
created_time |
datetime | 创建时间,自动 |
5.4 与现有表的关系
| 现有表 | 关联方式 | 说明 |
|---|---|---|
fin_accounting_subjects |
subject_id |
采购账户关联科目,凭证分录使用 |
fin_vouchers |
voucher_id |
付款、入库、发票入账生成的凭证 |
fin_voucher_entries |
voucher_id |
凭证分录明细 |
fin_voucher_entries_auxiliary |
entry_id |
供应商/存货辅助核算 |
t_erp_supplier |
supplier_id |
供应商主数据(跨模块) |
t_erp_sku |
sku |
SKU主数据(跨模块) |
t_erp_warehouse |
warehouse_code |
仓库主数据(跨模块) |
5.5 索引清单
| 表 | 索引字段 | 类型 | 用途 |
|---|---|---|---|
fin_purchase_account |
groupid |
普通 | 租户隔离 |
fin_supplier_bank |
supplier_id |
普通 | 按供应商查询 |
fin_supplier_bank |
(groupid, supplier_id) |
复合 | 租户+供应商查询 |
fin_purchase_order |
groupid |
普通 | 租户隔离 |
fin_purchase_order |
(groupid, supplier_id) |
复合 | 供应商台账查询 |
fin_purchase_order |
(groupid, status_pay) |
复合 | 付款状态筛选 |
fin_purchase_order |
(groupid, status_inv) |
复合 | 发票状态筛选 |
fin_purchase_order |
(groupid, status_stock) |
复合 | 库存状态筛选 |
fin_purchase_payment |
purchase_order_id |
普通 | 订单关联查询 |
fin_purchase_payment |
voucher_id |
普通 | 凭证关联查询 |
fin_invoice |
invoice_no |
唯一 | 发票去重 |
fin_invoice |
groupid |
普通 | 租户隔离 |
fin_invoice |
(groupid, posting_status) |
复合 | 入账状态筛选 |
fin_warehouse_stock |
(groupid, sku, warehouse_code, warehouse_type, period) |
唯一 | 期间库存查询 |
fin_inventory_transaction |
(groupid, sku) |
复合 | SKU明细查询 |
fin_inventory_transaction |
voucher_id |
普通 | 凭证关联查询 |
6. 接口清单
6.1 基础配置接口
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/finance/purchase/account/create |
创建采购账户 |
| PUT | /api/finance/purchase/account/update |
更新采购账户 |
| GET | /api/finance/purchase/account/list |
查询采购账户列表 |
| GET | /api/finance/purchase/account/detail/{id} |
查询采购账户详情 |
| POST | /api/finance/supplier/bank/save |
保存供应商收款账户 |
| GET | /api/finance/supplier/bank/list |
查询供应商收款账户列表 |
6.2 采购订单接口
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/finance/purchase/order/create |
创建采购订单 |
| POST | /api/finance/purchase/order/confirm |
确认订单 |
| POST | /api/finance/purchase/order/pay |
采购付款 |
| POST | /api/finance/purchase/order/refund |
采购退款 |
| POST | /api/finance/purchase/order/receive |
采购入库 |
| POST | /api/finance/purchase/order/return |
采购退货 |
| GET | /api/finance/purchase/order/page |
订单列表查询 |
| GET | /api/finance/purchase/order/detail/{id} |
订单详情查询 |
6.3 台账接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/finance/ledger/purchase/page |
采购账户台账列表 |
| POST | /api/finance/ledger/purchase/ledger-pay |
台账付款 |
| POST | /api/finance/ledger/purchase/upload-pay |
上传对账单批量付款 |
| GET | /api/finance/ledger/purchase/statistics |
台账图表统计 |
| GET | /api/finance/ledger/supplier/page |
供应商台账列表 |
| GET | /api/finance/ledger/supplier/export-uninvoiced |
导出未开票明细 |
6.4 发票接口
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/finance/ledger/invoice/sync |
手动同步发票 |
| GET | /api/finance/ledger/invoice/page |
发票台账列表 |
| POST | /api/finance/ledger/invoice/post |
发票入账 |
| GET | /api/finance/ledger/invoice/statistics |
发票统计 |
6.5 库存接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/finance/ledger/stock/summary |
库存汇总账 |
| GET | /api/finance/ledger/stock/detail |
库存明细账 |
| GET | /api/finance/ledger/stock/check |
勾稽校验 |
7. 开发优先级与排期
7.1 优先级定义
| 等级 | 说明 | 必须完成时间 |
|---|---|---|
| P0 | 核心功能,必须上线 | 第4周末 |
| P1 | 重要功能,上线后尽快完成 | 第6周末 |
| P2 | 增强功能,后续迭代 | 后续版本 |
7.2 排期总览
| 阶段 | 周期 | 模块 | 任务数 | 优先级 |
|---|---|---|---|---|
| 阶段一 | 第1周 | 基础配置 | 4 | P0 |
| 阶段二 | 第2-3周 | 采购订单(会计版) | 7 | P0 |
| 阶段三 | 第3-4周 | 采购账户台账 | 5 | P0 |
| 阶段四 | 第4-5周 | 发票台账与供应商台账 | 5 | P0 |
| 阶段五 | 第5-6周 | 库存台账 | 6 | P1 |
| 阶段六 | 第6周 | 联调与测试 | - | P0/P1 |
7.3 里程碑
| 里程碑 | 时间 | 交付物 | 验收标准 |
|---|---|---|---|
| M1 | 第1周末 | 基础配置上线 | 采购账户CRUD、供应商收款账户管理可用 |
| M2 | 第3周末 | 采购订单上线 | 订单创建、付款、退款、入库、凭证生成可用 |
| M3 | 第4周末 | 台账模块上线 | 采购账户台账、台账付款、批量对账单可用 |
| M4 | 第5周末 | 发票模块上线 | 发票同步、发票入账、供应商台账可用 |
| M5 | 第6周中 | 库存模块上线 | 汇总账、明细账、勾稽校验可用 |
| M6 | 第6周末 | 全量联调上线 | 端到端流程测试通过,数据迁移完成 |
7.4 任务依赖关系
基础配置 (P0)
│
├── 采购订单 (P0)
│ │
│ ├── 采购账户台账 (P0)
│ │ │
│ │ └── 批量对账单上传 (P0)
│ │
│ ├── 发票台账 (P0)
│ │ │
│ │ └── 供应商台账 (P0)
│ │
│ └── 库存台账 (P1)
│ │
│ ├── 移动加权平均 (P1)
│ │
│ └── 勾稽校验 (P1)
│
└── 供应商收款账户 (P0) ──▶ 采购订单付款
8. 测试验收要点
8.1 核心流程测试
| 测试场景 | 验证点 |
|---|---|
| 现金采购完整流程 | 订单创建→付款→入库→发票入账,凭证正确,状态流转正确 |
| 账期采购完整流程 | 订单创建→账期付款→台账付款→入库→发票入账,凭证正确 |
| 部分付款+部分入库 | 状态正确(部分付款/部分收货),金额正确 |
| 退款(已付款未入库) | 红字凭证,状态变为已退款 |
| 退款(已付款已入库) | 退货凭证,库存回退,状态正确 |
| 批量对账单上传 | Excel解析→预览→确认→批量生成凭证 |
8.2 台账查询测试
| 测试场景 | 验证点 |
|---|---|
| 采购账户台账列表 | 各金额字段正确,汇总行准确 |
| 供应商台账 | 按供应商汇总数据正确 |
| 发票台账 | 同步数据完整,入账状态正确 |
| 库存汇总账 | 期初/入库/出库/期末数据正确 |
| 库存明细账 | 逐笔变动可追溯,联查凭证 |
8.3 数据一致性测试
| 测试项 | 验证方法 |
|---|---|
| 订单金额 = 付款明细合计 | 查询统计对比 |
| 库存价值 = 入库明细合计 | 查询统计对比 |
| 已开票金额 = 发票入账金额合计 | 查询统计对比 |
| 库存余额 = 期初 + 入库 - 出库 | 滚动计算校验 |
| 库存余额 = 总账科目余额 | 勾稽校验接口 |
9. 风险与应对
| 风险 | 影响 | 应对措施 |
|---|---|---|
| 税局API不稳定 | 发票同步失败 | 支持手动导入Excel,保留重试机制 |
| 历史数据量大 | 迁移耗时长 | 分批迁移,错峰执行 |
| 科目配置复杂 | 凭证生成错误 | 提供配置校验工具,预置常用模板 |
| 移动加权精度 | 尾差累积 | 保留4位小数,定期勾稽校验 |
| 多账套权限 | 数据隔离混乱 | 所有查询强制带groupid,使用多租户拦截器 |
| 与现有代码冲突 | 系统不稳定 | 新表独立,Service独立,不修改现有代码 |
10. 附录
10.1 术语表
| 术语 | 说明 |
|---|---|
| 账期账户 | 采购时先挂账,后续通过台账付款实际支付的账户 |
| 现金账户 | 采购时直接扣款的账户 |
| 台账付款 | 账期账户的还款操作,在台账页面批量处理 |
| 归属供应商款项 | 计入供应商应付/已付的金额(货款、运费) |
| 非供应商款项 | 不计入供应商应付的金额(手续费) |
| 移动加权平均 | 每笔入库后重新计算库存单价的核算方法 |
| 在途库存 | 已付款但尚未入库的存货 |
| P0/P1/P2 | 优先级:P0最高,P2最低 |
10.2 参考文档
- 20260618 进销存模块梳理(采购模块、台账)需求文档
- 财务ERP会计模块详细开发文档
- 财务ERP - 进销存模块详细开发流程文档
财务设计框架20251011-原始需求
财务设计框架20251011
-
所有支出参照正规的财务管理流程: 请款>审核>支付>凭证
-
字段齐全,包含财务报表所需要的相关对应字段(业务对应, 现金流表等)
-
-
设计好全公司的基础财务字段库, 以及可以兼容的更改方式
-
可以满足在这个框架下, 方便的显示公司,各个项目, 各个子公司的财务报表(业务,现金,资产等)
-
类似金蝶等的财务软件, 设计基础框架后,按照设计好的流程和操作, 后续所有报表都可以系统生成
-
-
跨越使用, 平台数据+多维表格+WIMOOR+海外仓+其它OMS,WMS
-
请款
-
类型有
-
多维表格:
-
房租 , 行政备用金, 项目备用金, 采购备用金, CFD请款总表
-
台账, 月结采购和承运商,快递
-
-
飞书审批: 个人报销 / 付款申请
-
Wimoor 应用
-
-
基本框架
-
会计科目基本字段配置金蝶的账号密码网址: jdy.com 账号:15773186733 密码:15773186733Aa@
-
类似金蝶等主流企业
-
设置主流科目(要带编码),自定义的科目
-
科目的要否 : 现金及现金等价物科目 , 非现金科目
-
科目默认人民币, 可以设置其它币种. 统计余额/报表时需要转换币种
-
主科目, 子科目. 可能需要三级子科目. (银行存款 - 连连星球 - 连连星球 美元 )
-
多级科目, 如果统计上一级科目时, 会把本级和子一级的所有子科目一起计算
-
-
跟三表还有明细账、总账中各个项目的关系. 便于系统自动统计报表
-
-
项目配置("账套" 配置 , 叫账套可能更贴合会计实操 )
-
自定义"账套" (相当于一个公司, 或者是项目), "账套" 可以是单独的, 也可以其数据 = 自身 + 其它多个公司数据相加
-
"账套" 作用是可以针对"账套"出报表, 该账套名下所有凭证的数据对应的三表
-
权限设定时, 一个账套也是按权限查看,
-
账套的相关凭证登记和查看, 是分开做权限
-
-
"账套" 比如是有 FD-KQ FD-APN等, 然后再新建"账套", FD , 数据来源于 FD 加 FD-KQ 加 FD-APN
-
理论上讲 , 账套 可以使用所有科目. 但是有些自定义科目,实操/逻辑上只会用于某一账套才对.
-
-
用户权限设置
-
具体模块是否有查看 , 使用等的权限
-
用户查看和登记的权限
-
查看 相应的"公司" 数据
-
登记凭证时, 登记相应的"账套", 和指定的一些科目
-
-
登记凭证
-
手动登记凭证
-
符合会计凭证登记原则的行业方案, 比如借贷相等, 相应科目
-
凭证还需要填写"账套", 同一账套下必须有相应的借贷科目
-
凭证登记人 + 凭证登记时间 + 业务时间 + 凭证登记来源
-
-
自动登记凭证配置
-
凭证登记人 + 凭证登记时间 + 业务时间 + 凭证登记来源
-
多维表格配置
-
新增自动化配置
-
绑定一个多维表格(按飞书多维表格API的要求), 字段和科目/公司/等等数据 对应
-
相关限制的设定
-
-
采购模块配置
-
在采购当中付款. 即自动生成相应凭证.
-
需要解决 单笔/多笔/账期/1688订单和ERP订单不一一对应等多种情况
-
需要解决 多个付款渠道 等多种情况
-
各种问题, 需要配置
-
如果完全在ERP上操作, 需要满足各个付款方式(现金类型, 账期类型), 余额和付款明细的查看
-
-
-
支付平台操作
-
比如, 支付平台连连, 配置了支付平台类的现金科目, 即有相应的模块
-
"连连星球余额" , 展示其子科目(各个币种) 的当前余额
-
出账, 使用各个账套下的各个余额进行出账
-
-
自动登记凭证的异常处理.
-
列出异常, 手动处理
-
在远程端提示存在异常
-
-
-
报表配置
-
权限配置. 具体一个用户只能查看 指定的 "账套" + "科目" 的数据明细和结余
-
-
实际使用的举例
-
手动登记凭证
-
填写 公司+科目+借+贷+金额+备注, 摘要等等内容
-
凭证字收、付、转、记+号+日期 等等
-
-
-
多维表格自动登记凭证
-
行政周期付款
-
相应多维表格完成配置.
-
在ERP上配置
-
在多维表格上配置插件
-
-
审批付款
-
相应多维表格登记内容
-
付款后, 在多维表格的插件(前端) , 勾选相关记录, 发送到ERP登记凭证 (这一流程需要更详细设计)
-
自动对应科目
-
比如这个多维表格只能用哪些 科目作为 借项, 哪些科目作为 贷项.等等.
-
一般而言, 应该是 付 凭证字
-
公司,日期, 金额 等由审批时的字段对应
-
借项, 由审批申请人, 严格按下拉选择是哪些费用成本科目
-
贷项, 由付款人出纳, 按付款的情况选择对应
-
-
-
支付平台出账
-
连连星球, 输入 出账金额, 摘要, 备注, 出账账套分摊或指定账套, 等, 出账操作
-
会把出账金额, 由各个账套分摊. 比如要出30,000, 当前余额 FD-KQ, 50,000CNH; FD-APN, 10,000CNH. 出账扣减时, FD-KQ, 25,000, FD-APN,5,000 ,这样分摊.
-
凭证就是
-
连连星球 贷 FD-KQ 25000 , FD-APN 5000
-
内部往来 借 FD.....
-
-
"内部往来" 科目是用于解决, 经常出现的:某个账套需要由另一个账套的资金来支付, 同时其下的资金也常用于支付另一个账套的资金. 所以所有账套合并报表之后, 应该"内部往来" 是等于0的.
-
-
-
采购
-
工资分摊计算
-
多维表格
-
上传工资数据后, 按配置的规则
-
计算各个账套, 应分摊的工资
-
贷 , 某一账套 的 对公账号 科目
-
借, 某一账套 的 人员工资/社保/公积金 科目
-
-
使用的有:
-
飞书审批然后付款 > 多维表格
-
物流, 采购月结 > 多维表格
-
采购现金支付, 诚e赊, 跨境直采 > ERP定制模块
-
对公账户付款, 工资/报销 ,房租等 > 多维表格
-
多个支付平台付款 > ERP定制模块
-
请款: 单独, 项目备用金, 行政备用金, 等各种 > 多维表格 / ERP手动登记凭证
-
-
额外需求: 香港公司对应的支付, 归集所有单据
-
采购
-
物流
-
外币支出, VAT等等
-
分步实施
20251016第一阶段
-
先做以下模块
-
会计科目基本字段配置
-
账套配置("账套" 配置 , 叫账套可能更贴合会计实操 )
-
用户权限设置
-
手动登记凭证
-
20260225
-
会计相关的功能单独一个主菜单 : 账簿
-
不与原有的财务主菜单同模块.
-
凭证自动生成: 子菜单. 放各种自定义的凭证生成模板 (不能叫凭证模板, 因为 录凭证的功能里, 也有一个凭证模板的功能, 是保存好科目设置的一种简单模板)
-
审核 , 免审核
-
-
-
飞书联结, 从飞书到录入凭证
-
提供一套通用的方式联结飞书多维表格
-
多维表格, 自定义插件
-
提供飞书插件服务器,多维表格授权, 关联必要字段
-
凭证自动生成 : 飞书多维表格
-
可以设置多个模板,每个模板可以基于不同的底层API. 比如飞书多维表格模板, 可以设置多个,对应不同飞飞书表格
-
-
-
店铺月度数据自动凭证
-
https://developer-docs.amazon.com/sp-api/docs/report-type-values-payment
-
"\\192.168.0.202\合规中心公共盘\软件备份\cfd_web_app\cfd_web_app\utils\amazon_accounting.py"
-
-
下载原始数据并保留
-
对应逻辑生成凭证 (类似 金蝶的结账凭证模板设置 )
-
汇率使用数据日期当天的 外币对人民币的中间价
-
凭证从营业收入, 到 应收账款(亚马逊平台店铺) , 不需要涉及连连收款(后续其它模板涉及)
-
-
凭证自动生成 : 亚马逊交易数据月度报告
-
-
其它台账结构构思
-
发票台账 (月结,账期,诚e赊,关联付款订单) (金蝶, 发票管理模块)
-
进销存台账(进销存系统) (https://www.kingdee.com/product/stellar_inventory.html)
-
广告发票台账(https://advertising.amazon.com/API/docs/en-us/billing#tag/Billing-Documents)
-
-
联接飞书多维表格
-
亚马逊销售数据期间汇总
-
数据:
-
最佳实践: 使用settlement report 按照回款的时间入账分录, 并且 数据与 payment report, excel和pdf完美匹配 (亚马逊 Date Range 报告 / 结算单)
-
次选,使用payment report,按月入账. API > 人工
-
最差: 使用settlement report, 与payment report不一致
-
英国 GMT+1.
-
时区问题 202602
-
根据PDF的时区处理数据
-
可以使用settlement report的数据来处理, 必须要保证数据来源的时区原始数据, 再处理
-
-
-
科目设置
-
除了已确定的
-
还需更改:
-
提现时, 提到 应收款项 _ 亚马逊平台转出未入账 USD CAD EUR GBP
-
增值税?
-
-
-
-
结账
-
期末调汇
-
结转销售成本
-
结转利润
-
20260303 损益科目红字
202511029 需求补充 : 备忘记录
-
凭证对应的附件 上传
-
1688采购的凭证, 如何加进去?
-
采购
-
-
导出. 报表和明细的功能
-
账表.
20251108 需求 备忘
-
软件信息系统的重构
-
针对公司,单个店铺的维度
-
涵盖 业务. 采购,物流,销售,财务统计
-
重点新增会计内容.
-
各个业务点的票据和业务截图. 的保存
-
-
财务记账模块
-
专业的会计账表
-
-
-
同时能灵活应用到多个店铺, 多个运营, 多个功能性主体
-
可以做到
-
既能分开查看: 满足合规要求. 实现业务实质复现
-
又能合并查看: 满足集团层面的查账, 比对等需求
-
又能方便地记录: 满足实操中业务的便捷
-
-
想法
-
底层, 是分开独立的. 各个公司 (包括店铺,运营,采购,香港主体等以公司为单位), 单账号单密码
-
操作层面
-
通过账号关联 > 业务授权的模式
-
类似 代运营的方式
-
比如: 个别操作, 单账号某人, 可以上传附件/创建单据, 是涉及多个公司的情况
-
-
-
-
-
尤其重视合规的要求
-
可能需要非常多的地方 留存文档: 图片, excel , pdf, zip 等媒体资料附件 , 非常重要
-
媒体存留服务器, 至少双备, 可冷备, 本地备份
-
加密.
-
附件的日期, 命名, 关联凭证, 等等必要信息
-
-
多个核心的业务点, 要有相应的 "四票一致, 业务留痕" 的OA上的操作要求
-
合同 (账单)
-
发票
-
物流凭证 (轨迹, 货物流)
-
付款凭证 (资金流)
-
业务沟通记录
-
-
会记凭证. 所有凭证都要用对应的附件, 佐证四票一致,业务留痕
-
非常重要: 当需要核查时, 可以按公司单独账号来登录, 只能查看公司单独的
-
有些属于业务上的, 尤其是库存的会计凭证, 考虑怎么快速记, 才方便
-
采购, 入库, 出库, 在途, 等等. 业务单据 > 会计凭证
-
-
店铺公司的平台费用
-
最好自动下载 / 手动下载 留存 (按文件存放, 凭证的附件)
-
月度
-
明细数据(excel / pdf ) transaction
-
月度数据 , summary
-
-
-
-
除了, 会记凭证, 其它核心的业务点, 也一样要求上传, 保留一些票据
-
针对公司层面: 合同, 备案, 等等
-
物流: 物流单证
-
-
-
建立 “库存 - 发票” 一体化管理系统 结转成本
-
用 ERP 系统记录每批次库存的采购时间、发票号、金额、税额
-
出库时自动关联对应采购批次,生成成本结转凭证,确保账实相符
-
定期库存盘点 + 差异调整
-
每月末进行库存盘点,出具盘点报告,调整账实差异
-
年度终了进行全面盘点,确保库存数据准确,为所得税汇算清缴提供依据
-
凭证归档标准化
-
按 “采购合同→付款凭证→进项发票→入库单→出库单→销售订单→物流单” 的顺序归档
-
电子档案与纸质档案同步保存,保存期限不少于 10 年
-
20260311开发计划草拟
-
通胀功能
-
凭证审核. (凭证状态 > 审核, 尤其是自动生成的)
-
|
计划最晚上线时间
|
模块功能拟放的位置
|
详细功能
|
备注
|
|
202603
|
账簿-结账-期末处理-新增自定义模板-亚马逊月度营业数据
|
按科目,引用数据,按模板设置生成亚马逊的月度营业数据
数据源: 按国家
凭证备注设置
汇率: 对应币种按原币记录 + 对账簿对应的本位币的汇率按亚马逊报送中国税局的要求, 订单每日的中间币外管局的价牌.
凭证日期: 需要设置为对应数据月份.(凭证日期很重要,涉及数据的账期归属)
|
后续进一步增加: 月度PDF作为凭证附件.
|
|
202604
|
账簿-凭证-导入凭证 ;
导出凭证 > 更改 > 导入批量更改
|
|
可以导入. 导出可以放到明细账,设定成导入的格式.
|
|
202604
|
账簿-结账-期末处理-新增自定义模板-飞书多维表格数据连接
|
|
自动连接飞书的数据, 多维表格的数据可以直接按配置好的模板, 生成凭证.
|
|
202605
|
明细账
总账
科目余额表
|
|
复制金蝶的大部分前端逻辑. 方便查找核对.
|
|
|
财务报表:
资产负债表, 利润表, 现金流表
|
重要: 利润表, 增加一个功能, 可选择显示或隐藏,各项成本项目的占总营业收入的比例
|
|
|
|
现行采购模块 > 自动记账
|
|
|
|
202605
|
账簿 - 台账 - 进销存
|
凭证字号. 入, 出, 采 , 进, 销 等等
|
|
|
|
结账 - 期末处理 :
调汇 +
税务相关
|
|
|
|
|
结账 - 结账
|
|
|
|
|
账簿 - 台账 - 发票
供应商台账
采购/物流 对账单 <> 发票 台账
采购账户台账
余额/对账,账期还款对账单(批量支付,还款),
|
发票 <> 付款全链条关联查询:
发票-采购订单-付款-税-供应商...出口.退税等等
发票-报销-付款-货物等等
|
亚马逊等境外发票 + 境内发票
|
|
202609
|
离境业务流的会计凭证
代收款项/划转
信用卡广告 等等
|
|
凭证 <> 附件
|
|
|
税务报表参考报税数据
|
|
|
|
后续
|
员工收入台账
其它平台对接
应付款项 - 台账
资金流分析等
非亚马逊平台类的销售端+库存 的接入
连连台账(香港公司的明细?)
|
|
|
-
飞书多维表格的连接
|
表格
|
需求简介
|
可能的方案
|
|
工资
|
一张表格,多家公司账薄,涉及固定的科目和格式
|
|
|
请款申请
对内报销 , 对外支付, VAT支付
|
飞书审批同步数据
|
|
|
单一业务清晰的表格
|
VAT支付
|
|
20260401 亚马逊月度营业数据: PDF数据项目对应科目
202604 进销存
功能需求
-
ERP全流程支持: 采购>付款>结余查账>入库>库内操作>转库>销售出库>其它出库, 操作和凭证生成
-
先做, 采购 到 出库. 暂不做库内操作的结转到库存价值.
-
库存价值, 先进先出,加权平均. 先只对应采购环节分摊.
-
-
采购账户可以分成 现金或者账期类型的. 现金是没有负余额,账期是赊账支付,有负额(欠), 需要还款
-
支持账期, 一笔付款>多笔订单, 能关联得上(操作要便捷)
-
账期, 一笔付款>多个订单
-
先采后付, 还款, 一笔跨境直采还 > 多个跨ERP订单 ;
-
-
支持多个ERP账号,共用一个账户, 额度, 如跨境直采. 具体明细数据/权限/一笔付款多笔订单等等, 怎么做需要细化
-
现金类型, 银行账户,浦发, 的台账, 考虑支持ERP自身的记录, 和 银行拉取的数据
-
SKU-库位-库存 : 从采购 > 入库 > 出库, 都要按唯一账簿做归属.
进销存 台账, 发票台账,设计重点
-
设置对应各个环节进销存的会计科目,
-
开发会计科目的辅助核算功能, 供应商 + 存货 , 可以一并加上 部门等
-
-
采购账户的台账: 账期,付款时的订单对应 , 对账单 ,
-
支持上传 账期-对账单 : 订单明细 + 金额明细
-
单一笔的付款金额 > 对账单 > 凭证
-
跨境直采 支付 先采后付的情况
-
1688自行分配 付款 与 订单的关系.
-
需要支持上传 对账单(包含 ERP订单+金额明细等, + 1688订单 + 跨境直采服务费 总额/分摊 )
-
-
预留, 与发票台账的 一一对应的接口,
-
ERP订单 > 付款单 > 发票 , 多对多对应
-
-
-
采购ERP操作 细节
-
ERP采购订单 : SKU : 供应商 : 1688订单 : 款项记录 = 1 : N : 1 : N : N
-
SKU : 账簿 = 1 : 1
-
所有对应关系, 双边可查. 比如订单能查到对应账项 ; 某笔款项也能查到对应订单
-
-
订单款项记录 :
-
订单下多个SKU可能属于不同账簿, 需要按款项进行分摊. 每个订单 分摊操作/按钮? 自动分摊?
-
问题: 当前费用类型 (货款 , 运费 , 货款(包含运费) , 跨境直采手续费, 其它费用等), 有很多费用,跟对应订单下的供应商没有关系, 如果使用账期账户, 到时账户的台账, 应还金额就会对不上?
-
待细化:
-
将订单层面的款项记录, 只限定在 与订单下供应商一致相关的,
-
将其它类型的款项, 如 运费/跨境直采手续费等与供应商不相关的, 另外在 账户的台账下, 使用批量关联的方式登记
-
对于跨境直采, 在ERP订单款项记录里一并登记, 操作效率会更好, 批量操作的方式,需要拆/合并,不好使用?
-
-
对于运费:
-
重点看是直接采购使用采购账户付出去? 还是请款/另行支付. 采购账户付出去, 就需要直接对应生成凭证. 请款/另行支付, 就需要会计出纳-台账 操作
-
如果是直接支付的情况. ERP订单操作, 需要单独有 对应支付到非该供应商的 款项记录?
-
-
采购环节当前节点疑问
-
保证: 付款金额(分供应商和其它人) - 入库库存价值 - 发票 一定金额对得上. 不然有些科目会有差额
-
每笔款,都要对应到入库前的库存价值.
-
货款, 运费, 服务费. 有些非供应商层级的是否考虑不需要对到到库存价值
-
但如果是账期, 都需要对到 供应商层级
-
肯定都要对应到 , 店铺/账簿 层级
-
-
是不是全部采购,都有对应的ERP订单? 月结,耗材等等, 对应相应入库
-
支付ERP采购订单时, 有哪些非供应商的款项记录需要登? 走直付/账期/月结/还有没有其它
-
运费类型, 有哪些支付方式? 还有其它相关费用项目吗
-
先采后付, 还款时, 还款款项,能不能对应上1688订单, 对应上ERP订单+SKU? 有没有其它费用
-
跨境直采, 还先采后付的情况呢
-
-
跨境直采, 支付. 服务费, 登记办法.
-
借 财务费用
-
-
批量支付: 通过账户台账, 对账单 ,功能, 批量支付+关联ERP订单+
-
付款 和 取得发票的 两个环节的会计凭证
-
退款退货, 换货, 退款不退货,退货不退款, 部分退货 等情形
-
还有使用A付款了, B来退款或者其它的情形
-
-
付款 , 入库, 发票的先后. 有没有先发生入库, 再去付款等的情形?
-
如果创建订单时, 不做凭证, 就没有待付款的统计项? 需不需要
-
事后需要更改的情况多不多? 填错了, 少填了? 与实际付款的不一致的情况
-
-
-
-
设计思路
-
现金流 和 库存 和 发票 三个环节分别独立. 凭证与台账之前双向可互查
-
ERP创建订单时, 不生成凭证.不影响任何会计环节. 待收货,待付款等等
-
或者只做对应采购人员知晓的 各家供应商待处理订单等业务分析页面
-
-
付款时 (采购账户台账)
-
凭证可能通过某条属性,查到对应的采购订单 + 对应在采购账户台账里的明细 + 供应商台账应收应付(发票) 等
-
现金流凭证: 借 预付账款-对方, 贷 采购账户
-
采购订单: 凭证号 (或者是在凭证里,记上 采购订单号 ,辅助核算或是额外的属性或是格式化的摘要. 需要考虑后续 (一个凭证明细的会计科目,有没有可能对应多个采购订单号,导致数据不好存储?) )
-
采购账户台账: 凭证号
-
供应商台账: 凭证号
-
凭证的其它属性: 供应商(会计科目的辅助核算属性) + SKU(辅助核算属性)
-
-
库存凭证: 借 在途库存, 贷 应付账款-对方
-
ERP采购单号 + 供应商(辅助核算属性) + SKU(辅助核算属性)
-
-
-
收到发票时 (发票台账)
-
发票凭证: 借 应付账款-对方, 借 应交税费 (不出口退税无), 贷 预付账款-对方
-
相当于预设,发票先到库存后到(发票金额先确认,库存价值跟着发票金额)
-
如果三项不一致的情况, 比如库存先到/发票后到, 发票金额与实际支付金额不一致 / 退款结转到后续付款订单 / 其它渠道退款回来以其它方式入账 等等
-
理论上讲需要按发票金额入库存价值
-
操作办法? 红字冲销重做 / 差额挂在 预付账款 / 退款
-
-
-
-
入库时 (库存台账)
-
库存凭证: 借 商品库存, 贷 在途库存
支付采购订单时: 借 预付账款-ERP采购供应商, 贷 货币资金—浦发银行(2384)采购货款待结算 借 在途库存, 贷 预付账款-ERP在途发票 (公账作为支付时,有另行的飞书审批生成凭证) 出纳付款后,飞书多维表格生成凭证 借 货币资金—浦发银行(2384)采购货款待结算, 贷 货币资金—浦发银行(2384) 收到发票时: 借 预付账款-ERP在途发票, 贷 预付账款-ERP采购供应商 收到库存入库时: 借 库存商品, 贷 在途库存 -
-
-
采购
-
采购账户设置
-
账户类型
-
现金类型
-
对公账户绑定设置状态
-
-
账期类型
-
-
激活状态
-
跨账户共享设置
-
是否启用采购对应的会计科目.
-
是否启用现金流凭证, 如果不扣款/不计账户余额可能就不需要(比如 对公账户, 多个环节扣款+ERP没有联通银行API)
-
是否启用库存凭证
-
账户是否有服务费: 需要对应设定会计科目
-
-
对应台账相关设置
-
-
-
款项分摊设置
-
-
采购模块会计功能, 启用.
-
区别于现有的采购模块, 另行单独的模块对接
-
启用后,或者新的页面, 或者旧的页面里对接新的会计功能
-
-
采购订单
-
是否需要改成按ERP订单操作, 当前是按订单+SKU操作
-
采购订单, 登记款项 时; 强制对应 SKU来分摊. 分摊的明细, 要在前端同步显示.
-
-
采购订单输入时, 要输入 账户支付单号/银行流水单号等类型的 账户支付单据编号
-
存入凭证特点位置, 用于 将 现金流凭证 - ERP订单 - 账户台账 对应
-
-
-
台账的作用
-
主要有
-
供应商台账: 使用辅助核算,对应 应收, 应付, 预付 等
-
采购账户台账: 账户收支明细; 批量付款(对账单); 余额对账
-
账簿(当前/全部) > 供应商 > 科目 > 时间范围
-
结账: 针对日进行结账, 结账后, 该日期及以前的数据不可更改
-
设定允许更改时间: 在结账前, 多少天内的数据允许更改 ( 采购订单的付款明细 操作)
-
-
发票台账: 发票的明细,余额; 应收; 发票对账,状态; 未入账发票/已入账发票 等等
-
库存台账
台账 :-
账户台账
-
主要解决: 对账(余额和明细), 账期付款的问题
-
现金
-
账期
-
支持跨ERP余额 对账 / 对账单付款 / 结账
-
-
余额查询 , 明细列表(对应订单等,订单辅助核算)
-
-
(采购/物流)供应商台账 (设置好相应的会计科目对应)
-
主要解决: 发票和库存,待入的问题.
-
筛选科目, 对应科目计算, 按照供应商辅助核算数据, 得出相应科目(相应科目, 对应应收发票, 应付款, 应收库存)下的 明细, 期初, 期末, 发生额
-
提供, 对账单下载,
对账单付款(款项操作设定在账户台账处理), 发票入账 的功能. -
支持一个供应商(ID,简称) : 维护多个收款账号(发票抬头公司,付款号码) : 只能默认1个,停用,启用
-
-
发票 台账
-
主要解决: 发票一一对应, 状态, 正确凭证入账查询的问题
-
计划使用金蝶 拉取发票数据,API,
-
覆盖统计, 进项、销项、红字、作废 ; 查询 发票数据, 如 开票人, 类型 等等
-
匹配 采购供应商发票入账, (后续)物流供应商发票入账, 飞书审批的发票入账, 等等
-
确认, 区分已入账, 和未入账发票
-
我们只有收票端, 一般不开票. 应该对于需要开票的统计, 应开未开票 - 客户 这一类的,暂时少
-
等等, 这一块需要进一步细化, 实质也是基于 凭证,各种辅助核算的功能来开发应用.
-
-
-
账户台账, 账期类型. 启用台账批量付款功能
-
在台账页面, 上传 对账单 > 完成付款 > 生成台账明细 , 对应ERP订单明细金额等, 对应凭证
-
先前逐步支付, 跟正常账户支付同样的逻辑:
支付采购订单时: 借 预付账款-ERP采购供应商, 贷 其他货币资金—账期结算户 借 在途库存, 贷 预付账款-ERP在途发票 收到发票时: 借 预付账款-ERP在途发票, 贷 预付账款-ERP采购供应商 收到库存入库时: 借 库存商品, 贷 在途库存-
现在批量还款: 借 其他货币资金—账期结算户, 贷 采购账户
-
供应商(或 + 采购订单)的辅助核算, 所以要求这个凭证要按供应商 (+采购订单) 的字段分明细(对账单格式设计)
-
-
-
账户台账, 带有服务费的类型. 启用台账批量付款功能
-
直接支付时, 跟正常账户支付类似的逻辑:
支付采购订单时: 借 预付账款-采购供应商, 贷 其他货币资金_连连国际等-跨境直采待结算_CNH 借 财务费用_跨境直采 , 贷 其他货币资金_连连国际等-跨境直采待结算_CNH 借 在途库存, 贷 应付账款-对方 收到发票时: 借 应付账款-对方 , 贷 预付账款-对方 收到库存入库时: 借 库存商品, 贷 在途库存-
批量支付偿还账期类账户时:
-
借 其他货币资金—账期结算户, 贷 其他货币资金_连连国际等-跨境直采待结算_CNH 借 财务费用_跨境直采 , 贷 其他货币资金_连连国际等-跨境直采待结算_CNH
-
-
-
(采购, 物流)供应商台账,
-
依据凭证里, 会计科目的供应商辅助核算的数据生成, 供应商的 款项,发票,库存 的应付明细和余额数据.
-
多个供应商,同一个功能页面, 按供应商筛选
-
设置多种类型, 比如 预付账款 - 采购供应商 , 这个科目下的, 表示 对应待收的供应商发票
-
只有发票, 存在需要在台账, 登记 生成凭证
-
发票,对账单, 凭证上: 关联采购订单 等辅助核算
-
对于在使用发票入账时(收到发票时, 要做的凭证), 如果是税要记为进项的时候应该,
支付采购订单时: 借 预付账款-对方, 贷 其他货币资金—账期结算户 借 在途库存, 贷 应付账款-对方 原记法,收到发票时: 借 应付账款-对方 , 贷 预付账款-对方 需要退税,需要抵扣,收到发票时 1)先红字冲销原来先行预估登记的 借:在途库存, 贷:应付账款-对方 2)按实际发票金额正式入账 (不再使用'应付'科目) 借:在途库存 借:应交税费 - 应交增值税(进项税额) 贷:预付账款-对方 -
-
-
-
相关设置
-
采购时, 个别无法通过平台确认账簿的SKU, 支持在采购订单, 手动指定/分别分摊 对应账簿?
-
固定, 还是全部都能手动指定?
-
基于此, 导致 台账的查看, 是否需要支持 "当前账簿" , "全部账簿" 的(就这两个选择就行, 肯定不能支持逐个账簿筛选), 以便于对比数据 !
-
不但是跨账簿的问题, 个别还有跨ERP的,比如跨境直采的数据(只支持在主ERP里显示全部?)
-
-
-
对于ERP自动生的凭证,设置专用的会计科目(区别于其它渠道录的凭证)并启用相关的辅助核算
-
应付账款-ERP采购供应商
-
预付账款-ERP采购供应商
-
其他货币资金-(相应采购账户)
-
在途库存-ERP采购
-
-
20260523
20260422 发票台账
-
数电发票 - 数电发票号码管理
-
对应客户
-
凭证
-
合同
-
-
三方API ,中税创新,金蝶等 > 爬虫 > 乐企
-
暂时先用金蝶?
-
-
飞书审批
-
审批 > 付款 > 发票
-
付款 , 对应 付款的会计凭证
-
借 预付款 - XXX ; 贷 现金类
-
预付款 - xxx : 建立台账页面,需要相应详情
-
-
收到发票
-
多维表格审批,填写发票号 <> 对应后台获取的发票号, 支持多张
-
借 XX费用 ; 贷 预付款 - XXX
-
-
发票未获取, 发票台账, 显示 待收发票? 需要进一步细化
-
发票获取, 对应 付款 + 原凭证
-
-
设计 - 会计科目
-
在发票台账设置, 哪个会计科目的哪个辅助核算, 借贷方, 对应 发票出具方 + 欠多少发票额 + 已给哪些发票 等
-
比如: 设置 预付账款_ERP采购供应商 (ERP物流供应商,等等), 在凭证中,这个科目放, 借方, 就是对应的供应商需要欠的发票 ; 在贷方, 就是对应供应商已给的发票
-
2026604 对公账户余额数据
-
https://open.spdb.com.cn/develop/
-
台账: 查询账明细流水
-
采购: 付款关联
-
发票: 进项发票关联付款单
202605 采购模块扩展改进
-
支付方式/支付账户/卡 :
-
现金类型, 还是贷记,赊账支付类型
-
对应 会计科目 绑定关系.
-
-
跨境直采问题
-
1688先采后付
-
使用跨境直采, 批量还款时,
-
跨境直采的服务费
-
分摊问题.
-
实际金额是多少的问题 (连连下载的明细是1688订单总的金额,不按SKU细分 ; ERP登记的是按SKU细分)
-
-
20260612 系统优化需求
-
查凭证
-
数值格式化,千分位2小数点
-
凭证字号,摘要, 支持模糊查询
-
支持 凭证备注 模糊查询
-
制单人, 选项查询
-
来源模块 (手工录入, 结账-模板类型 , ... )
-
支持, 显示原币: 币列,汇率,原币借方(贷方)金额
-
凭证可自主选择显示相应的科目
-
支持 会计科目 输入搜索, 模糊输入+返回选项+选择选项搜索.
-
会计科目,名称全局统一, 所有地方都要如此显示, 其它模块亦如此
-
编码 一级名称_二级名称_三级名称, 示例: 10120201 其他货币资金_第三方平台-连连_加元户
-
-
-
凭证日期/凭证字号排序:两者都需要排序按钮
-
-
明细账:
-
数值格式化,千分位2小数点 ;
-
不需要: 凭证编号 摘要 的搜索 (业务逻辑不存在需要这个搜索)
-
支持 会计科目 输入搜索, 模糊输入+返回选项+选择选项搜索.
-
支持选择 显示/不显示原币相关列 : 币列,汇率,原币借方(贷方)金额
-
凭证创建时间不需要, (此页面是报表的类型, 非报表相关的列,编辑/审核/操作流程相关的列此处没有参考意义)
-
-
科目余额表
-
科目编码+科目名称 的搜索 改为 支持 会计科目 输入搜索
-
科目的折叠展开,hover,提高触发范围 (现在范围太小,鼠标很难点中)
-
不需要 科目级别, 科目类别 列
-
支持外币:
-
提供币位单选项,默认是 本位币(XXX)
-
选择了其它非本位币,
-
二级表头 借方, 贷方 , 各自改为 借方(原币/本位币), 贷方(原币/本位币)
-
可以在 原来本位币的单元格, 加高行高, 分开写两行. 上行原币金额, 下行本位币金额. 或者再做其它设计. 避免整个表格列太宽,不好阅读.
-
-
-
报表项目
-
这几个菜单/页面名称, 都需要按会计统一的名称, XXX表, 不是XX报告
-
平衡/不平衡提示:
-
利润表
-
数据: 没有按 报表模板 设定的公式, 相应计算各项目金额. 成本全部都没有
-
设计: 支持 月度,季度,年度
-
新增列: 本年累计金额
-
模板设置: 项目名称, 要与金蝶的项目名称完全一致.
-
-
资产负债表
-
数据问题
-
模板设置: 项目名称等问题
-
本期金额,不需要, 这是发生额,不符合报表要以核算余额为目标的逻辑.
-
新增列: 期末余额, 年初余额. 对比可以按期末余额为基准对比
-
-
标准现金流量表
-
数据问题
-
模板设置: 项目名称, 要与金蝶的项目名称完全一致.
-
设计: 支持 月度,季度
-
本期金额, 这列后新增 , 本年累计金额
-
提供试算平衡结果. 平衡/不平衡的话,提供相关解释,具体数据
-
-
所有者权益变动报告
-
只需要支持年度
-
这个用处不大.可以以后深化.
-
-
-
结账
-
亚马逊月度模板
-
多维表格:
-
公户支付明细 / 第三方支付明细
-
需要改为支付时,按条输入. 将 应付登记 / 付款登记 分开.
-
-
-
会计科目-映射配置:加一个导入及导入模版
-
-
登记问题
-
所有凭证都没有按的设计科目来登记
-
-
公账回款等, 付的和回的,科目不对;
-
凭证日期, 对应业务日期;
-
摘要,简要明了.
-
-
凭证字号,对应主要业务统一规则
-
平台数据月度.主营收入支出
-
手工录入
-
飞书多维表格自动录入
-
三方平台代收代付,付款和划转, 对账单
-
进销存, 系统生成 (采购,月结对账单,入库,库存调整)
-
-
-
会计科目的命名问题
-
要符合这个系统显示的会计科目的逻辑, 不要用_下划线,会与系统的以_分隔不同级别的科目有冲突.
-
20260618 进销存模块梳理(采购模块,台账)
-
前端页面: 账簿 > 配置 > 进销存配置
-
在账簿的模块下, 每个账簿独立单独配置
-
会计版本的进销存, 启用与禁用
-
启用后数据转为使用新版的 采购单(会计版)
-
包括生成的采购单等等
-
暂不考虑增值税退税/抵扣的问题.基于 出口不退税/无国内销售/无销项发票的情况
-
-
采购账户配置
-
维护可用的采购账户及其属性
-
用于在"采购单(会计版)", 付款时选择采购账户以及生成相应的凭证
-
相应地启用该采购账户对应的"采购账户台账"
-
采购账户配置:
-
采购账户名称
-
账户类型: 分为"现金", "账期"
-
现金: 指在采购单付款时, 就实际发生扣款的账户.(采购同步另行操作或者API对接实现同步扣款)
-
账期: 指在采购单付款时, 没有实际发生扣款,产生了应付, 相当于采购的付款操作等于发起采购的请款. 在相应的采购账户台账里处理这个请款的实际支付.
-
-
账户关联:
-
将本采购账户, 与其它账簿(跨ERP,跨账簿)的采购账户进行关联 (需要 账户类型 完全一致)
-
关联后, 数据可以在本ERP账号的 采购台账 下查看关联的采购账户的明细数据.
-
-
支付费用类型: 该种采购账户, 能支付的费用类型. 在"采购单"里付款时,选择该采购账户, 能支持选择的费用类型
-
费用类型, 比如"货款", "包装费用" 等等, 由用户自定义,
-
每个 费用类型, 分为 "归属供应商款项" 和 "非供应商款项", 需要用户设置
-
只有"归属供应商款项" ,计入供应商相关的付款汇总.
-
-
采购单付款,各种费用类型,对应的借贷方科目:
-
指定采购单付款页面,相应生成的凭证的借贷方科目
-
每一笔付款明细, 对应一对借贷科目
-
需要支持,配置该采购账户支持的各种的"费用类型", 可以指定不同借贷方科目
-
-
采购账户台账付款借贷方科目:
-
只有"账期"类的账户类型,需要这个设置.
-
现金类(已完成实际支付)的不需要在"采购账户台账"有台账付款功能.
-
指定在"采购账户台账", 台账付款 操作时, 相应生成的凭证的借贷方科目
-
支持配置该"账期"类采购账户, 用以给它最终实际付款的现金类"采购账户"(已经创建的现金类采购账户, 可以配置多个)
-
配置该账期采购账户的对应支持的各个现金类"采购账户", 相应指定不同借贷方科目
-
-
采购账户退款设置
-
退款设置, 对应的 费用类型 + 对应的借贷科目
-
默认 借贷科目 为 已经设置好的费用类型,正常付款时的借贷科目, 相反方向
-
-
凭证字号规则
-
-
采购供应商台账配置
-
采购供应商台账发票, 指定会计科目
-
凭证字号规
-
-
库存配置
-
系统默认设定
-
单位存货成本核算方法设定: 仅支持 移动加权平均核心规则:每一笔入库就重新计算一次单价,出库用当前最新单价$$\text{新移动单价}=\frac{\text{当前结存金额}+\text{本次入库金额}}{\text{当前结存数量}+\text{本次入库数量}$$只有采购入库、盘盈入库、暂估入库才会改变移动加权单价;调拨、销售出库、领用出库不重新算单价每次出库:出库成本 = 出库数量 × 当前移动平均单价 库存货值实时自动更新+新的移动单价不影响既往的入库凭证库存商品会计科目的余额+后续出库等操作的凭证中按新的移动单价来计算库存金额
避免尾差. 库存余额不以 “单价 × 数量” 反算,始终加减滚动计算.(比如出库时: 先乘法算好出库成本, 再上一次的结余,减去出库成本)-
亚马逊FBA仓库核算方法设定: 按月汇总核算
-
亚马逊FBA仓库单位存货成本:
-
使用"移动加权平均法", 但因为是按月汇总核算, 只使用本地仓库发货到FBA仓库入库的金额进行更新单位存货成本, 对于FBA仓库内的盘盈等操作不更新单位存货成本核算
-
-
-
本地仓库调转相关的操作配置
-
采购入库配置
-
采购入库,指定会计科目.
-
为在"采购单(会计版)"页面里, 执行入库操作时, 相应生成的凭证(旧版本叫"收货")
-
凭证字号规则
-
-
调拔
-
盘点
-
-
本地仓库发往FBA海外仓的发货配置
-
-
其它设置
-
支持采购账户排序.优先顺序,第一为系统级别默认. 实际在采购单中的采购账户付款默认以该供应商上一次的输入状态为基准
-
-
-
配置示例,以安普纳的账簿为例
采购账户采购账户账户类型支付费用类型("归属供应商款项" 和 "非供应商款项")(退款 / 正常付款)采购单付款借方科目采购单付款贷方科目台账付款借方科目台账付款贷方科目公户现金现金货款运费其它费用货款运费/其它费用:借 预付账款-ERP采购供应商贷 银行存款-浦发银行(2384)跨境直采现金货款运费其它费用跨境直采手续费退款退款手续费货款运费/其它费用: 借 预付账款_ERP采购供应商跨境直采手续费: 借 财务费用_跨境直采退款/退款手续费:借 其他货币资金_连连国际等-跨境直采待结算_CNH贷 其他货币资金_连连国际等-跨境直采待结算_CNH退款:贷 预付账款_ERP采购供应商退款手续费贷 财务费用_跨境直采先采后付账期货款运费其它费用退款借 预付账款-ERP采购供应商退款:与正常流程相反设置(下同)贷 应付账款_1688先采后付退款:与正常流程相反设置(下同)借 应付账款_1688先采后付(跨境直采,还款时还需要有):借 财务费用_跨境直采跨境直采,还款时:贷 其他货币资金_连连国际等-跨境直采待结算_CNH公户现金,还款时:贷 银行存款-浦发银行(2384)公户请款即付账期货款运费其它费用退款借 预付账款-ERP采购供应商退款:贷 应付账款_公户请款即付退款:借 应付账款_公户请款即付公户现金,还款时:贷 银行存款-浦发银行(2384)公户请款月结账期货款运费其它费用退款借 预付账款-ERP采购供应商退款:贷 应付账款_公户请款月结退款:借 应付账款_公户请款月结公户现金,还款时:贷 银行存款-浦发银行(2384)第三方支付请款账期货款运费其它费用退款借 预付账款-ERP采购供应商退款:贷 应付账款_第三方支付请款退款:借 应付账款_第三方支付请款第三方支付:贷 其他货币资金_连连国际等-待结算_CNH采购账户修改时限XX 天*在采购单 付款/退款操作之后(并且在结账操作之前), 多少天之后,不可修改(20260707)这个设置目的是避免'结账'时间太靠后,导致采购单的容易被改动,导致数据汇总不一致.要对明细支持改删,主要考虑即时的错误操作.便于使用.采购供应商台账操作借方科目贷方科目发票入账贷 预付账款-ERP在途发票预付账款-ERP采购供应商采购入库配置操作借方科目贷方科目采购付款时借 在途库存_XX本地仓库贷 预付账款-ERP在途发票采购退款时预付账款-ERP在途发票在途库存_XX本地仓库入库借 库存商品_XX本地仓库贷 在途库存_XX本地仓库退货在途库存_XX本地仓库库存商品_XX本地仓库海外仓发货配置操作借方科目贷方科目发货处理_发货在途库存_XX国FBA仓库库存商品_XX本地仓库FBA承运商台账操作借方科目贷方科目*默认ERP物流承运商的款项支付对应的只有一个科目(公账), 所以不需要额外单独类似采购账户等的设计请款预付账款_ERP物流承运商应付账款_ERP物流承运商付款应付账款_ERP物流承运商银行存款_浦发银行(2384)发票入账销售费用_FBA承运商应付账款_ERP物流承运商*发票入账直接转为费用.不转入库存本地仓库台账FBA仓库台账账期采购账户的台账付款:即相当于 采购请款单/采购付款单/账期结算还款 的功能. 以上为暂时的以安普纳为基础的配置示例 其它科目基本相似, 银行存款-浦发银行(2384),公户的科目需要按公司实际设置 将公户相关的设置成三个: 1. 公户现金,用于在台账付款时调用,以及现金台账生成. 实际它不在采购单里接入API使用 2. 公户请款即付,用于当前采购单需要立即使用公账支付,采购走飞书审批的.后续则不需要使用飞书审批, 出纳在这个采购账户的台账下, 进行逐项支付 3. 公户请款月结, 用于需要使用公账,在月底支付的.与 请款即付区分开来,便于管理. 一个采购订单+SKU,对应一个账簿,一个供应商, 一份收款信息, 一种采购账户 可对应 多笔支付明细,多笔库存明细,多笔发票明细 账期采购账户,退款时, 不论台账付款是否退,在采购付款,都同样操作.实际差额也在台账付款页面处理. "归属供应商款项" 和 "非供应商款项"的费用类型,用于给采购账户会产生手续费的情况. 同时也能在供应商台账,区分供应商的实际已付款,核对发票应开票金额 20260622补充: 关于退款 原先计划, 采购账户的费用类型,用户自定义"退款"作为其中一种费用类型,指定其相应的借贷科目, 但是考虑到前端输入,退款的类型是输入正数还是负数? 会直接影响台账里的数据 所以改为,采购账户都有内定的退款设定, 需要用户单独设置退款的设置. 更新发票入库操作配置 更新入库配置 如此,采购账户的设置就包括 账户类型 账户关联 费用类型 费用类型的款项归属 费用类型的借贷科目 台账付款时,可用的现金类"采购账户" 采购账户的退款设置:可用的费用类型以及借贷科目设置 关于数据库数据模型 采购单,业务表, 需要保留.不能因为有新的会计凭证表就不要采购单 业务表 采购模块生成的会计凭证, 需要用到的辅助核算,尽量辅助核算另行建表. 在此处配置的会计科目大部份需要 采购单(采购单+数量+SKU) + 供应商 辅助核算 或者 发票 辅助核算 操作日志与审计追踪需要设计 当前的流程下: 各主要环节的凭证基础示例 (不抵扣/退税环境,不用设计待认证进项,不用进项转出等) A:支付采购订单时: 借 预付账款-ERP采购供应商, 贷 银行存款-浦发银行(2384) 其他货币资金_连连国际等-跨境直采待结算_CNH 应付账款_1688先采后付 应付账款_公户请款即付 等 B:同时 借 在途库存_XX本地仓库, 贷 预付账款-ERP在途发票 C:收到发票时: 借 预付账款-ERP在途发票, 贷 预付账款-ERP采购供应商 D:收到库存入库时: 借 库存商品_XX本地仓库, 贷 在途库存_XX本地仓库 ------ 涉及退款,退货时 R1:已付款+未入发票+未入库 >> 全额退或者部分退,款 在采购单页面,退款 上述A+B反向即可 R2 已付款+已入票+未入库 >> 全额退或者部分退,款+票 正常A+B反向 供应商开具红字数电票 相应做 发票做账冲销, C反向 (或主动通过电子税局向供应商发起红字发票开具推送) R3 已付款+未入票+已入库 >> 全额退或者部分退,款+货 反向 A+B , D R4 已付款+已入票+已入库 >> 全额退或者部分退,款+票+货 反向 A+B ,C, D R5 已付款+已入票+已入库 >> 全额退或者部分退,款+票, 不退货 反向 A+B ,C, D根据实际情况做.暂时系统不处理 (这种处理,会导致相应的采购订单+SKU,台账里是在途是负数,有挂账) (处理方式: 应该使用其它会计科目,来另做凭证比如: 借:在途库存_XX 本地仓库 贷:其他收益 / 营业外收入 / 采购折让冲主营业务成本(三选一)) 强制要求: 款+票,只要已付已入,必须一并退 20260626 补充 FBA承运商台账 的操作对应凭证生成规则 -
-
前端页面: 采购 > 采购单(会计版)
-
基于当前的采购单,进行设计
-
采购单获取的账簿里的数据(比如配置的采购账户), 按 采购单里的 SKU 对应账簿,进行匹配
-
采购单收货,退货等操作基本与之前版本一致.
-
采购付款页面
-
选择 采购账户
-
账簿关系,按SKU的账簿进行匹配
-
需要在页面里显示, 该采购订单当前SKU的账簿. 如果是多个账簿, 支持手动切换
-
1个订单+SKU , 只能选择一个账簿, 以及该账簿下一个采购账户(先按此SKU上一次的提交状态默认, 如无则按默认的采购账户)
-
选择的如果是现金类采购账户, 会显示其当前的余额
-
-
选择 供应商的收款信息 (1个订单只能一个收款信息, 先按 此供应商上一次的提交状态默认, 如无则按默认的供应商的收款信息)
-
费用明细,可有多条. 选择
-
费用类型 (与采购账户设置对应,默认第1个) + 金额
-
-
退款时:
-
在付款页面,相应的退款区域,
-
新增退款明细
-
选择已支付的付款明细, 匹配对应的采购账户的设置, 生成相应的凭证
-
退款金额, 统一输入正数.
-
-
(20260707) 付款/退款,操作明细, 修改/删除时限,参考采购账户'修改时限'和'结账'时间.
-
-
采购单状态, 有以下四个维度显示订单状态付款状态库存状态发票状态有效未付款未开票撤销付款中开票中部分付款(未完成)部分收货(未完成)部分开票超额付款(未完成)超额收货(未完成)超额开票付款完成收货完成开票完成部分付款(已完成)部分收货(已完成)超额付款(已完成)超额收货(已完成)退款中退货中冲销未入账发票异常付款完成(有退款)收货完成(有退货)开票完成(有冲销)"非供应商款项"的费用类型不计入;付款中,指的是使用账期采购账户支付,已到了台账中;付款完成, 包括使用现金类或台账支付完成的,金额一致.部分付款(已完成), 付款已完成但实付少;部分付款(已完成), 付款已完成但实付多;收货中"非供应商款项"的费用类型不计入发票异常:发票已冲销但未做账待根据API来进一步设计状态
-
-
前端页面: 其它旧的页面的相应调整
-
供应商管理:
-
增加支持维护供应商的收款账户, 包括公司名称,银行账号等. 用于在 采购付款 / 发票核对 等情况下调用
-
收款账户可多个,可设置默认.
-
收款账户的启用/停用状态管理(银行账户可能变更),不删除(只停用, 可查询)
-
-
产品管理
-
增加产品对应的账簿 (也就是公司)
-
可以初始化,按 店铺在售SKU等规则, 对所有SKU进行 SKU账簿初始化.
-
允许 非完整SKU 对应 多个账簿, 设置默认
-
-
-
前端页面: 账簿 > 台账 > 采购账户台账
-
支持跨账簿, 不跨ERP, 只有关联的采购账户可以跨ERP(并且只有主动起关联的ERP账号(包括其主子账号)能返回跨ERP数据)
-
基于"采购单(会计版)", 采购付款的操作生成的数据和凭证, 每笔订单明细生成一张凭证, 以保证供应商应付+发票核算需求.
-
筛选查询:
-
采购账户(ERP下跨账簿,多选) , 账簿(默认全部), 时间范围, 采购订单(或 1688订单,多行搜索,精确匹配)
-
付款状态(多选)+库存状态(多选)+发票状态(多选)
账簿采购账户采购订单SKU请款日期收款账号付款状态库存状态发票状态账簿(跨ERP时,显示对应的关联的ERP账号)采购订单 +同时显示, 1688订单(如果有)以在采购订单第一次开始付款的日期为准.不以采购订单生成日期.供应商 +该订单的收款账号(收款人+账号)除了状态信息,同时显示:订单金额,(订单的金额)请款金额,(采购单里付款明细,包括减去退款, 包括归属供应商和不归属供应商的金额)已付金额, (现金类采购账户的已付 + 台款付款里的已付, 包括归属供应商和不归属供应商的金额 )待付金额 , (请款 - 已付的差额)除了状态信息,同时显示:库存价值和数量,(采购单的价值和数量 , 采购单里付款明细,包括减去退款类型的, 只包括归属供应商的金额)已入库金额和数量, (收货入库的金额, 按供应商应付/应入库数量计算单价)待入库金额和数量 , (库存价值 - 已入库金额的差额)点击可以弹窗显示,该笔相应的明细:采购付款的明细,台账付款的明细, 以及对应的凭证字号 (时间,类型,金额等等)点击可以弹窗显示,该笔相应的明细汇总行汇总,四种金额的数值不须汇总不须汇总-
适用于存在大量数据的分页功能
-
支持列表最下面, 显示查询的全部数据的汇总: 订单金额,已付金额,待付金额
-
-
支持, 单独勾选/多选/全选, 操作: 台账付款 + 支持导出EXCEL数据
-
勾选时, 前端动态显示,所勾选的数据的汇总金额, 三个金额
-
-
支持, 对于"现金"类的采购账户,做"入账登记"功能
-
登记一笔入账, 无采购订单,SKU,收款账号等等信息. 只有入账. 用于核算该采购账户的余额.
-
不用涉及凭证等会计业务.
-
-
(20260707)支持, '结账'功能
-
结账后, 该日期以前的采购订单, 不可对原有的 付款退款等做操作(改删),只能新增操作,不能修改
-
-
支持 上述的表格页签 和 图表页签 和 采购账户统计 切换查询结果.
-
图表 页签, 显示日期X轴 + 四种付款状态的金额的数据 + 显示数据点的数值标签
-
采购账户统计 页签
-
按账簿划分出不同区域(查询返回的账簿), 显示账簿下的采购账户卡片, 卡片内显示账簿下的这个采购账户的 四种金额
-
对于现金类采购账户, 增加"余额"显示.
-
-
-
采购账户台账付款,功能页面
-
只有"账期"类的采购账户,才能使用
-
选择相应的采购订单,然后进行付款.
-
台账付款的页面和逻辑也要支持退款 (费用类型是属于退款的, 相应的明细,相应的凭证科目等)
-
操作流程:
-
在台账列表里勾选后,操作,跳转到采购账户台账付款页面, 自动带入,包括账簿,采购账户,付款订单列表,金额等,点击付款提交, 对应相关配置生成凭证.
-
输入: 下拉框,选择这些采购账户(账期类), 配置好的对应的支持的 现金类采购账户 进行实际支付,选择的都是现金类采购账户, 需要显示其当前的余额
-
台账付款明细输入: 下拉框,根据配置的现金类采购账户, 选择与其对应的支付费用类型,带默认值,
-
支持按照支付费用类型,增减台账支付明细.
-
台账付款明细输入: 台账付款金额, 默认为带入的应付金额(订单金额-已付金额) ,支持更改
-
账簿,采购账户,订单/SKU,供应商及其收款账户,不可更改
-
-
excel模版上传:
-
导出台账数据, 编辑整理后,上传生成"台账付款"数据
-
在模板中指定每条记录的,台账付款采购账户(现金类) + 费用类型 + 台账付款金额
-
支持Excel上传后的预览确认页面,展示即将执行的付款明细+校验信息,用户确认后再提交
-
-
校验:
-
一次台账付款,必须所有记录都同一个采购账户(可以是跨账簿的,关联的,同一个采购账户)
-
台账付款金额("归属供应商款项"的费用类型),与对应的台账付款绑定的记录(采购订单+SKU) 的汇总的应付金额,不一致时, 需要提示处理方法.
-
按台账付款 : 应付金额 比例分摊, 还是取消本次付款操作
-
关于分摊金额:
-
尾差处理规则:将差额摊到最后一条记录
-
单条记录金额上限校验:分摊后单条金额不应超过原应付金额
-
在提交后的预览, 提供分摊结果预览,让用户确认后再提交
-
-
-
-
-
-
-
前端页面: 账簿 > 台账 > 采购供应商台账
-
支持跨账簿, 不跨ERP
-
基于"采购单(会计版)", 采购付款的操作生成的数据和凭证.
-
筛选查询:
-
供应商(本账簿内,多选) , 账簿(默认全部), 时间范围, 采购订单(或 1688订单,多行搜索,精确匹配)
-
付款状态(多选)+库存状态(多选)+发票状态(多选)
-
账簿供应商采购订单SKU请款日期收款账号付款状态库存状态发票状态采购订单 +同时显示, 1688订单(如果有)以在采购订单第一次开始付款的日期为准.不以采购订单生成日期.该订单的收款账号(收款人+账号)除了状态信息,同时显:订单金额,(订单的金额)供应商应付额,(采购单里付款明细,包括减去退款类型的, 只包括归属供应商的金额)已付金额, (现金类采购账户的已付 + 台款付款里的已付, 只包括归属供应的金额 )待付金额 , (供应商应付额 - 已付的差额)除了状态信息,同时显示:库存价值和数量,(采购单的价值和数量 , 采购单里付款明细,包括减去退款类型的, 只包括归属供应商的金额)已入库金额和数量, (收货入库的金额, 按供应商应付/应入库数量计算单价)待入库金额和数量 , (库存价值 - 已入库金额的差额)除了状态信息,同时显示(不是"开票完成"的情况下):应开票金额,已开票金额,待开票金额点击可以弹窗显示,该笔相应的明细:采购付款的明细,台账付款的明细, 以及对应的凭证字号点击可以弹窗显示,该笔相应的明细点击可以弹窗显示,该笔相应的发票明细:汇总行汇总汇总汇总-
适用于存在大量数据的分页功能
-
支持导出EXCEL数据
-
支持列表最下面, 显示查询的全部数据的汇总: 应开票金额,已开票金额,待开票金额
-
支持, 单独勾选/多选/全选, 操作: 供应商台账发票入账+导出供应商发票数据
-
勾选时, 前端动态显示,所勾选的数据的汇总金额, 三个开票金额
-
-
支持 上述的表格页签 和 供应商统计 切换查询结果.
-
供应商统计 页签
-
表格显示, 按账簿汇总统计,关键的供应商的库存和发票金额, (汇总,无采购订单明细)
-
表头: 账簿 供应商 库存的三个金额和数量, 以及发票的三个金额
-
-
-
供应商台账发票入账,功能页面
-
选择相应的采购订单,然后进行付款.
-
操作流程:
-
在台账列表里勾选后,操作,跳转到台账发票入账页面, 自动带入,包括账簿,供应商,采购订单等,点击发票入账提交, 对应采购供应商台账发票指定的会计科目 (预付账款-ERP采购供应商)相关配置生成凭证.
-
输入: 下拉框,多选, 选择该账簿下所有的可用,未入账的发票,
-
模糊搜索, 发票号码 和 发票开票人
-
-
显示已选择的发票的信息列表和发票金额汇总
-
发票金额,不可填写.使用数据库的数据
-
账簿,采购账户,订单/SKU,供应商及其收款账户,不可更改
-
用户核对: 选择的发票 <> 选择的供应商台账明细, 提交做发票入账
-
-
excel模版上传:
-
导出台账数据, 编辑整理后,上传生成"台账付款"数据
-
在模板中指定每条记录的,数电发票号码 + 发票入账金额
-
校验:
-
一次台账发票入账,
-
其对应的台账明细, 必须所有记录都同一个供应商(不可以是跨账簿的)
-
所有发票对应的账簿必须统一是一个
-
填写的发票金额 = 发票上的金额 = 对应的台账明细的待开票金额. (EXCEL模版提交的需要汇总每条记录的发票入账金额)
-
-
对应多条台账明细时, 提示用户,需要将发票金额分摊到台账明细中. 直接按每条台账明细的待开票金额进行分摊.
-
-
采购供应商台账 主要用于管理采购过程中,供应商的发票,查询未开,入账,订单相应的发票情况.等等 先按账簿+供应商, 或供应商,导出其未开发票, 数据处理, 分出,相应的收款账号-账簿-待开票金额, 发给供应商确认,让其开票 收到供应商发票后,做发票入账, 使用之前下载的数据,处理后,上传,关联采购订单做发票入账. 少数情况,可能是单订单-单张发票的入账 使用发票API数据获取账簿公司下所有的发票, 来保证账簿-发票 对应关系 根据情况后续可以:增加开票提醒/催开票功能 前端按供应商生成未开票明细 > 对接飞书/企业微信 > 供应商+对应群 > 发送消息. 20260622 补充 更新四种金额的定义 更新库存状态 提供按供应商汇总小计统计 20260626补充 增加 '请款日期', 在表格中 -
-
-
-
前端页面: 账簿 > 台账 > FBA承运商台账
-
支持跨账簿, 不跨ERP
-
基于"货件处理", 发货处理_发货 的操作生成的数据.
-
筛选查询:
-
承运商(本ERP内,多选) , 账簿(默认全部), 时间范围,
-
付款状态(多选)+库存状态(多选)+发票状态(多选)
账簿承运商FBA ID站点发货日期收款账号付款状态货件状态发票状态以在发货处理点击发货的日期为准.不以采货件的生成日期.该订单的收款账号(收款人+账号)汇总行汇总汇总汇总 -
-
操作
-
支持导出EXCEL数据
-
请款
-
(20260707)支持, '结账'功能
-
结账后, 该日期以前的发货订单, 不可对原有的 运费等做操作(改删),只能新增操作,不能修改
-
20260626 FBA承运商台账 主要用于管理在FBA货件发货后, 对物流承运商的货件,对账,付款,凭证, 发票等操作 对账:暂拟流程 从发货处理模块发货后,不产生凭证; 在台账处,确认哪些货件可以付款,请款操作,产生凭证(付款,在途等) 需要支持单个货件,多条明细,付款,退款,加付关税后续等的情况. -
-
-
前端页面: 账簿 > 台账 > 发票台账
-
支持跨账簿, 不跨ERP
-
台账API配置 + 同步任务详情(同步时间,失败,状态,条数等)
-
同步的是按账簿其下的所有发票, 进和销项等
-
-
页面包括: 进项发票台账 + 全部发票查询
-
进项发票台账: 筛选查询:
-
进项发票是指发票中的"购买方"与本账簿相同, 就归属于该账簿下的进项发票数据.
-
账簿(默认全部), 销方名称(模糊搜索查询,下拉结果选择) , 时间范围,
-
入账状态(多选)+发票状态(多选)
-
账簿发票号码开票日期销方名称价税合计总额入账状态发票状态数电发票号码(非数电发票时, 显示传统发票的代码+号码) , + 发票票种标识 (自行设计, 数电普票/专票等标识)开票人公司+税号价税合计总额 +不含税总金额 +总税额未入账已入账进项转出正常 / 作废 / 红冲(全额)/红冲(部分) / 失控 / 异常点击可以弹窗显示,已入账发票,相应入账的凭证明细:字号,凭证日期,等进项转出:预置.以后才需要.汇总行汇总三个金额-
进项发票台账 : 支持 上述的表格页签 和 图表页签 和 发票统计 切换查询结果.
-
图表页签, 显示日期X轴 + 三种金额的数据 + 显示数据点的数值标签
-
发票统计 页签
-
表格显示, 按账簿汇计统计,关键的发票信息
-
表头: 账簿 发票数量 发票三个金额 等
-
-
-
进项发票台账 : 操作
-
勾选发票 > 手工录入凭证(发票入账), 等等
-
手工发票 入账+冲销
-
自动匹配未入账发票 (后续,暂时不用)
-
-
全部发票查询:
-
按拉取的发票数据, 查询全部发票
-
支持将税务分类编码,对应查询前三层(前5位)的税务分类, 存储该税务分类数据(税务分类编码对应的税务分类, 映射关系, 可以做前端页面增改删+导入导出维护)
-
筛选: 账簿+数电发票号码+销售方+开票时间范围+税收分类+发票票种+发票状态+正数发票+风险等级 (实际根据发票数据既有的重要字段设计)
-
表格展示 + 图表展示
-
按查询结果, 分为进项+销项在各个税务分类, 的饼图, 比例+金额.及点击弹窗明细
-
价税合计金额的汇总
-
-
进项发票台账 发票一一对应, 状态, 凭证入账查询等问题 20260622 新增图表和发票统计显示查询结果 鉴于近期商务局的信息,行业后续可能支持成本分摊,A的发票a1可能可以用于B里核算成本.即a1可以入账到B,以后可能需要相应调整这种逻辑. 20260625 按当前税局导出的发票进一步设计, 进项和销项管理. 需要后续进一步设计关于统计分析的. -
-
前端页面: 账簿 > 台账 > 本地仓库台账
-
支持跨账簿, 不跨ERP
-
分为 汇总账 + 明细账
-
汇总账:
-
筛选查询:
-
账簿(多选), SKU(模糊匹配), 本地仓库(全部,多选),期间(按月汇总),
-
-
类似财务报表资产负债表一样, 提供勾稽校验的标识(校验期末库存与相应的会计科目余额, 可以点击标识 > 设置对应的会计科目, 对应其余额校验)
-
期间账簿SKU库位本期最新单位存货成本期初库存期间变动期末库存金额+数量金额+数量点击可查看本期的 日期/单位存货成本 变动图点击可查看明细汇总行-
明细账:
-
筛选查询: 账簿(多选), SKU(模糊匹配), 本地仓库(多选),操作时间(范围),库存操作(多选, 操作类型), 单据(输入,精确查询)
-
-
账簿SKU库位操作时间库存操作操作数量单据库存价值变动单位存货成本该操作对应使用的存货成本以相应的 正,负数显示.以相应的 正,负数显示.涉及采购/盘盈/暂估(其他)入库, 等会影响存货成本的操作时,点击弹窗, 显示, 操作前, 操作后的 单位存货成本点击列出相应的凭证明细列表汇总行汇总需要对应库存操作类型, 加,减计算-
-
操作
-
盘点
-
盘点会相应生成凭证.需要按进销存配置
-
-
20260623 (初稿, 需要进一步优化补充) 本地仓库台账 主要用于本地仓库, 明细,SKU数量和采购加权平均单价,移动加权平均, 盘点.等等 勾稽校验 -
-
前端页面: 账簿 > 台账 > FBA仓库台账
-
支持跨账簿, 不跨ERP
-
分为 汇总账 + 明细账
-
汇总账:
-
筛选查询:
-
账簿(与亚马逊店铺一一对应), SKU(模糊匹配), 仓库站点(全部,多选),期间(按月范围),
-
-
期间账簿SKU仓库站点完全按Summary view的FBA报表 来设计DispositionStarting Warehouse BalanceIn Transit Between WarehousesReceiptsCustomer ShipmentsCustomer ReturnsVendor ReturnsWarehouse Transfer In/OutFoundLostDamagedDisposedOther EventsEnding Warehouse BalanceUnknown EventsLocationStore汇总行-
明细账:
-
筛选查询: 账簿(多选), SKU(模糊匹配), 本地仓库(多选),操作时间(范围),库存操作(多选, 操作类型), 单据(输入,精确查询)
-
-
操作时间账簿SKU仓库站点按Detailed view的FBA报表 来设计Event TypeReference IDQuantityFulfillment CenterDispositionReasonCountryReconciled QuantityUnreconciled QuantityDate and TimeStore汇总行-
-
操作
-
20260623 FBA仓库台账 主要用基于亚马逊的库存台账报表生成, 相应汇总核算 盘点,入库,出库等等 勾稽校验 -
税务审查便利性功能
-
款项代收及划转服务
-
台账
-
外方账单 + 连连月单
-
-
无票成本和有票成本
-
利润表外加 成本统计
-
统计无票成本 + 有票成本 , 明细.
-
-
发票台账
-
支持 部分入账. 每张发票入到不同账簿
-
-
关务
-
出口台账
-
账簿 下 报关单 角度 和 FBA货件角度
-
FBA货件/海外仓货件 <> 报关单 (报关单拆分对应,金额,项目,数量)
-
-
-
海关申报
-
跨境电商报关模式
-
传统报关单模式: H2018,单一窗口标准版,货物申报,出口整合申报
-
订单 + 运单 + 报关单
-
-
清单模式: 跨境电商出口统一版, 单一窗口/客户端等,跨境电商,订单/清单
-
订单 + 运单 + 清单
-
-
-
ERP
-
单票, 出口报关申报 , 国外进口清关
-
HSCODE , api数据接口.
-
查询 , 返回提醒如何填写
-
告警 , hscode有进出口管控
-
-
-
20260707
-
拼单出口
-
同一目的国, 跨账簿/跨店铺, 多选FBA ID, 选定一个出口公司, 推9810订单
-
报关单台账, 支持, 将拼单的一张报关单, 里的明细/金额, 对应不同的店铺公司
-
支持代理出口协议 数据
-
支持所得税,自营/代理出口等申报数据
-
-
考虑: 使用一家,或者轮换多家, 当天同目的地拼成一张报关单出口
-
后续 代理出口协议/申报数据等做溯源
-
-