一、痛点在"票"上:货走了,单证还在追
外贸这一行的交付物有两份:一份是货,一份是单据。货交给货代就算出门了,单据要走的路却比货长——合同、商业发票、装箱单、报关单、放行通知、提单、原产地证,视业务情况还有保险单、检验证书、许可证件。每一份都有自己的出具方、自己的取得时间、自己的有效口径。
这套东西在一票两票的时候靠人脑撑得住,量一上来就撑不住了:
- 缺哪份没人算得清。 一票出完,回头发现少一份原产地证,客户清不了关,只能补寄或补办,钱和信誉一起受损。而"这票到底该有哪些单证"这件事,通常只存在于老业务员的经验里。
- 卡在哪个环节看不出来。 报关报了没有、有没有放行、什么时候提的货、提单拿到了没、外汇到了没——信息散在微信群、货代邮件、手机相册、以及某个人脑子里。老板问一句"这票到什么程度了",要打三通电话。
- 取得时间记不准。 提单日、放行日、开船日这些日子后面都要用到(算结汇、算退税、对账、算滞港责任),当时随手写在纸上,事后只能靠猜。
- 单证和钱对不上。 报关金额、发票金额、合同金额、收汇金额各记一处,年底一核,说不清差在哪。
- 换人就断档。 单证员一休假,接手的人打开文件夹,看到几十个命名各异的 PDF,不知道哪份属于哪票。
这类需求的规模并不大。它不需要上重型外贸 ERP,只要四件事成立:该有哪些单证说得清、拿到了没有看得见、走到哪一步查得到、快到期的提前叫一声。这正是 AI 构建器能直接交付的模块形态:几张表、几组页面、几条自动化规则,PC 端管档案与审核,手机端查进度和补传扫描件。
二、底表怎么建:先定清"一票"是什么
贸易单证类台账最容易做废的地方,是把一票业务做成"一行大宽表":合同号、发票号、报关单号、提单号、放行日期、原产地证号全塞在同一行里。塞进去之后问题立刻出现——一票业务可能分批发运、可能分批报关,一张发票对多份提单,一份原产地证覆盖多个品名;大宽表只能记一个,第二个就没地方放了。
所以建模的第一件事,是把"业务"和"单证"分成两层,再往中间加一层"应有哪些单证"。具体是七个决定。
决定一:主表一票一行,业务编码设唯一约束
出口/进口业务主表(下文简称业务单):一行代表一票业务,记内部业务编号、贸易方向(出口/进口)、客户或供应商、贸易方式、成交方式、币别、合同金额、业务负责人、当前节点。
关键设计有三条:
- 内部业务编号设唯一约束。 实践中最常见的混乱是同一票业务在不同表里叫"SO2024-0815""客户单号 PO1234""货代托单号",统计永远对不齐。因此主表留两个字段:内部业务编号(唯一,本系统生成)与外部参考号(客户订单号、货代托单号,可多个,作检索字段)。先有内部编号、后得外部编号的场景不必合并成一个字段。
- 主表只记"这一票"的属性,不记任何单证号、不记已收汇金额、不记费用合计。理由在下面几条决定里逐个说明。
- 客户/供应商走引用而不是手录。 平台带引用引擎,客户、货代、报关行、供应商都可以从各自的档案表里选,选完带出名称与编码,避免同一个客户被录成三种写法。客户档案本身的建法可参考 客户管理:档案、跟进与商机的漏斗。
决定二:应取得单证清单管"应做",实际单证一律"一证一行"
这是整个模块的骨架,也是它区别于普通文件夹的地方。
单证要求模板表:一行 = 一种贸易方式或一种业务类型下,按规定该有哪些单证。字段:业务类型(出口/进口)、贸易方式、单证类型(合同、发票、装箱单、报关单、提单、原产地证、保险单、检验证书、许可证件……)、是否必需(必需/条件必需/可选)、条件说明(例如信用证结算才需要某些单据)、默认责任岗位。
这张表回答的是"这票应该有哪些单证"。有了它,"缺哪份"就变成一个可计算的问题,而不是靠老师傅回忆。
单证明细表:一行 = 一份实际取得的单证。字段:所属业务单、单证类型、单证编号、出具方、出具日期、取得日期、份数(正本/副本)、是否有扫描件、状态(未取得/办理中/已取得/已核销/已归档)、备注。
三条硬规矩:
- 一证一行,不合并。 同一票业务三份提单就是三行。合并成一行会让"这票到底出了几票提单"这个最基本的问题答不准,也会让后面按提单分批核算的活儿全部返工。
- 只增不改。 单证一行提交后不允许随意覆盖:换证、补发、作废都另起一行,原行标注状态并说明原因。台账能不能经得起事后翻查,就看这一条守不守。
- 编号与日期分开存。 单证编号是检索键,出具日期与取得日期是时效计算的依据,不要让填报人把"7月3日拿到提单"写进备注格。
决定三:节点状态集中定义,节点历史另起子表只增不改
报关、放行、提货、装船、到港、结汇这些环节,有两种做法:一是全塞进主表的一个"状态"字段反复覆盖;二是每一步留一条记录。第一种做法在"这票是什么时候放行的"这类问题上永远答不出来,因为旧值被新值顶掉了。
推荐做法是两件一起上:
- 主表存当前节点(一个状态字段,只表示现在在哪),选项走数据字典集中维护。字典的用法见 数据字典:管好下拉选项的统一口径。
- 节点记录子表记历史:一行一个节点动作,记节点名称、发生日期、经手人、凭据(回执号/通知文件名)、是否异常。只增不改,更正另起一行。
建议的节点集合(可按企业实际口径增删,不必照抄):
| 环节 | 节点取值(建议起点) |
|---|---|
| 报关前 | 备单中 / 待报关 / 已申报 |
| 通关 | 已放行 / 查验中 / 退单待改 |
| 物流 | 已装船(已发运) / 在途 / 已到港 / 已提货 |
| 结算 | 单证已寄出 / 待收汇 / 已收汇 / 已核销 |
状态一次定死很重要。今天叫"待报关"、明天叫"未报关"、后天叫"报关中",任何按状态的统计都会筛不干净。### 决定四:金额只在合同层记一次,费用与收汇各拆子表
金额是最容易记重复的地方。一票业务的金额应该只在一个地方出现:合同层(主表上的合同金额,或一张独立的合同/价格子表,一版本一行)。原因很简单——如果把费用金额也塞进业务主表,那这张行就同时承担了"业务概括"和"费用流水"两个职责,任何一边更新都会污染另一边的统计。
两个下游子表:
费用明细表:一行一笔实际发生的费用(报关费、港杂费、拖车费、货代操作费、保险费、检验费),记费用类型、发生方、金额、币别、计费依据、已付/未付。这样"这票的成本是多少"是加出来的,而不是抄出来的。
收汇记录表:一行一笔到账(水单号、到账日期、币别、金额、对应业务单、核销状态)。分批收汇、部分预付的场景,多行加起来才是这票已收多少。
主表上不设"已收汇金额"字段,避免它和收汇记录互相打架;要看比例就用汇总视图算,不落成手填字段。
决定五:所有"临期"变成明确的日期字段,而不是备注
单证上有两类时间:一类是已发生的日期(出具日、取得日、放行日),一类是未来要盯的期限(提单日之后要办的事、信用证效期、许可证件有效期、退税申报窗口)。第二类必须落成日期字段,才能被定时任务读出来。
建议在每个需要盯期限的地方都留一个 "应办日期"字段,具体天数不写死在系统里,而是由企业的单证作业标准或属地主管部门、银行的要求决定——把它作为可配置的参数(比如"提前提醒天数")集中放在一处,改口径只改一处。
决定六:扫描件挂在单证明细行,不挂在业务主表
附件挂错地方,是单证系统的第二大坑。挂在主表上,几十个 PDF 全堆在一票业务下面,谁是谁分不清。
正确做法:每一行单证明细都可以上传自己的扫描件(平台的文件模块负责存储),文件跟着单证行走,编号、类型、取得日期天然对齐。节点记录子表里的回执、通知也能各挂自己的附件。这样任何一个文件都能反查"它属于哪一票、哪一份单证"。
决定七:查询字段预先想好,不靠事后加
外贸场景高频的检索条件有六个:按客户、按业务编号、按单证类型、按当前节点、按负责人在办、按临期/超期。这几项在建模时就要作为列表页的筛选条件与排序字段存在,不要等用了一个月再回头改表。列表页支持筛选、排序、导出,是这类台账能不能真正被用起来的分水岭——纸质台账失效的根本原因,往往不是录入麻烦,而是"查不出来"。
三、页面怎么用:五个角色,五套视角
同一批数据,五类人关心的东西完全不同。做成一个"所有人看同一张大表"的页面,结果就是谁都不爱用。建议按角色拆视图,权限按角色配置(配置方法见 角色与权限配置:从内置角色到自定义授权)。
单证员的主场:待办与缺件。
第一屏不是列表而是"要办的事":今天该取得但还没取得的单证、已超期未办的、被退单待改的。点进去直接是单证明细表,一行一份单证,就地补编号、补日期、传扫描件。这是使用频率最高的页面,设计目标只有一个——打开就知道现在该打哪个电话。
关务/报关岗:按节点推进。
视图以业务单为单位,突出当前节点与下一动作,节点记录子表在旁边可展开。报关回执、放行通知作为节点凭据挂进去,一个动作一条记录,不写自由文本备注。
业务/销售:一票一页的进度条。
业务员最需要的是"客户问起来我能答"。业务单详情页把节点记录按时间线铺开:已申报、已放行、已装船、预计到港、单证寄出与否。手机端可查,见下一节。
财务:收汇与费用两条线。
收汇记录列表按业务单归集,标注未核销、部分核销;费用明细按业务单汇总,看已付未付。这两块数据不由财务录入全量,但必须由财务确认口径。
主管/老板:例外看板。
只看三类数:在办票数、临期与超期单证数、单证齐全率(分母是"应有单证",分子是"已取得")。不列明细,看到异常点进去。## 四、四条自动化:把"追单"从人变成系统
台账只是把数据存下来,真正省人力的是规则。平台自带数据流规则、定时任务、工作流与审计日志四类能力,用在这类模块上有四个典型落点。
第一类,保存时自动校验与带出(数据流规则)。
- 新建业务单时,按"贸易方式 + 业务类型"自动生成应取得单证清单的初始行,状态为"未取得"。人不用再逐条回忆该有哪些单证。
- 单证明细保存时校验:单证编号必填、取得日期不得早于出具日期、同一票业务同一单证类型的必需项不允许重复占号。
- 节点推进时校验前置条件:未标记"已放行"却要推进到"已装船",系统拦一下并提示补录,避免节点跳着走。
第二类,临期与超期提醒(定时任务)。
定时任务每天扫一遍:应取得但没有取得的单证、已到应办日期尚未办结的事项、许可证件临近有效期、收汇长期未核销。命中的按责任岗位生成通知,推给对应的人,不用谁去翻表。定时任务的配置方式见 工作流与定时任务:让重复性工作自动跑。提醒提前多少天是企业自己的口径,做成可配置参数,不要写死在规则里。
第三类,需要留意见的环节走审批(工作流)。
并不是所有环节都要审批,但有三类值得卡一道:特殊放行(单证不全但业务要求先放货,必须有批准人和理由)、费用减免或调整、单证作废/换证。这几类一旦发生,事后都需要说清"谁批的"。审批流的搭法见 审批流落地:请假、报销与通用申请怎么在线化,思路一致:单据走到节点、节点上留意见、流转历史可查。
第四类,全程留痕(审计日志)。
单证状态变更、金额修改、附件替换、审批意见都进操作审计日志,谁在什么时候改了什么一目了然。单证类台账的价值一半在内容,一半在可追溯性上,这一层不能省。审计日志的查看与筛选方式见 AI 监控与审计日志:看清平台里发生了什么。
五、移动端怎么配合:不是把 PC 页缩小,而是切走三个动作
单证员的电脑是主战场,手机补的是"人不在工位"的缺口。移动端在平台上不是另做一套,PC 建好的模块会同步出配套的移动页面(说明见 移动端使用指南:工作台、模块页与手机上的 AI 构建)。针对这类台账,真正值得在手机上用的是三件事:
- 查进度。 客户或老板在走廊里问"那票放行了没有",打开手机按业务编号或客户名搜到业务单,节点时间线一眼看完,不用回工位。
- 补传扫描件。 从货代手上刚拿到盖章单据,用手机拍照上传到对应单证行。这一步的关键是从单证行进入上传,而不是进相册随手存——文件必须挂到具体那一行上。
- 收提醒做处置。 临期提醒推到手机上,点开就是那条单证,就地补录或标记办理中,不用先打开电脑再找。
反过来,有三件事不建议放在手机上:批量建单、费用金额的录入核对、审批意见的正式签署。这些动作需要看全局和对照,屏幕小反而容易出错。手机端能拍照上传,但识别单据内容、自动填写编号不在平台当前能力内,拍照上传后仍需人工核对与录入——这个边界要在上线前和使用者说清楚,否则预期落空。
数据是同一套:手机上改的、PC 上看的,是同一个库里的记录,不存在两边对不上的情况。这一点决定了它和"再发一张 Excel 让大家填"的本质区别。## 六、上线前查什么
单证类模块做出来容易,做出来能用不容易。上线前建议按这七条过一遍:
- 单证类型清单齐不齐。 把过去一年真实业务里出现过的单证类型翻出来对一遍,别只按标准贸易术语列。漏掉的类型补起来比重做表便宜。
- "应有哪些单证"的例外规则说清了没有。 同样是出口,信用证结算和电汇结算要求的单据不一样。模板表里的"条件必需"必须写清条件,否则会天天误报缺件,误报几次大家就不看提醒了。
- 主表有没有偷偷存单证号。 一旦有人为了方便在主表加了"提单号"字段,多提单的一票业务就又回到大宽表的老路。这一条要在验收时明确检查。
- 状态取值有没有同义词。 把各页面的下拉选项拉出来看一遍,"已放行""放行了""已通关"并存就是问题,回字典里统一。
- 存量数据怎么进来。 手上已有的台账通常是 Excel,按单证行整理好后可经 Excel 导入一次性起步(做法见 用 Excel 一步建模块:从表格到可用的业务系统)。历史扫描件不必逐份补挂,先把在办票挂全即可。
- 权限分对了没。 单证里含价格与客户信息,单证员、业务员、财务、主管能看能改的范围要分别配,敏感字段可以只读或不可见。
- 发布前走一遍预检。 平台的模块测试与发布流程会做一轮检查,菜单挂载、移动端同步、权限点都在这一步确认(说明见 模块的测试与发布:预检、挂载菜单与移动端同步)。
还有一条不算检查项但值得做:先跑一票真实业务。选一票在办的业务,从建单到结汇完整走一遍,比看十遍演示页有用。
七、之后怎么延伸
这个模块是外贸业务的主骨架,长起来很自然:
- 往前接询价与订单。 业务单可以由销售订单转入,报价、订单、单证三段连成一条线,销售侧的建法参考 销售管理:从报价到回款的订单全链路。
- 往后接发运与物流。 提货、装船、到港这些环节如果要跟车辆、承运商、运费结算打通,运输侧另有模块承接,见 运输管理:调度、在途与运费结算。
- 横向接合同台账。 收付节点、续签与到期提醒属于合同管理范畴,见 合同台账与到期预警:关键日期不再靠人记。两份台账的分工是:业务单管"这票怎么走",合同台账管"这份协议到什么时候"。
- 横向接应收应付。 收汇记录汇入财务的资金侧,《应收应付》那本账见 应收应付:老板最关心的一本账,业务台账怎么建。
"一项目一档、单据逐份登记"这个方法本身是通用的,招投标里登记保证金与投标文件是同一套逻辑,可对照 招投标台账:保证金交了多少、退回来了没。
八、不做什么:把边界先说清
这类方案最怕的是被理解成"什么都能自动"。上线前把这四条讲明白,比多做一个页面更重要:
- 不做与外部系统的直连。 本方案是内部台账与流程管理,不与海关、单一窗口、船公司、银行系统做数据对接,节点状态由人工凭回执录入。需要对接的,属另行评估的技术工作。
- 不做单据内容的自动识别。 扫描件上传后不会自动读出编号、金额或日期,也不做 OCR 提取与校验,录入仍是人工动作。平台上手机端能拍照上传,但识别填写不在当前能力内。
- 不做合规结论。 单证是否齐全、申报要素是否合规、退税能否通过,最终以海关、税务与属地主管部门的认定为准;系统只保证"该有的清单有据可查、缺的看得见、办的留了痕"。
- 不给时限承诺。 提醒提前几天、哪些单证优先办理,取决于企业自己的作业标准与银行、客户的约定,系统里做成可配置参数,随业务口径调整。
把这四条落在验收纪要里,后面用起来就不会有"说好的自动呢"这种落差。方案的目标是让单证这件事查得到、追得回、对得上,而不是替代关务专业判断。要把这套模块搭出来,可以看 AI 构建器 的构建方式:一次会话描述清楚上述表单与关系,先生成可用的初版,再按实际使用逐步调整。