CSV 流程地图模板(从订单到交付)
把 ERP 的订单导出文件变成一张端到端的流程地图:六个阶段列、五条泳道,一次信用挂起、一次分批发货、一个拣货差异循环、一次交付索赔,以及一张追到付清为止的发票。
生成此图的 CSV 文件
每行一个步骤。「连线至」列中的数字是行号——正是它画出了连线,也正是大多数文件缺少的那一列。
| # | 形状 | 方框文字 | 连线到 | 连线文字 | 横向泳道 | 纵向泳道 |
|---|---|---|---|---|---|---|
| 1 | Start | 客户发来采购订单 | 2 | 订单录入 | 客户 | |
| 2 | Process | 在 ERP 中录入订单行 | 3 | 订单录入 | 销售 | |
| 3 | Decision | 订单行与报价是否一致? | 6, 4 | 一致, 价格或数量有出入 | 订单录入 | 销售 |
| 4 | Decision | 客户是否接受修正后的订单行? | 6, 5 | 接受修正, 撤回订单 | 订单录入 | 客户 |
| 5 | Reject | 发货前订单已取消 | 订单录入 | 销售 | ||
| 6 | Process | 确认订单并回复交期 | 7 | 订单录入 | 销售 | |
| 7 | Process | 用账户余额对照信用额度 | 8 | 信用审核 | 财务 | |
| 8 | Decision | 订单是否在信用额度以内? | 11, 9 | 在额度以内, 超出额度 | 信用审核 | 财务 |
| 9 | Decision | 是否已收到预付款或已提额? | 11, 10 | 已解除, 两者都没有 | 信用审核 | 财务 |
| 10 | End | 订单因信用未通过而关闭 | 信用审核 | 财务 | ||
| 11 | Process | 将订单下达给仓库 | 12 | 信用审核 | 销售 | |
| 12 | Process | 为每条订单行分配库存 | 13 | 库存分配 | 仓库 | |
| 13 | Decision | 是否每条行都有货? | 15, 14 | 全部行已分配, 一条或多条缺货 | 库存分配 | 仓库 |
| 14 | Decision | 是否先发有货的行? | 15, 12 | 分批发货并生成缺货补单, 等齐整单再发 | 库存分配 | 销售 |
| 15 | Process | 按拣货单拣货并打包 | 16 | 拣货与打包 | 仓库 | |
| 16 | Decision | 打包数量与拣货单是否相符? | 18, 17 | 相符, 有差异 | 拣货与打包 | 仓库 |
| 17 | Process | 重新盘点并修正库存记录 | 15 | 拣货与打包 | 仓库 | |
| 18 | Process | 将货物交接给承运商 | 19 | 发运与在途 | 仓库 | |
| 19 | Process | 运输并记录签收凭证 | 20 | 发运与在途 | 承运商 | |
| 20 | Decision | 货物是否被全额签收? | 23, 21 | 全额签收, 破损或短少 | 发运与在途 | 客户 |
| 21 | Process | 提出索赔并开具贷项通知单 | 22 | 开票与结案 | 销售 | |
| 22 | End | 交付结案并已提出索赔 | 开票与结案 | 销售 | ||
| 23 | Process | 按实际交付的行开具发票 | 24 | 开票与结案 | 财务 | |
| 24 | Decision | 发票是否在到期日前付清? | 26, 25 | 已付款, 已逾期 | 开票与结案 | 财务 |
| 25 | Process | 催收逾期发票 | 24 | 开票与结案 | 财务 | |
| 26 | Success | 订单已交付且货款已收 | 开票与结案 | 财务 |
#,形状,方框文字,连线到,连线文字,横向泳道,纵向泳道
1,Start,客户发来采购订单,2,,订单录入,客户
2,Process,在 ERP 中录入订单行,3,,订单录入,销售
3,Decision,订单行与报价是否一致?,"6, 4","一致, 价格或数量有出入",订单录入,销售
4,Decision,客户是否接受修正后的订单行?,"6, 5","接受修正, 撤回订单",订单录入,客户
5,Reject,发货前订单已取消,,,订单录入,销售
6,Process,确认订单并回复交期,7,,订单录入,销售
7,Process,用账户余额对照信用额度,8,,信用审核,财务
8,Decision,订单是否在信用额度以内?,"11, 9","在额度以内, 超出额度",信用审核,财务
9,Decision,是否已收到预付款或已提额?,"11, 10","已解除, 两者都没有",信用审核,财务
10,End,订单因信用未通过而关闭,,,信用审核,财务
11,Process,将订单下达给仓库,12,,信用审核,销售
12,Process,为每条订单行分配库存,13,,库存分配,仓库
13,Decision,是否每条行都有货?,"15, 14","全部行已分配, 一条或多条缺货",库存分配,仓库
14,Decision,是否先发有货的行?,"15, 12","分批发货并生成缺货补单, 等齐整单再发",库存分配,销售
15,Process,按拣货单拣货并打包,16,,拣货与打包,仓库
16,Decision,打包数量与拣货单是否相符?,"18, 17","相符, 有差异",拣货与打包,仓库
17,Process,重新盘点并修正库存记录,15,,拣货与打包,仓库
18,Process,将货物交接给承运商,19,,发运与在途,仓库
19,Process,运输并记录签收凭证,20,,发运与在途,承运商
20,Decision,货物是否被全额签收?,"23, 21","全额签收, 破损或短少",发运与在途,客户
21,Process,提出索赔并开具贷项通知单,22,,开票与结案,销售
22,End,交付结案并已提出索赔,,,开票与结案,销售
23,Process,按实际交付的行开具发票,24,,开票与结案,财务
24,Decision,发票是否在到期日前付清?,"26, 25","已付款, 已逾期",开票与结案,财务
25,Process,催收逾期发票,24,,开票与结案,财务
26,Success,订单已交付且货款已收,,,开票与结案,财务运作方式
在打开任何编辑器之前,先用文本编辑器打开这份文件
CSV 是文本,所以先把它当文本看。在头两行上检查三件事:分隔符,在多数欧洲区域设置下它是分号而不是逗号,因为列表分隔符跟着区域设置走;表头行是不是真的就是第一行,因为很多导出文件会在前面加上报表标题和筛选条件;以及第一个列名前面有没有多余的字符,那正是某个环节没能剥掉的字节顺序标记的样子。把所有前言和底部的合计行删掉,另存为纯粹的 UTF-8。
把订单行收拢成流程步骤
导出文件是一行一条订单行。地图需要的是一行一个步骤,而两者毫无关系:五十行物料编码描述的是同一张订单经过同一个阶段。请改从单据号推出你的步骤——订单、信用挂起、发货单、发票、贷项通知单——因为其中每一个都是订单换手的一个时刻。如果你希望行级明细也出现在图上,就把它作为一个数量写进备注列。
重排连线到列,因为你的主键不是行号
连线到填的是某个步骤连向的行号,用逗号分隔;连线文字按同样的顺序填连线标签。你导出文件里的主键是单据号,把它们直接粘进去,画出来的图一条箭头都不会有——指向不存在的行的目标会被静默丢弃。请按步骤出现的顺序从 1 编到 n,再照着这些编号写目标。之后再插入一个步骤,会把它下面的每一个编号都推移,所以先导入,再在编辑器里加步骤。
阶段填横向泳道,角色填纵向泳道
正是这一列让它成为流程地图而不是流程图。横向泳道填订单录入、信用审核、库存分配、拣货与打包、发运与在途、开票与结案,或者你们自己的那六个阶段;纵向泳道填客户、销售、仓库、财务与承运商。导入匹配的是表头名称而不是列的位置,所以这两个表头摆在文件的任何位置都行,你没用上的列会被原样带过并忽略。
把你们的两个门槛写进判断里
“订单是否在信用额度以内?”和“是否先发有货的行?”是这条流程弯折的两个地方,而目前两者都靠临场判断。请说明信用检查衡量的是什么——包含未结发票的总敞口,还是只看这一张订单——并说明谁有权批准分批发货、以什么金额为界。一个没有写明门槛的判断,每个走到它面前的人给出的答案都不一样。
把承运商泳道改成你们真正使用的那一方
承运商泳道存在的意义,是让唯一一个不由你们楼里的人执行的步骤显形。请把它改成你们实际使用的承运商或第三方仓库;如果你们用自己的车辆送货,就把它并进仓库,而不要留下一条泳道,暗示存在一次其实并不发生的对外交接。客户泳道同理:请留着它,因为这条流程里大部分延误,实际上就发生在那两个客户判断上。
常见问题
流程地图和流程图有什么区别?
区别在阶段,以及阶段让你看见什么。流程图展示步骤的先后和其间的判断,只要每条路径都有归宿,它就是完整的。流程地图保留这一切,再加一根轴:每个步骤还归属于工作的某个阶段,于是图上能看出精力集中在哪里、工作在哪里换手。对从订单到交付来说这很要紧,因为延误几乎从来不在某个阶段内部,而在阶段之间——一张已下达却未分配的订单,或者已打包却未被提走的货。把一张订单画成流程图,你看到的是步骤;把这条流程画成地图,你看到的是它横跨四个团队,其中两次跨越根本没有明确的触发条件。
一份 ERP 订单导出文件里究竟有什么?
一行一条订单行,以及一组描述这条行、而不是描述流程的列。典型的有:订单号、行号、客户、物料编码与描述、订购数量与发货数量、价格、要求日期与确认日期、状态代码,以及在发货单或发票已存在时的相应单据号。日期按导出配置指定的格式以文本形式到来,这也是同一份文件在两个国家被读出两套日期的原因。长数字参考号值得留意:把 CSV 用电子表格打开再另存,前导零就没了,而足够长的订单号还可能变成科学计数法回来。这些都不能怪导出程序,但等文件到你手上时,它们全都已经在文件里了。
为什么我的 CSV 导入后落进了错误的列?
通常是分隔符或表头行。导入匹配的是表头名称,所以文件必须真的有一行表头,而且它得是第一行;一份以报表标题、运行日期和筛选条件开头的导出文件,表头在第四行。另一个常见原因是分号分隔的文件被当成逗号分隔来读,或者反过来,结果每一行都落进同一列。再往后要看引号:含有分隔符的字段必须用双引号包住,而引号内的双引号要写两次。一列地址里带了逗号、导出时又没加引号,只会让那一行右边的所有列整体错开一位。
导出文件可以不加编辑直接导入吗?
没什么用,原因也不在导入程序。QueryChart 读的列是形状、方框文字、连线到、连线文字、连线样式、横向泳道、纵向泳道、并行于、备注和链接,而没有任何 ERP 会导出这些。多余的列会被带过并忽略,所以物料编码和价格留在文件里没关系,但真正画出一张图的那两列——方框文字和连线到——必须由你来写。这里没有连接器,也没有导入向导:你把 .csv 拖到表格区域上,或者把 CSV 文本粘贴进去,得到的就是表头名称匹配上的那些内容。导出文件是事实的来源,不是图的来源。
地图应该画一张订单,还是整条流程?
画流程。一张订单是一个案例,而一个案例只会走一条路线,所以画它只会画出这张订单恰好走过的分支,避开的那些一个也不会出现。这也是上面那张图有九个判断和四个终点的原因:一张订单可能在录入时取消、在信用审核时被拒、带着索赔结案,或者交付并收款,而一条真实的流程必须承认这四种。请用你们的导出文件去弄清哪些分支承载着真实的量——多少张订单被信用挂起、多少张分批发货、多少张产生了贷项通知单——再把这些数量写进相应判断的备注列里。这才是这份数据诚实的用法:文件告诉你每条路线被走过多少次,地图告诉你路线有哪些。