Феҳристи ҳуҷҷатҳо

仓储与采购

本文档讲清制造业ERP仓储与采购模块如何让库存账目跟随实物变动,涵盖仓库与库存行状态、请购、采购、入库、领料、盘点全流程,并明确指出系统未覆盖的人工复核与审批环节。

  • 库存行带待检到报废六种状态,不合格行留账但不可动用
  • 仓库查找按编号、分类、约定仓三层兜底,防止联动失效
  • 入库、领料、盘点建单即改账,省流程但少一道人工复核
  • 采购单审批通过后无自动流转,已收货等状态靠人工改
  • 供应商停用与等级不参与下单拦截,供货关系表才是核心

11.1 老陈那一车料

老陈管一个仓。仓里同时存在四种命运:刚到的料、检完能用的料、客户送来的料、做完等着发的成品。

上午九点来一车。他真正要决定的不是往哪个架子放,而是这车东西今天下午能不能被领走。

按过去的做法,他在箱子上写个日期,心里记着"这批还没检"。下午车间来催,他顺手给了。第二天质检说那批不行,全厂开始找还剩多少。

现在他做的是:扫一下码,填数量,选仓库,提交。这堆料在系统里带一个状态站着,谁来领都领不走。

这一章讲的就是这个"带着状态站着",以及它前后那几张单:请购、采购、入库、领料、盘点。

11.2 四个仓不是四个格子,是四种命运

仓库是一条一条的记录,不是下拉框里的四个词。 每个仓有自己的编号、名称、分类,还有启用停用;分类本身也是一张表。料进哪个仓,选的是这条记录。

找一个仓,系统走三步。 来料检验、入库这些地方都要"找到那个来料仓"。它先按编号找;找不到,按分类找;再找不到,回落到约定的那一个。为什么要兜三层?因为两套环境的号法不一样:真实厂里认编号,演示环境认固定序号。任何一步没接上,来料检验和库存的联动就悄悄不触发。我们见过这类"看着正常、其实一直没接上"的坑,宁可兜三层,也不赌厂里怎么编号。

库存那一行是带状态的。 一个物料在一个仓里是一行库存,这一行有六种状态:待检、质检中、合格、部分合格、不合格、已报废。前几章说"没检过不能动用",落点就在这里:领料和扣料只从还活着的行里走,判不合格和已报废的那几行不参与。它们留在账上,动用时碰不到。 这个取舍是有意的——不合格的那堆货物理上还在库里,账上先抹掉,反而对不上实物。

成品是一批一行,来料是攒成一堆。 库存表自己的说明写得很直白:普通仓按"物料加仓库"累加成一行,成品仓每次完工入库单独建一行、备注里记是哪张工单做的。这条差别值得做厂的人看一眼:同一颗料进两次货,账上是一行;同一款成品做两批,账上是两行。前者不追批次,后者能追到那张单。 出了质量事故要往下追时,这个不对称决定了追得动追不动。

11.3 缺了料谁来补

两个入口,一个偏静、一个偏动。

看库存清单。 清单页判断缺不缺只有一句话:现在的量低于安全库存。安全库存填在物料档案上,填多少是厂里的事,系统只负责比大小。

看工单。 第九章讲过转生产那一刻:应采量等于单耗乘数量再扣掉库存,没到应采量就是没买够,明细标"部分采购",一张单都没标"已完成"就不让开工。要提醒的是——这条卡控只看有没有人签字,不看库存到底够不够(10.2 已经说过为什么不看)。所以"该补购了"这件事,系统能算出来,不会自己催,催的动作还是人做的。

请购是有真审批的。 请购单建出来是草稿,提交才进审批。提交前系统先看一眼当前是不是草稿,不是就退回,话说明得很清楚:"当前状态为某某,只有草稿状态的请购单才能提交审批"。进了审批走的是和工艺路线同一套引擎:有模板、有单号、有申请人。审批批完,结果回写到请购单上——通过就是有通过,驳回就是有驳回,不由建单人自己说了算。

缺的一格:请购进审批时不带金额。 引擎那边本来有"金额"这个位置,采购请购传过去的是空的。于是"超过多少钱要走老板"这条规矩,在系统里看不见钱。补法不全是开发:先得要求请购单把预算金额填上,有数,才谈得上按数分人批。

11.4 采购单上那格"已收货"

采购这条链,三份定义各不相同,读一遍值得。

  • 状态字段的说明里写了六个值:草稿、待审批、已批、已收货、已完成、已取消;
  • 程序里那份枚举只认四个:草稿、待审批、已批、已驳回;
  • 能自动走的跃迁表只画到"审批通过"和"驳回"为止。

批完之后,没有任何机制再管这张单。 已收货、已完成、已取消这三个值只活在字段说明里——枚举不认、跃迁没有、审批回调也不写。发没发给供应商、到了几成、结没结案,全靠采购员在页面上把那个字改一遍。请购那边也一样:说明里写的是"已提交",程序里落的其实是"待审批",同一件事两个叫法。

驳回回来的处理,两张单不一样。 请购被驳回停在"已驳回",要重新提一次;采购单被驳回直接退回草稿,改完就能再提。这不是漏洞,是两种取舍,但厂里得知道自己是哪一种——特别是采购员会问"我被打回的单去哪了"。

明细上有一格"已收货数量",入库不会往里加。 采购明细确实留了这一格,说明写着"已收货数量"。我把入库那条链子翻到底:收货数记在入库单自己的明细上,没有任何地方往采购明细这一格累加。一单采一千、实收六百,采购单上那格还是零,除非有人自己填。所以"到货进度自己会走"这句话,我们不敢写。

唯一的硬拦在删除。 一张采购单只要已经有了入库记录就删不掉,系统明说"已有多少条入库记录,无法删除"。这条判断用的是采购单号那串字。

供应商名字对不上,现在就建不出单了。 建单时如果传进来一个供应商名字,系统去档案里按名字精确找;找不到就直报一个错(建单和改单两路都拦),让你先把这个供应商建进档案再来下单,不再把那一格留空静默建单。要分清一句:不传名字仍可建单(那一格本来就允许空),只有填了名字又对不上才报错。

11.5 三张单都是"建完就改账"

入库、领料、盘点这三张单在系统里是同一种写法:建完,账就动了。

  • 入库单建好,库存立刻加上去,状态强制是草稿;
  • 领料单建好,库存立刻扣下来,审批还没走;
  • 盘点单建好,账面数直接改成实盘数。

这三处不是漏了流程,是把流程压成了一步。 压这一步换来一个实打实的好处:账不会跟实物脱节太久,车间不会对着一个昨天的假数排产。代价也明说:少了一道人工复核,尤其是盘点——差异一填,账就改了,没有第二个人签字这一步。

我不想把它说成缺点。中小厂仓管就一两个人,让他"建完单再去点一次确认",多数时候只是多点一下。但月盘不一样,一次盘出几万块的差异,得有个人的名字落在中间。所以这一节配套的那条规矩是:盘出差异,另开一张差异单复点,改账只在复点之后。 系统允许一次改完,规矩要把这一次拆成两次。

手机端是真在手机上干的。 入库、出库、盘点各有一页,进门就是扫码。入库那页三样必填:先扫出物料、数量得是正数、必须选一个仓库,缺一样不给提交,提交成功提示"入库成功"、列表顶上多一条。它不要求你填采购单号——没有单也能入库,这一条系统不拦,只能靠"无单到货先补请购"的规矩兜住。

还有一处旧账,跟 10.6 是同一个病。 这三张单的状态字段,说明里写的是中文叫法,代码建单时塞进去的是英文草稿标记。前端为了不让筛选和分色坏掉,专门写了一张"中英文都认"的对照表来兜。异常上报那两处已经收了,这三张单还没扫。扫法跟异常一样:定义一份码,把存量归一,让两端都去拉。

11.6 供应商不只是通讯录

供应商档案是常规那几样:编码、名称、联系人、电话、地址、类别、等级、合作状态、税号。

真正常用的是"谁供哪件料"那张表。 一行是一个供应商对一个物料,带四样:报价、最小订货量、提前期、是不是默认供应商。第 5、6 章说过报价单上的默认交期是带出来的,来源就是这里那一格提前期。一张物料可以有多家供货关系,其中一家标成默认——"换供应商"这个动作,在系统里就是把默认标记挪一行。

等级和合作状态目前不参与任何拦截。 一家供应商被标成停用、或者降了等级,他还能不能出现在下单候选里?系统没有这一道。谁能下单归审批门槛管(15.2),不归等级管——但在把这件事交给规矩之前,厂里得先知道一个事实:"停用"这两个字,在采购下单时不起作用。

11.7 这一章不做的事

不做库位级的找料。 库存行上有一格"存放位置",入库明细上也有一格。它是一句自由填的话,不是一棵可以照着走的货架树。要做到"看着系统走到第三排第二层",得先有一套库位建模,那是另一件事。

不做每一笔出入库的流水账。 库存行是当前量,被反复改。谁在什么时候改的,靠操作留痕那条链去查,不靠一张库存流水账。要出"这个月这张物料进出明细表",现在得靠单据去拼。

看板上仓储那几个数,现在读的是真在用的两条账。 生产看板的仓储那一舱里,安全库存预警、库存健康率、缺料物料数、呆滞清单、分类分布这五项,以前读的是一张早期遗留的老库存表——而全厂所有入库、领料、盘点改的都是物料档案上的总量和分仓的库存行,那张老表没有任何代码往里写,那五个数不会跟着你的仓动。这一处改了:五项现在改读真在用的两条账(物料档案供安全库存阈值与分类,分仓库存行供各仓实际数量),"有档案无库存行"的物料按 0 计,正是缺料预警要盯着的那类东西。这五个数如今能当采购参考了。

还剩一句要交底:库存周转率那一格用的是简化算法(月出库量除以一个估算的平均库存),屏上标了"估算",不是严格的进出库加权重算。

11.8 今晚能定的两条

  1. 无单不收货。 到货必须带采购单号或请购单号。系统允许空着入库,那就把闸口挪到收货登记:单号和供应商两样都空着的不接,先补单再收货。这条不用改代码。
  2. 盘出差异要复点。 定一个线:差异金额或数量占比超过多少,必须第二个人重新点一次、另开一张复点单。系统允许一次改完,规矩把它拆成两次。这条也不用改代码。

这一章能定的事就一句:系统负责让账跟着实物走,规矩负责让改账的人留下名字。 上面那两条,今天定完下周就能跑。