职责:业务费用单(多态)、个人报销、开票资料(多态)、采购/销售发票、请款付款。
边界:简易销售单见订单;账期对账导出见数据分析;不写存货成本层(规则 17)。
对照:13 #7 #8;采购财务看板见 05。
报销 ≠ 业务费用单:报销是个人/编制费用报销;费用单是装卸/运费等挂在采销上的经营费用,可正可负、可分摊。
表:expense_categories
| 字段 | 说明 |
|---|---|
| id | 主键 |
| parent_id | 大类为空,小类挂大类 |
| name | 名称 |
| status | 启用 / 停用 |
| sort | 排序 |
| deleted_at | 软删除,可空 |
业务费用与报销共用分类树。费用单常用:装卸费、人工、运费、耗材、场地等。单据禁止自由写分类名。
表:expenses;expense_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_claims;claim_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 | 注册地址 / 电话,可空 |
| 数电票接收邮箱,可空 | |
| is_default | 同一属主至多一条为 true |
| status | 启用 / 停用 |
| remark | 可空 |
| created_at / updated_at / deleted_at | 时间戳;软删除 |
(profileable_type, profileable_id);应用层保证同一属主至多一条 is_default=true。bank_* 是货款收款户,开票资料是税务四要素。Customer / Supplier(及后续扩展模型)morphMany('invoiceProfiles');InvoiceProfile morphTo('profileable')。
表:invoices;invoice_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 | rejected;rejected 可改后再提。
财务审「是否可用」;采购单财务页展示关联已通过发票金额及 purchases.invoice_complete。
invoice_orders| 字段 | 说明 |
|---|---|
| invoice_id | 发票 |
| order_id | 销售单 |
| amount | 可空 |
谁开:财务。
状态:draft → issued(V1 财务直接开具即可;若需复核可用 pending → issued)。
表:payment_requests;request_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。
expenses MorphMany 挂采购/销售;金额可负;采购按重分摊公式固定。invoice_profiles MorphMany 挂客户/供应商;同一属主可多条、至多一条默认。| V1(P0) | 延后 |
|---|---|
| 费用单、开票资料多态、两类发票、请款、报销 | 费用进存货成本、请款硬拦截策略产品化、回款账期强闭环 |