今天要做什么
按节拍跑账:动手前先在右上角账套切换器确认当前 book_id,每一笔凭证、应收应付查询、调汇都只看当前账套;切错账套直接混账,事后只能冲销。
每日
- 开工第一步:看右上角账套显示的币种与会计主体是否正确;错了先切回再动手。
- 进凭证列表按状态筛「草稿」,清掉昨日遗留:借贷不平的退回、平的复核过账。
- 进「待过账」看板看业务侧自动生成的凭证(发票落账、收付款、调汇),复核来源类型后过账。
- 录业务外手工凭证:费用分摊、预提、计提;手工凭证禁写系统管理科目(应收账款 / 应付账款 / 存货),服务端会直接拒绝。
- 看应收账龄新入「1-30 天」桶的客户,导 CSV 交销售催收。
- 看应付账龄「7 天内到期」的供应商,提示出纳准备付款。
/dashboard/accounting/journal-entries?status=draft、/dashboard/accounting/cashier、/dashboard/accounting/ar-aging、/dashboard/accounting/ap-aging。
每周
- 周一银行对账:导入上周银行流水,跑自动匹配,剩余手工配对。
- 周三出应收催收名单(余额 > 0 且发票状态为「已发送 / 部分收款 / 逾期」),发销售团队。
- 周五扫草稿凭证:「草稿」状态超 3 天未过账的催相关业务员或自行补过账。
每月
- 月 1–3 日:期末调汇——基于最新汇率重估外币应收应付,生成「调汇凭证」。
- 月 1–5 日:银行对账全部推进到「已完成」,差异(variance) = 0。
- 月 5–10 日:费用结转、预提凭证;预览损益结转 → 生成结转凭证到本年利润科目(code
313%)。 - 月 10 日后:上月会计期间从「开启」置「已关账」,封账防倒挂。
- 月末:导三大表至
/dashboard/accounting/reports,交财务经理复核。 - 年末:年度结转 + 建下年度 12 个期间。
权限红线(先看这 5 条)
- 动手前先看
book_id:每次建凭证、查应收应付、调汇、结账都只看当前账套;切错账套后录入的数据只能通过冲销纠正,不能简单改book_id。 - 已关账期间不可过账:凭证日期落在非「开启」状态的期间,系统直接拦截;要当期调整请用冲销到当期。
- 调整凭证必走审批:没有「跳过审批」开关;手工凭证禁写系统管理科目(应收账款 / 应付账款 / 存货),要改应收应付走业务单据入口。
- 已过账凭证不能删、不能改:只能走「冲销」生成反向凭证;已被冲销过的原凭证不可二次冲销。
- 付款 / 预算 / 期间审批权不在会计:执行付款是出纳领域(
/dashboard/accounting/payments),预算与期间强制关闭是财务经理领域;会计只负责「做账 + 复核」。
Quickstart — 日常核心任务
2.1 录入手工凭证
费用分摊、预提、计提、跨期调整等业务系统不会自动生成的凭证,由会计手工录入。
- 确认右上角账套显示正确后,点左侧导航「会计 → 凭证」进入凭证列表。(见图 ①)
- 右上角点「创建分录」打开录入弹窗。(见图 ②)
- 填录入日期;日期必须落在「开启」状态的会计期间内。
- 填整单描述;挑必要的附件(银行水单、审批截图)。
- 至少录两行:每行选科目、填借方或贷方金额(不能同时填)、可选行描述。
- 底部看「分录汇总」:借方合计、贷方合计、差额;差额不为 0 「创建」按钮置灰。
- 平衡后点「创建」落草稿——不自动过账,留待复核。
- 列表顶部出现新行,凭证号
JE-YYYY-NNNN前缀,状态徽标为「草稿」。 - 详情页「分录明细」Σ借方 = Σ贷方。
- 附件 Tab 显示已上传文件。
journal_entries.entry_number 自增;journal_entry_lines 每行含 debit_amount / credit_amount;status='draft';book_id 随当前账套;守卫入口 journal-entries.ts:164。
createJournalEntry、listAccounts、getBookCurrencyCode。
2.2 过账草稿凭证
业务系统生成的「草稿」凭证(发票、付款、调汇)或刚录完的手工凭证,复核无误后过账使之影响账簿。
- 凭证列表用「草稿」筛选凭证;优先处理日期最早的,防跨期积压。
- 点凭证号进详情页,逐行核对科目、金额、描述、附件。
- 核对「凭证来源」:发票 / 收付款 / 采购发票 / 手工 / 调汇,各对应不同业务来源。
- 无误后点「过账」;弹窗确认后系统翻转状态为「已过账」并写入账户流水。
- 发现问题先点「删除」(仅草稿可删)或退回给提单人修改,不要强过账。
- 详情页状态徽标变「已过账」,顶部显示过账人和过账时间。
- 对应科目在「科目明细账」出现一行新流水,运行余额按借贷方向变化。
- 应收应付账龄或银行科目余额同步变化。
journal_entries.status='posted'、posted_by、posted_at 填充;account_transactions 每行生成一条;reference_type 取值 invoice | payment | purchase_invoice | manual | fx_revaluation 等。
postJournalEntry、deleteJournalEntry(仅草稿)。
2.3 冲销已过账凭证
发现已过账凭证数据错误、或上月已封账需当期冲回时使用。冲销不是删除,而是生成反向凭证。
- 确认原凭证状态为「已过账」且未被冲销过;已冲销的原凭证不能二次冲销。
- 点凭证详情页「冲销」按钮。
- 弹窗填冲销日期——要落在当前「开启」期间;填冲销原因,后续审计用。
- 确认后系统自动生成新凭证,借贷与原凭证相反,来源类型标为「冲销」并立即过账。
- 原凭证标为「已反冲」,并在详情页显示「被冲销分录」链接。
- 原凭证状态徽标变「已反冲」,顶部出现「查看冲销分录」链接。
- 新凭证描述自动带 "Reversal of JE-…",状态「已过账」。
- 相关科目余额回到冲销前的状态。
journal_entries.status='reversed'、reversed_by_id=新凭证.id;新凭证 reference_type='reversal'、reverses_id=原凭证.id。
reverseJournalEntry(entryId, reversalDate, reason)。
2.4 应收账龄与客户对账
每周 / 每月初发给销售催收;客户发函对账前查客户余额明细。
- 进应收账龄页,顶部选截止日期,默认今日。(见图 ①)
- 查看 5 桶汇总:当期(未到期)、1-30、31-60、61-90、90+。
- 点任一客户行 drill-down,看该客户每张未结发票的应收余额、到期日、已收金额。
- 按需导 CSV 发销售团队催收。
- 客户要对账:进「客户对账单」按客户 + 区间导出 PDF 发邮件。(见图 ②)
book_id,合并得去财务经理端出合并报表;客户说余额不对时先看付款核销链(发票已收金额 vs 收款分配明细),别直接改应收余额。
- 页面顶部 5 桶金额合计 = 所有未结发票应收余额之和。
- 选中客户 drill-down 看到每张发票的应收余额、到期日。
- 对账单 PDF 列出区间内每笔发票和收款流水。
invoices.status IN ('sent','partial','overdue') AND balance_due > 0 AND book_id = :bookId;桶字段 current_amount, days_1_30, days_31_60, days_61_90, over_90, total_amount。
getARAgingReport、getCustomerAgingDetail、getCustomersWithOutstandingBalance、exportARAgingCSV、getCustomerStatementAction。
2.5 应付账龄与付款提示
月中给出纳 / 财务经理排付款安排,供应商对账发函前查余额。
- 进应付账龄页,顶部选截止日期。(见图 ①)
- 查看 5 桶汇总 + 「7 天内到期」提示金额,标记需出纳提前准备资金的供应商。
- 点供应商行 drill-down,看每张未结采购发票的到期日与金额。
- 按需导 CSV 转出纳,作为付款申请排期的依据。
- 页面 5 桶金额合计与「供应商列表」合计一致。
- 「7 天内到期」金额高亮。
- drill-down 行显示每张采购发票的应付余额、到期日。
purchase_invoices.status IN ('sent','partial','overdue') AND balance_due > 0 AND book_id = :bookId;dueSoonAmount = 7 日内到期合计。
getAPAgingReport、getSupplierAgingDetail、getSuppliersWithOutstandingBalance、exportAPAgingCSV。
2.6 银行对账
每周 / 每月银行流水到手后,把账面收付款和银行流水一一匹配,差异清零后完成并送复核。
- 进银行对账列表,选对应银行账户新建对账期间;填期初、期末银行方余额。(见图 ①)
- 导入银行流水(CSV / OFX),系统按规则 + 金额 + 日期自动配对。
- 进匹配工作台:左栏账面收付款,右栏银行流水;未匹配行手工配对,多对一 / 一对多也支持。
- 看 AI 建议面板,接受合理建议;疑似错配点「取消匹配」回到未匹配池。
- 差异项(variance)不为 0 时补录银行手续费、在途收款、在途付款;差异 = 0 才能推进到「已完成」。
- 状态推进到「已完成」后交财务经理审核,审核通过后置为「已审核」。
- 对账单顶部「匹配数」等于账面与银行侧全部流水条数。
- 「未匹配账面」= 0 且「未匹配银行」= 0。
- 余额一致性提示「已平衡」,差异 = 0。
- 匹配过的银行流水在列表显示已匹配标记。
bank_reconciliations.status in (draft, in_progress, completed, approved);matched_count / unmatched_book_count / unmatched_bank_count;bank_transactions.is_matched=true;isBalanced 标志。
importBankStatementAction、listUnmatchedBankTransactionsAction、autoMatchTransactionsAction、createMatchAction、unmatchAction、getAIMatchSuggestionsAction、updateReconciliationStatusAction、calculateReconciledBalanceAction。
2.7 付款核销(FIFO 建议)
出纳收到一笔款但未指定冲抵哪张发票,或多笔发票合并收款时,用 FIFO 建议分配到具体发票。
- 进「待过账」看板,定位该客户的未分配付款条目。
- 点「分配建议」——系统按客户未结发票到期日升序(FIFO 先进先出)给出分配比例。
- 客户指定了特定发票时手工覆盖:每张发票输入分配金额,合计不得超过付款总额。
- 确认后系统写入核销记录,相关发票「已收金额」增加、「应收余额」递减。
- 发票应收余额 = 0 时状态自动推进到「已付款」;部分核销到「部分收款」。
- 发票列表对应行「已收 / 合计」数字同步变化。
- 付款单详情「核销明细」出现每张发票的分配记录。
- 应收账龄 drill-down 里对应发票应收余额递减。
invoices.paid_amount 增长、balance_due = total - paid_amount 递减、status 推进 sent → partial → paid。
getPaymentAllocationSuggestions、allocatePayment。
2.8 月末汇兑损益调汇
月末重估外币应收应付余额,按最新汇率生成汇兑损益调汇凭证;生成的是一条特殊的「调汇凭证」,与普通凭证区分便于追溯。
- 先确认财务经理已把最新汇率导入——看页面顶部「最新汇率日期」与截止日一致。(见图 ①)
- 选截止日期(通常月末),点「预览未实现汇兑损益」。
- 核对应收 / 应付两侧每张外币发票按期末汇率重估后的差额:应收方正差 = 汇率对我方有利、应付方负差 = 本币欠款下降。
- 无误后点「生成调汇凭证」——系统自动建调汇凭证并过账。
- 下月再查「已实现汇兑损益」看核销时与调汇凭证的差额是否合理。
- 凭证列表多一条
JE-YYYY-NNNN,描述含 "FX Revaluation as of …"。 - 汇兑损益科目(汇兑收益 / 汇兑损失)余额变动。
- 应收 / 应付外币发票对应账面折本金额同步刷新。
journal_entries.reference_type='fx_revaluation';journal_entry_lines 含 original_currency / original_amount / exchange_rate;汇率源表 exchange_rates。
getLatestExchangeRateDate、getUnrealizedFXGainLoss、postFXRevaluationAction、getRealizedFXGainLoss、getFXGainLossSummary、getBaseCurrencyAction。
2.9 月末结账
每月 10 日前关上月:把损益科目余额结转到本年利润(code 313%),然后把期间状态置「已关闭」防倒挂。
- 前置条件自检:期间所有凭证都已过账、银行对账全部「已审核」、汇兑调汇已做。
- 进「会计期间」页,找到要关的期间行。(见图 ①)
- 点「预览结账」——弹窗列出每个损益科目的当期发生额和结转金额。
- 核对无误点「执行结账」——系统生成结转凭证并立即过账,结账状态变「已完成」。
- 再点同行「关账」——把会计期间状态置「已关账」,之后该期间不能新增凭证。
- 发现结错:先点「反冲结账」回到「已完成」前的状态,再重新预览。
- 期间行状态徽标变「已结账」然后「已关账」。
- 本年利润科目(code
313%)余额 = 当期净利润。 - 所有损益科目(收入 / 费用)当期余额归零。
- 凭证列表出现结转凭证,描述含 "Monthly closing for YYYY-MM"。
period_closings.status='completed'、closing_type='monthly';accounting_periods.status='closed';并发保护 updated_at 乐观锁。
getClosingPreviewAction、executeClosingAction、reverseClosingAction、updatePeriodStatusAction。
2.10 期初余额录入 / 账套启用
新建账套、年初启用、迁移历史数据时用;录完必须通过「试算平衡」检查再锁定。
- 前置:先建好会计年度和 12 个期间;会计科目表已初始化完成。
- 进「期初余额」页,按科目逐一录入借方或贷方金额。(见图 ①)
- 批量录入:支持 Excel 导入或批量表单,系统按科目匹配。
- 点「试算平衡」——系统检查 Σ借方 = Σ贷方,不平则报错并列出差额。
- 平衡后点「锁定」——锁定后期初余额只读,日常凭证才能按期初计算余额。
- 若后续发现期初错:先点「解锁」,改完重新试算平衡再锁定(会穿透影响已产生的业务凭证,慎重)。
- 页面顶部「试算平衡校验条」显示「已平衡」绿色徽标。
- 锁定后列表页变只读,字段灰置。
- 科目明细账中该科目「期初余额」行等于录入值。
opening_balances.is_locked=true;checkTrialBalanceAction 返回 balanced=true;会计年度表 fiscal_years。
getOpeningBalancesData、bulkSaveAction、checkTrialBalanceAction、lockOpeningBalancesAction、unlockOpeningBalancesAction、seedDefaultAccounts。
2.11 科目明细账与报表导出
月底对外出三大表(资产负债 / 利润 / 现金流),或按科目查运行余额用于对账差异排查。
- 进「科目明细账」,选总账科目 + 日期区间,看每笔流水和运行余额。(见图 ①)
- 异常余额 drill-down 到源凭证:点行上的凭证号跳
/dashboard/accounting/journal-entries/[id]。 - 三大表:进「报表」页按财务年度与期间导出资产负债、利润、现金流表。(见图 ②)
- 专项报表:利润分析按订单 / 客户 / 产品维度,用于财务经理决策。
- 坏账计提 / 出口退税也在会计账本下:按规则预览 → 生成专项凭证。
- 明细账运行余额列与每行凭证的借贷变动一致。
- 三大表导出 PDF / Excel 后有科目小计和合计。
- 利润分析按维度累计数 = 利润表同维度对应科目发生额。
account_transactions 含 running_balance;reports 路径按年度 / 期间聚合。
getAccountLedger、exportReport、getProfitAnalysisAction、calculateBadDebtAction、postBadDebtProvisionAction、createExportTaxClaimAction、submitExportTaxClaimAction、receiveExportTaxRefundAction。
上下游交接契约
会计坐在销售 / 采购 / 出纳 / 报销 / 财务经理的中间:上游业务单据触发自动草稿凭证,会计复核 + 过账;下游把过完账的账簿数据交给财务经理出报表。每一次传递缺字段都会在会计端卡住。
出纳 → 会计:收付款自动凭证
我做什么:出纳确认收款 / 执行付款后,系统自动生成「收款」或「付供应商款」的草稿凭证落库;会计进「待过账」看板复核科目、金额、银行账户无误后过账。
下游看到什么:过账后应收 / 应付余额、银行科目余额立即变化;付款核销后发票「已收金额」同步刷新,销售在订单看到「已收」数字增长。
缺失会回来找我:出纳漏填银行流水号或付款日期 → 凭证描述缺字段,月末对账对不上来回找;币种与订单不一致 → 外币应收需会计先改汇率再过账。
技术字段(给 IT/出纳交叉核对)
触发动作:confirmPaymentAction、executePaymentAction(出纳侧);postJournalEntry(会计侧过账);核销 allocatePayment。
必传字段:payments{amount, payment_date, payment_method, reference, parent_type, parent_id, book_id};自动凭证 journal_entries{reference_type, reference_id, book_id, entry_date}。
销售 → 会计:发票落账
我做什么:销售「从发货单创建发票」或提交增票申请后,系统自动生成「发票」草稿凭证(借应收账款、贷收入 / 税金);会计核对金额 / 税率 / 币种后过账。
下游看到什么:应收账龄马上显示该发票进入「当期」桶;过账后出纳能开始收款;财务经理在利润表看到收入入账。
缺失会回来找我:销售漏填税率 → 税金科目分录缺行,会计过账前要回退给销售补;币种与客户默认币种不一致 → 需会计在凭证上标注原币与折本金额。
技术字段(给 IT/销售交叉核对)
触发动作:createInvoiceFromDnAction、createVatInvoiceRequestAction(销售侧);会计 postJournalEntry 过草稿。
必传字段:invoices{total, currency, exchange_rate, issue_date, due_date, balance_due, book_id};journal_entries.reference_type='invoice'。
采购 → 会计:采购发票挂应付
我做什么:采购收货后录供应商发票,系统自动生成「采购发票」草稿凭证(借库存 / 费用、贷应付账款);会计核对存货科目、税金和金额后过账。
下游看到什么:应付账龄出现新余额;出纳收到供应商到期付款提示;库存科目余额上升(或费用类科目借方增加)。
缺失会回来找我:采购没关联收货单 → 存货入账无来源凭据,会计要回退补关联;发票币种与采购订单币种不同 → 需补汇率;税率错 → 进项税科目分录错需采购改或会计做手工调整。
技术字段(给 IT/采购交叉核对)
触发动作:receiveGoodsAction、createSupplierInvoice(采购侧);postJournalEntry(会计侧过账)。
必传字段:purchase_invoices{total, currency, exchange_rate, issue_date, due_date, book_id, goods_receipt_id?};journal_entries.reference_type='purchase_invoice'。
HR / 员工 → 会计:费用报销
我做什么:员工提交报销,逐级审批通过后会计在「费用报销」页点「批准 + 生成付款申请」——会计过账凭证(借费用、贷应付员工或代付账),同时开付款申请给出纳。
下游看到什么:出纳在付款申请队列看到新条目;员工的报销在「我的报销」里状态变「已审批 / 待付款」;费用科目余额当月累计。
缺失会回来找我:员工附件不全 → 会计不能过账需退回;报销期间落在已关账月 → 要员工改申请日期或走当期调整;科目映射缺失 → 联系财务经理补报销科目表配置。
技术字段(给 IT/HR 交叉核对)
触发动作:submitExpenseClaimAction(员工);会计 approveExpenseClaimAction + createFromExpenseClaimAction(转付款申请)。
必传字段:expense_claims{employee_id, amount, currency, expense_date, category, book_id, attachments[]}。
会计 → 财务经理:月结推报表
我做什么:月结完成后把三大表、应收应付账龄、利润分析、现金流预测导出交财务经理;坏账计提、出口退税也交上。
下游看到什么:财务经理在「报表」页看到当月已定稿数据;按客户 / 产品 / 订单维度做决策分析;启动下月预算与现金流规划。
缺失会回来找我:银行对账未完成 → 现金流预测不准;汇率未导入 → 外币折本不齐;期间未关账 → 报表口径可能后续变化,财务经理会要求重导。
技术字段(给 IT/财务经理交叉核对)
触发动作:exportReport、getProfitAnalysisAction、getCustomerStatementAction、postBadDebtProvisionAction、submitExportTaxClaimAction → receiveExportTaxRefundAction。
必传字段:period_closings.status='completed'、accounting_periods.status='closed'、bank_reconciliations.status='approved'。
异常回滚
会计的每个回滚动作都有前置条件(状态 / 期间 / 下游是否已动);别直接改 DB 字段,否则审计链断掉。
| 症状 | 做什么 | 前置条件 / 后果 |
|---|---|---|
| 草稿凭证录错 | 凭证详情点「删除」 | 仅「草稿」状态可删;已过账用「冲销」 |
| 已过账凭证错误 | 详情页点「冲销」,填冲销日期 + 原因 | 原凭证为「已过账」且未被冲销;冲销日期落「开启」期间 |
| 付款核销分错发票 | 重新走「分配建议」调整 | 发票未后续付款;跨月需走冲销再分配 |
| 已过账付款凭证要撤 | 联系出纳先撤付款 → 会计冲销对应凭证 | 发票状态需回到可撤状态;跨月必须做当期冲销凭证 |
| 银行对账错配一条 | 匹配工作台点「取消匹配」 | 对账单尚未「已审核」;取消后需重新配对 |
| 银行对账整期作废 | 列表行点「删除对账单」 | 仅非「已审核」可删;已审核需财务经理解锁 |
| 月结结错 / 结转漏科目 | 期间行点「反冲结账」,重新预览 + 执行 | 结账状态为「已完成」且未再执行年度结转;期间回到「开启」 |
| 期间误关账 | 期间行点「反关账」 | 需财务经理授权;并发冲突(乐观锁)要重拉再试 |
| 期初余额录错 | 先「解锁期初」→ 改 → 「批量保存」→ 再「锁定」 | 已有业务凭证时影响范围极大,需财务经理会签 |
| 调汇凭证错 | 对调汇凭证本身走「冲销」 | 针对调汇凭证 ID;冲销日期落「开启」期间 |
跨账套误录(切错 book_id) |
草稿:直接删 → 切回正确账套重录;已过账:冲销 → 切回补录 | 严禁改 book_id 字段;两步操作留全审计链 |
对应系统动作(IT 追溯)
deleteJournalEntry— 删草稿凭证,仅status='draft'reverseJournalEntry(entryId, reversalDate, reason)— 冲销已过账凭证,生成反向凭证并立即过账allocatePayment— 重新分配付款到发票(支持手工覆盖 FIFO 建议)unmatchAction— 取消银行对账的某条匹配,回到未匹配池deleteReconciliationAction— 作废整期对账单,仅status != 'approved'reverseClosingAction— 冲销月结 / 年结;期间回到openupdatePeriodStatusAction(id, 'open')— 重开误关闭的期间,需财务经理授权unlockOpeningBalancesAction→bulkSaveAction→lockOpeningBalancesAction— 期初余额修正流程
进阶功能
坏账计提
按账龄桶 + 客户信用等级配置计提比例;每月月末自动跑计算 → 生成 reference_type='bad_debt_provision' 凭证(借坏账费用、贷坏账准备)。财务经理每季度评审规则调整一次。
入口:/dashboard/accounting/bad-debt。系统动作:saveProvisionRulesAction、calculateBadDebtAction、postBadDebtProvisionAction。
出口退税
外贸发票按批次提交退税申请 → 税局退税到账后录入退税金额,系统自动生成对应凭证;申请 / 受理 / 到账三段状态。
入口:/dashboard/accounting/export-tax。系统动作:createExportTaxClaimAction(invoiceIds)、submitExportTaxClaimAction、receiveExportTaxRefundAction。
利润分析
按订单 / 客户 / 产品维度聚合收入 - 成本 = 毛利;输出给财务经理做定价和客户分级决策。月结完成后导出。
入口:/dashboard/accounting/profit-analysis。系统动作:getProfitAnalysisAction。
成本中心 / 部门核算
用于按部门 / 项目 / 产品线归集费用和收入——凭证行可打 project_id / cost-center 标签;月末出部门损益表时按此汇总。
入口:/dashboard/accounting/cost-centers。关联字段:journal_entry_lines.project_id。
现金流预测
结合应收应付账龄 + 付款里程碑 + 历史周期,预测未来 4 周 / 12 周现金净流入,支持乐观 / 中性 / 悲观情景;给财务经理做资金调度。
入口:/dashboard/accounting/cash-flow-forecast。
账套备份与下载
月结 / 年结完成后生成账套备份(含当前账套全部凭证、科目、期间、对账单快照),下载保存留档给审计。
入口:/dashboard/accounting/book-backup。系统动作:getBackupsData、createBackupAction。
科目表维护与新增
系统科目(is_system=true)不可删;自定义科目可加子科目但不能跨账户类型;删除有流水的科目被系统拦截。年度开账前统一清理一次。
入口:/dashboard/accounting/chart-of-accounts。系统动作:createAccount、updateAccount、deleteAccount、seedDefaultAccounts。
待过账看板(cashier 视角只读)
会计只读访问出纳的今日流水与待分配款,用于核对自动凭证的来源;不在此处执行付款。
入口:/dashboard/accounting/cashier。系统动作:getPendingItemsAction。
相关业务场景
会计参与 6 大跨角色场景中的 5 条,只有「采购付款流」的付款执行不参与;其他每条都以「复核 + 过账」身份介入。
- 标准成单流(询盘 → 报价 → 订单 → 发货 → 开票): 会计在发票环节入场——发票落账自动生成「发票」草稿凭证,复核金额 / 税率 / 币种后过账;月末看对应应收账龄。 → 场景详解
-
定制家具项目流:
会计按
project_id归集收入和成本,用于成本中心 / 项目损益分析;里程碑收款的凭证reference_id关联到订单。 → 场景详解 -
回款流:
出纳确认收款触发自动凭证;会计过账 + 核销付款到发票(FIFO 建议或手工),客户对账用
getCustomerStatementAction输出。 → 场景详解 - 采购付款流: 采购侧发票落账自动挂应付账款;出纳执行付款;会计只做「过账 + 对账」,不执行付款。 → 场景详解
- 月结流: 会计主角——清草稿、银行对账、调汇、损益结转、关账期间、出报表。 → 场景详解
- 报销审批流: 会计在末端——HR 审批通过后会计「批准 + 生成付款申请」,过账费用凭证 + 开付款申请给出纳。 → 场景详解
外部协作入口
/dashboard/accounting/reports— 三大表导出(资产负债 / 利润 / 现金流),月会交财务经理。/dashboard/accounting/profit-analysis— 订单 / 客户 / 产品利润分析。/dashboard/accounting/customer-statements— 客户对账单 PDF 导出。/dashboard/accounting/cash-flow-forecast— 现金流预测 + 情景分析。/dashboard/settings/exchange-rates— 汇率管理(财务经理维护,会计调汇前确认)。/dashboard/wecom— 企微推送(大额凭证待过账、月结完成通知)配置。/dashboard/manual— 系统内置使用手册。
权限与范围
看得到什么(RLS + book_id 边界)
- 当前
organization_id下且当前book_id下的全部journal_entries/accounts/account_transactions/accounting_periods/bank_reconciliations/opening_balances/period_closings。 - 切换账套(右上角 Book Switcher)后同一登录用户看到的凭证、应收应付账龄、报表会完全不同——数据按
book_id硬隔离。切换前后务必二次确认顶栏账套,跨账套误录只能通过「冲销 + 重录」修复,不可直接改book_id。 - 客户 / 供应商主数据组织可见;具体
invoices/purchase_invoices按book_id过滤。 - 付款执行(
/dashboard/accounting/payments)、付款申请(/dashboard/accounting/payment-requests)、预算(/dashboard/accounting/budgets)不在会计操作范围——只读或只看摘要。
核心概念
book_id账套隔离键:所有会计表主键之一;每个 service 调用前先getBookContext().bookId,未选定账套 service 直接err("No active book selected")。跨账套混账只能通过「冲销 + 重录」修复。organization_id:多租户隔离键;跨组织数据走 RLS,会计只看本组织本账套。- 期间开启 / 关闭:
accounting_periods.status ∈ {open, closed};关闭期间凭证日期落入直接拦截(isDateInOpenPeriod守卫)。 - 系统管理科目:
accounts_receivable/accounts_payable/inventory不允许手工凭证直接操作,必须走业务单据(发票 / 付款 / 收货)触发。 - 工作流引擎:凭证状态机
draft → posted、posted → reversed通过src/services/workflow-engine.ts,冲销凭证自动带回链reverses_id/reversed_by_id。 - 乐观锁:关键更新带
updated_at乐观锁(过账、结转、期间状态切换);并发冲突需刷新列表重试。
术语表
- 账套
book_id(accounting_books主键)- 凭证 journal entry
journal_entries.entry_number(JE-YYYY-NNNN)- 凭证行
journal_entry_lines(借贷双行:debit_amount/credit_amount)- 凭证状态 enum
draft | posted | reversed- 账户流水
account_transactions(含running_balance)- 科目 GL account
accounts{code, name, account_type, balance_type, is_system}- 科目类型 enum
asset | liability | equity | revenue | expense- 科目明细账 ledger
account-ledger.ts输出每科目按日期的运行余额- 过账 posting
postJournalEntry(draft → posted+ 生成account_transactions)- 冲销 reversal
reverseJournalEntry(生成反向凭证,reference_type='reversal')- 期间 period
accounting_periods{period_number, start_date, end_date, status}- 会计年度
fiscal_years(每年 12 个期间)- 期末结转
period_closings{closing_type, status, accounting_period_id}- 本年利润
- 科目 code
313%(月结结转目标) - AR 应收
accounts_receivable科目 +invoices.balance_due- AP 应付
accounts_payable科目 +purchase_invoices.balance_due- AR 账龄桶
current_amount,days_1_30,days_31_60,days_61_90,over_90,total_amount- 调汇 FX revaluation
reference_type='fx_revaluation'(postFXRevaluationAction生成)- 未实现 / 已实现汇差
getUnrealizedFXGainLoss/getRealizedFXGainLoss- 试算平衡
checkTrialBalanceAction(期初 Σdebit = Σcredit)- 银行对账
bank_reconciliations{opening_balance_book, closing_balance_bank, matched_count, outstanding_deposits, outstanding_checks, bank_charges}- 对账状态 enum
draft | in_progress | completed | approved- reference_type enum
invoice | purchase_invoice | credit_note | payment | supplier_payment | prepayment | manual | reversal | fx_revaluation | bank_reconciliation | bad_debt_provision | export_tax | refund | expense | delivery_note- 坏账计提
postBadDebtProvisionAction(按saveProvisionRulesAction规则)
常见问题
切错账套录了一堆凭证怎么办?
按状态分类:草稿直接在错账套里删,切回正确账套重录;已过账的必须在错账套里「冲销」生成反向凭证,再切回正确账套重录。严禁直接改 book_id 字段——会让 account_transactions 与凭证不一致,审计链断掉。
上月已关账发现漏记一笔凭证怎么处理?
别开上月期间。在当期日期录「调整凭证」,描述里注明「补 YYYY-MM 漏记事项」——这是 ASC 842 / ASBE 一致的期后调整做法;若金额重大,再做一笔冲销在本期调整回去并联系财务经理出披露。
手工凭证写应收账款被系统拒了,该怎么改?
应收账款 / 应付账款 / 存货是系统管理科目,手工凭证不能直接写。要改应收必须通过源业务单据:客户多付款走退款流程、错开发票走贷项通知单、收款分错走重新分配。若确需调整,让财务经理审批后由系统管理员执行特殊脚本,不走日常手工凭证。
结账预览显示损益结转金额不对,先做了执行结账怎么办?
点「反冲结账」——期间回到「开启」,结转凭证自动冲销;再查原因(通常是期间内还有「草稿」凭证未处理、或汇率未导入致调汇遗漏),修正后重新预览 + 执行。冲销过的结账再执行会复用同一期间标识。
银行对账差异查不清,能不能先 approved 下月再补?
不能。置为「已审核」后对账单锁定期末余额,下月以此为期初——差异带入下月会让每月都错。先把差异拆成在途收款、在途付款、银行手续费、未入账凭证四类逐一匹配,找不到再联系银行核查原始水单。
多账套同一客户对账合并看需要什么?
应收账龄 / 客户对账单查询强制绑当前 book_id,不提供跨账套合并视图——合并去找财务经理的「合并报表」入口。会计侧单账套看的是为了准确性,合并数据含内部往来需要消除抵消。
调汇凭证过完账后才发现汇率错了?
对调汇凭证走「冲销」生成反向凭证——调汇凭证的冲销规则与普通凭证一致;然后让财务经理改汇率,重新跑一遍调汇流程。
为什么我看不到别的会计的凭证?
RLS 按 organization_id 隔离同组织内会计互相可见;看不到通常是 book_id 不同(右上账套切错)或属于其他组织。确认账套后再查;仍看不到联系管理员检查 organization_members 状态。