要做出入库管理,很自然的第一反应是:做两张表,一张入库、一张出库。
因为"入库单"和"出库单"本来就是两种单子。
但在表这件事上,更好的做法是把它们合成一张。
为什么?
因为你真正要算的那个数——结存(也就是"现在还有多少")——是从头到尾累计出来的:
结存 = 一共进来多少 − 一共出去多少。
如果把入库和出库放在两张表里,那这个数就要跨两张表去算。
而跨表算数是最容易出错的地方——引用一个区域、漏掉一段、或者两张表的写法不一致,都可能让这个数悄悄错掉,而且它不会报错。
所以更好的结构是这样:
一张流水表,每一行是一笔进出。 而"是进还是出",由其中一列来标明。
也就是说:入库和出库,在这张表里其实是那一列的两种取值。
这个做法你其实见过——我在讲家庭账本和预算表的那两篇里用的就是同一套:"收入还是支出"单独一列,然后靠它来算结余。
而出入库的"结存",就是同一个算法换了个名字。
所以那句可以这样记:入库单和出库单看起来是两种单子,但在表里它们其实是同一张表的两种"类型"——因为只有这样,"一进一出能对上"这件事才成立。
那表该有哪些列
顺着上面那个结构,给一个够用的版本:
日期、单据号、类型(入库/出库)、品名、规格、单位、数量、单价、经手人、签收人、备注。
这里面有几列值得单独说。
"类型"那一列就是前面说的关键。它的取值要统一——别今天写"入库"、明天写"进"、后天写"收",因为那样你没法统计。有必要的话用下拉来填(这个办法我在讲记账表的那篇里写过)。
"单据号"那一列是这一整套东西的命脉,下面单独说。
"单位"那一列看起来不起眼,但它是"对不上"的常见原因之一,下面也会说到。
"单价"和"数量"分两列,这个道理和我在讲报价单那篇里说的一样:一栏里只能放一样东西。 你把"100元/箱"这种写法塞进一栏,它就变成文字了,不能参与计算。
同一批东西进两次,怎么记
现在说你问的这个。而这一问的关键,其实不在"怎么让它进两次",而在"进两次之后怎么还能对上"。
先说为什么会有"进两次":
分批到货。 比如你订了一百件,供应商先发六十件、过两天再发四十件。
或者是补货:一批有问题退回去,换了一批新的来。
那怎么记?
记成两行。不要合并。
具体说:第一笔六十件记一行,第二笔四十件记另一行。
而很多人会这么做:先把第一笔记上,等第二批到了,就把那一行的数量改成一百。
这个做法我不建议,原因有两个。
第一个:你丢了信息。
原来那两行里带着"什么时候到的、单据号是多少、签收人是谁"——合并成一行之后,这些就只剩一份了。 而以后要查"第一批是什么时候到的",就查不出来了。
第二个,也是更实际的:你丢了"到齐了没有"这个状态。
如果记成两行,那你一眼就能看出"一共该来一百,现在来了六十"——还差一批。
而合并成一行之后,那一行写着一百,看起来就是"齐了"。 于是"还差一批"这件事就没人提醒你了。
所以那句可以这样记:同一批东西进两次,正确的做法是记成两行——而不是把第一行改成总数。因为"两次"这件事本身就是信息。
那怎么区分这两行?
靠单据号,或者靠批注。
比如在备注里写"第一批""第二批",或者干脆给这两笔各编一个单据号。只要能让这两行被区分开,就够了。
而"单据号"这件事,正好是下面那条要说的。
签收栏怎么留
再说这个。而这一问有一个前提:签收栏是"手写栏",它和别的栏不一样。
所以在设计上要按"手写"来考虑,而不是按"打字"来考虑。
先说要留哪两栏——而这里有一个很容易漏的区分。
"经手人"和"签收人"是两栏,不是一栏。
经手人,是你这边发货(或者收货)的那个人。 签收人,是对方那个签字确认的人。
为什么要分两栏?
因为"谁给的"和"谁收的"是两件不同的事。
出了争议的时候,这两条线索都要用得上:一条用来找"东西是从谁手上出去的",另一条用来找"东西是交到谁手上的"。 如果只有一栏,那这两件事就混在一起了,说不清。
所以那句可以这样记:经手人是你这边的人,签收人是对方的人——这两栏都要有。
然后说尺寸。这里有两条,都是从"手写"这个角度来的。
一是宽度要够。
签收那一栏应该是整张单子上最宽的一栏之一——因为它要放下一个手写的名字。关于"签名那一栏留多宽"这件事,我在讲签到表的那篇里写得很细(包括怎么验证够不够——打印一张自己签一次),这里不重复。
二是高度也要够,而且建议拆成两小格。
因为实际签收的时候,往往要写"名字 + 日期"。
如果只有一格,那名字和日期很容易挤在一起,或者写不下只能挤在角落。 所以把它拆成"签名"和"日期"两小格,看起来多了一栏,实际上更好用。
最后一个位置上的建议:把签收那一块放在最右边。
理由和签到表一样——写字的手腕需要一个不被左边格子限制的空间。
怎么打印成一本
再说最后这个。而它的重点可能和你想的不一样。
"打印成一本"这件事,重点不在"怎么装订",而在"连号"。
为什么?
因为单据本的核心价值,一半在于"少了哪一张能看出来"。
你想想:一本编了号的单据,第一张是 0001、第二张是 0002……那么如果中间缺了一张,你翻的时候就能发现。
而如果单据没有编号,那掉了哪一张,你压根不知道。
而"不知道有没有漏掉一张",对一套要做"对账"的单据来说,是很麻烦的——因为你没法确定"数字对不上"是因为"算错了",还是因为"某一张没入账"。
所以连号这件事,是单据能"对上"的前提之一。
具体怎么做到连号?
做法是让编号是"算出来的",而不是手填的。 也就是说,用一列自动往下排的号,而不是你自己一个个敲。 关于序号怎么自动生成、以及怎么让它删了行之后还连续,我在讲自动填充序号的那篇里写过。
而"成一本"的另外两件事,是打印上的:
一件是"一页一张"。 也就是说,排版的时候要让一张单正好占一页,而不是靠打印时它自己分页——因为那样可能出现"一张单被切成两页",而签收那一半跑到下一页去了。
另一件就是装订线。
这正是"成一本"要用的那个设置——留出装订的那条边,装订起来之后才不会挡住内容。 关于装订线是什么、它和页边距有什么区别、以及双面装订时它为什么会左右交替,我在讲打印前要定的那三件事里写过,那里说得最细。
还有一件事值得顺手做:打印两份。
因为单据通常是双方各留一份——你一份、对方一份,而且两份是同一套编号。
(关于单据里的编号规则该怎么定——尤其是"不要用会变的信息去编号"这条,我在讲固定资产表的那篇里写过。那条原则在这里同样适用。)
对不上时,先查这三样
最后给一个排查方向。因为"对不上"几乎是必然会遇到的。
第一样:有没有漏记的单据。
这一类最常见,而原因往往是"先发货、单子后补"。
补单这件事本身没有错,但如果补的时候漏了一笔,那账就对不上了。 所以有一个习惯值得养成:每次补单之后,回头核一遍当天的量。
第二样:单位是不是统一。
这一条很容易被忽略。
比如同一件东西,有一笔记成"5 箱",另一笔记成"50 个"——那算出来的结存就是错的,而且错得不明显。
所以"单位"那一列不能随便填——要么统一成一个单位,要么在换算的时候特别小心。
第三样:退换货有没有走单。
退换货是最容易"口头处理"的——因为东西就在手边,说一句就换了。
但在账上,退货应该是一笔入库(东西回来了)、换货应该是"一出"加"一入"。 如果这些都不记,那结存就会慢慢偏。
而如果你按这三样查完还是对不上,那就该按"对账"的思路去处理了——也就是把两边的记录摆在一起配对,看差异落在哪一类。关于这一套(尤其是"差异分三类"那个分法),我在讲对账单的那篇里写过。
几个常见的坑
第一个坑,是把入库和出库做成两张表。那结存就要跨表算,而跨表算最容易悄悄出错。
第二个坑,是同一批到货时把第一行改成总数。那样既丢了信息,也丢了"到齐了没有"这个状态。
第三个坑,是经手人和签收人合成一栏。出了争议时,说不清"谁给的"和"谁收的"。
第四个坑,是单据不连号。那样掉了哪一张你都不知道,而对不上时就没法判断原因。
第五个坑,是单位不统一、退换货不走单。这两个都会让结存慢慢偏,而且偏得不明显。
最后
如果只用三句话记住这篇,我希望是这三句话。
入库单和出库单看着是两种单子,但在表里它们其实是同一张表的两种"类型"——"是进还是出"由一列标明。因为只有这样,"结存"才能在一张表里算出来;而跨两张表算数,是最容易悄悄出错的地方。
同一批东西进两次,要记成两行,而不是把第一行改成总数。因为"两次"这件事本身就是信息:它带着"什么时候到的、单据号是多少",也带着"到齐了没有"。而签收那一栏要分成"经手人"和"签收人"两栏——因为"谁给的"和"谁收的"是两件不同的事。
最后:打印成一本,重点不在装订,而在连号。因为单据本的价值,一半在于"少了哪一张能看出来"——而缺一张的原因查不出来,你就分不清"对不上"是算错了还是漏记了。