CSV 流程地图模板(从订单到交付)
把 ERP 的订单导出文件变成一张端到端的流程地图:六个阶段列、五条泳道,一次信用挂起、一次分批发货、一个拣货差异循环、一次交付索赔,以及一张追到付清为止的发票。
什么是csv 流程地图模板(从订单到交付)流程
CSV 是从系统里出来的东西,而不是你工作的地方。从 SAP、NetSuite 或 Business Central 导出订单行,你拿到的是纯文本:一行列名,然后一行一条订单行,字段之间用分隔符隔开,字段本身含有该分隔符时用双引号包住。没有公式,没有第二张工作表,没有单元格颜色,也没有合并表头,因为这个格式根本没有地方安放它们。留下来的是系统存的那些东西——单据号、物料编码、数量、按导出配置渲染成文本的日期、状态代码。没能留下来的,是人后来加在上面的一切:那个表示已挂起的颜色、页边的批注、名叫“流程”的那个标签页。
那份导出文件回答的是每条订单行停在了哪里,它不回答这条行是怎么走到那里的,而一份状态清单也不可能被逼着回答,因为状态是落脚点,流程是落脚点之间的那些动作。读它也比看上去难:一份一千条订单行的导出文件,可能只是两百张订单,其中好几张出现了两次,因为一次分批发货以第二个单据号生成了缺货补单。文件里没有任何东西标明这两者是同一张订单,除了某一列参考号——而你得先知道要去看它。
流程地图就是答案,而它和流程图有一处差别在这里格外要紧:阶段。一张订单的流程图告诉你接下来发生什么。流程地图则把每个步骤放在这张订单所处的阶段之下,于是你能看见二十个步骤里有六个挤在同一个阶段,也能看见这张订单一路走过来换了四次手。在 QueryChart 的表格里,阶段填在横向泳道列,角色填在纵向泳道列,一行一个步骤,连线到列填每个步骤移交给哪些行号。下面这张图就是一家实物商品企业的这张地图,从一个起点走到四个各不相同的终点;本页余下的部分,说的是怎样把你的文件弄到能顺利导入的状态。
本流程图涵盖的内容
本模板包含
- 六个阶段列——订单录入、信用审核、库存分配、拣货与打包、发运与在途、开票与结案——横跨五条泳道:客户、销售、仓库、财务与承运商,于是导出文件里的负责人列和状态列,从两个代码变成了页面上的一个位置。
- 订单录入照着导出文件真实记录的样子来画:“在 ERP 中录入订单行”一条一条地录,然后是“订单行与报价是否一致?”,它的有出入这一支经过“客户是否接受修正后的订单行?”,通向确认交期,或者通向“发货前订单已取消”。
- 一个能把订单彻底停住的信用阶段。“订单是否在信用额度以内?”比的是整个未结余额,而不是这一张订单;超额这一支走到“是否已收到预付款或已提额?”,它要么放行订单,要么在“订单因信用未通过而关闭”结束。
- 那个让日后的导出文件变得难读的分批发货判断:“是否每条行都有货?”把缺货的订单交给“是否先发有货的行?”,在那里拆单会以第二个单据号生成缺货补单,而等待则回到“为每条订单行分配库存”。
- 一个内含库存修正的拣货循环——“打包数量与拣货单是否相符?”把差异送去“重新盘点并修正库存记录”,再回到“按拣货单拣货并打包”——之后是经由“将货物交接给承运商”完成的跨泳道交接。
- 交付与回款同属一张地图:客户泳道里的“货物是否被全额签收?”、破损或短少走向“交付结案并已提出索赔”,以及“发票是否在到期日前付清?”经由“催收逾期发票”循环,直到抵达“订单已交付且货款已收”。
何时使用本模板
- 你面前开着一份订单导出文件,任何地方都没有图,而有人问的是从订单到交付的流程是什么样,而不是数字是多少。
- 订单交付延误,每个部门都能把自己那一段说清楚,于是争论落在部门之间的交接上,而这些交接谁也没画过。
- 一张分批发货的订单在每份导出文件里都以两个单据号出现两次,而没有任何图说明什么情况下允许拆单、由谁批准。
- 财务和仓库对一张订单何时可以开票各执一词,因为流程从来没写明是按交付数量还是按订单数量开票。
- 你们正在实施或更换 ERP,需要在有人把它映射到新系统的单据流之前,先把现在的流程放在一页纸上。
生成此图的 CSV 文件
每行一个步骤。「连线至」列中的数字是行号——正是它画出了连线,也正是大多数文件缺少的那一列。
| # | 形状 | 方框文字 | 连线到 | 连线文字 | 横向泳道 | 纵向泳道 |
|---|---|---|---|---|---|---|
| 1 | Start | 客户发来采购订单 | 2 | 订单录入 | 客户 | |
| 2 | Manual input | 在 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 | Reject | 订单因信用未通过而关闭 | 信用审核 | 财务 | ||
| 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 | Compensation | 提出索赔并开具贷项通知单 | 22 | 开票与结案 | 销售 | |
| 22 | End | 交付结案并已提出索赔 | 开票与结案 | 销售 | ||
| 23 | Process | 按实际交付的行开具发票 | 24 | 开票与结案 | 财务 | |
| 24 | Decision | 发票是否在到期日前付清? | 26, 25 | 已付款, 已逾期 | 开票与结案 | 财务 |
| 25 | Process | 催收逾期发票 | 24 | 开票与结案 | 财务 | |
| 26 | Success | 订单已交付且货款已收 | 开票与结案 | 财务 |
#,形状,方框文字,连线到,连线文字,横向泳道,纵向泳道
1,Start,客户发来采购订单,2,,订单录入,客户
2,Manual input,在 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,Reject,订单因信用未通过而关闭,,,信用审核,财务
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,Compensation,提出索赔并开具贷项通知单,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 文本粘贴进去,得到的就是表头名称匹配上的那些内容。导出文件是事实的来源,不是图的来源。
地图应该画一张订单,还是整条流程?
画流程。一张订单是一个案例,而一个案例只会走一条路线,所以画它只会画出这张订单恰好走过的分支,避开的那些一个也不会出现。这也是上面那张图有九个判断和四个终点的原因:一张订单可能在录入时取消、在信用审核时被拒、带着索赔结案,或者交付并收款,而一条真实的流程必须承认这四种。请用你们的导出文件去弄清哪些分支承载着真实的量——多少张订单被信用挂起、多少张分批发货、多少张产生了贷项通知单——再把这些数量写进相应判断的备注列里。这才是这份数据诚实的用法:文件告诉你每条路线被走过多少次,地图告诉你路线有哪些。