财务

职责:业务费用单(多态)、个人报销、开票资料(多态)、采购/销售发票、请款付款。
边界:简易销售单见订单;账期对账导出见数据分析;不写存货成本层(规则 17)。
对照13 #7 #8;采购财务看板见 05

报销 ≠ 业务费用单:报销是个人/编制费用报销;费用单是装卸/运费等挂在采销上的经营费用,可正可负、可分摊。

费用分类

表:expense_categories

字段 说明
id 主键
parent_id 大类为空,小类挂大类
name 名称
status 启用 / 停用
sort 排序
deleted_at 软删除,可空

业务费用与报销共用分类树。费用单常用:装卸费、人工、运费、耗材、场地等。单据禁止自由写分类名。

业务费用单

表:expensesexpense_no 唯一。属主用 MorphMany(列在本表,不另建中间表)。

字段 说明
id 主键
expense_no 唯一
expenseable_type 属主表名:purchases / orders(可扩展)
expenseable_id 属主主键
customer_id 可空;挂销售时可限定渠道(空=整单)
category_id 费用小类
product_id 归属产品,可空
warehouse_id 可空
amount 可正可负
business_date 费用日
status draft / confirmed / cancelled
remark 可空
operator_id 操作人
source wecom / web / manual
created_at / updated_at / deleted_at 时间戳;软删除

Purchase / Order(及后续扩展模型)morphMany('expenses')Expense morphTo('expenseable')。一张属主可挂多条费用;一条费用只属一个属主。挂销售且需精确到渠道时填 customer_id

状态机draft → confirmed(计入盈亏汇总);draft → cancelled。已确认改金额:先作废/冲红新开(V1 可简单:仅 draft 可改,confirmed 只读;纠错开红字费用单 amount 取反)。

采购重量分摊(属主为采购时)

对费用单 amount,按该采购单明细重量比例分摊到行(展示 / 盈亏用,不写 stocks 成本):

行分摊额 = amount × (该行 weight_kg / 该采购全部明细 weight_kg 合计)

分母为 0 则均分到行(V1 固定)。

个人报销

表:expense_claimsclaim_no 唯一

字段 说明
id 主键
claim_no 唯一
user_id 报销人
product_id 归属产品
warehouse_id 可空
amount 合计
status draft / pending / approved / rejected / cancelled
source wecom / web / manual
created_at / updated_at / deleted_at 时间戳;软删除

明细 expense_claim_items

字段 说明
id 主键
expense_claim_id 报销单
occurred_on 费用日
category_id 费用小类
reason 事由
product_id / order_id 可空
amount 金额
attachment_path 凭证,可空

正式工/外编读 users.employment_type

审批 expense_approvals

字段 说明
id 主键
expense_claim_id 报销单
approver_id 审批人
action approve / reject
comment 意见
created_at 时间

状态机draft → pending → approved|rejected;可 cancelled。已批准计入期间费用,不改库存。

开票资料

抬头 / 税号 / 四要素,挂在客户、供应商等主数据上。不是 invoices 发票单据。

表:invoice_profiles。属主用 MorphMany(列在本表,不另建中间表)。一张属主可挂多条(连锁多法人、专票/普票各一套)。

字段 说明
id 主键
profileable_type 属主表名:customers / suppliers(可扩展)
profileable_id 属主主键
title 抬头
tax_no 纳税人识别号,可空(果农无票可空)
kind vat_special 专票 / vat_normal 普票
bank_name / bank_account / account_name 开户行 / 账号 / 开户名,可空
registered_address / registered_phone 注册地址 / 电话,可空
email 数电票接收邮箱,可空
is_default 同一属主至多一条为 true
status 启用 / 停用
remark 可空
created_at / updated_at / deleted_at 时间戳;软删除
  • 索引(profileable_type, profileable_id);应用层保证同一属主至多一条 is_default=true
  • V1 属主:客户、供应商。其它模型要抬头时直接 Morph,不改表。
  • 与请款账户分开:供应商 bank_* 是货款收款户,开票资料是税务四要素。

Customer / Supplier(及后续扩展模型)morphMany('invoiceProfiles')InvoiceProfile morphTo('profileable')

发票

表:invoicesinvoice_no 业务单号 唯一(税务票号另字段)。

字段 说明
id 主键
invoice_no 系统单号,唯一
tax_invoice_no 税务发票号,可空
type purchase 采购发票 / sales 销售发票
amount 开票金额
status 见下
issuer_id 提交/开具人
supplier_id 采购票可填供应商
customer_id 销售票可填客户
reviewed_at / reviewed_by / reject_reason 审核,可空
issued_at 开具日,可空
remark 可空
created_at / updated_at / deleted_at 时间戳;软删除

采购发票 ↔ 采购单 invoice_purchases

字段 说明
invoice_id 发票
purchase_id 采购单
amount 本单分摊开票额,可空(默认按比例或整单)

谁开:采购员。
状态draft → pending → approved | rejectedrejected 可改后再提。
财务审「是否可用」;采购单财务页展示关联已通过发票金额及 purchases.invoice_complete

销售发票 ↔ 销售单 invoice_orders

字段 说明
invoice_id 发票
order_id 销售单
amount 可空

谁开:财务。
状态draft → issued(V1 财务直接开具即可;若需复核可用 pending → issued)。

请款单

表:payment_requestsrequest_no 唯一

字段 说明
id 主键
request_no 唯一
type purchase / expense
product_id / warehouse_id 可空
payee_name / payee_bank_name / payee_bank_account / payee_account_name 收款信息
pay_method 如银行转账
amount 金额
title / summary 内容 / 摘要
purchase_id 采购请款可填
expense_claim_id 费用报销请款可填
pay_schedule 可空
status draft / pending / approved / paid / rejected / cancelled
requester_id / handler_id 请款人 / 经手人
paid_at 实付日,可空
created_at / updated_at / deleted_at 时间戳;软删除

状态机draft → pending → approved → paid;未付前可 rejected / cancelled

采购请款财务提示

关联 purchase_id 时,审批页展示采购财务看板指标(采销差、利润率 vs finance_thresholds、发票覆盖)。
默认 只提示、不阻断 批准;若配置硬校验再拒绝。

回款(轻量)

表:payments:客户回款,可挂 invoice_id / order_id;SoftDeletes。P0 可建表;强闭环与账期导出仍可 P1。

维护方式

  1. 业务费用:选分类 → 挂一条采购或销售(销售可填渠道)→ 确认;采购侧按重分摊展示。
  2. 报销:选分类 → 审批 → 可生成费用请款。
  3. 开票资料:在客户/供应商(等属主)上维护抬头税号;可多条,标一条默认。
  4. 采购发票:采购员挂多采购单 → 财务审;采购页看开票情况。
  5. 销售发票:财务挂多销售单 → 开具。
  6. 采购请款:看采销/利润/发票提示 → 审批 → 已付。

验收标准(P0)

  • [ ] expenses MorphMany 挂采购/销售;金额可负;采购按重分摊公式固定。
  • [ ] 报销与费用单分离;请款覆盖采购/报销。
  • [ ] invoice_profiles MorphMany 挂客户/供应商;同一属主可多条、至多一条默认。
  • [ ] 采购发票多对多 + 财务审驳;销售发票财务开 + 多销售单。
  • [ ] 采购请款页能看采销差/利润率/发票提示。

V1 / 延后

V1(P0) 延后
费用单、开票资料多态、两类发票、请款、报销 费用进存货成本、请款硬拦截策略产品化、回款账期强闭环