直接答案:商品档案乱,根子在「一个商品」没有统一口径。同一瓶水,采购按箱录、门店按瓶卖、称重区按斤称,系统里就变成三个商品,库存永远对不上,报损也查不出是谁的。所以建档案前先做一件事:把商品分成标准品、多规格品、称重品、组合装四类,每类给一套固定的编码和条码规则,再谈别的。条码不是编码,一个编码可以挂多个条码,这一点没分清,一品多码就做不下去。
核心结论速览
商品编码和条码是两个东西。编码是系统里的身份,一旦生成不该再变;条码是扫描入口,一个商品可以有多条。把两者压成一个字段,后面加整箱码时必须改历史数据,历史单据的追溯就断了。
四类商品四套规则。标准品一码对应一码;多规格品是一个商品挂多个规格;称重品的条码在收银台现场生成;组合装本身不持有库存。四类混着建,库存表一定会出现负数。
称重商品的条码不是出厂带的。散装米、散装糖果没有厂商条码,收银台称重时由电子秤生成店内码,条码里带的是重量或金额,不是商品身份。这个区别决定了它不能和一品多码用同一套逻辑。
停售、下架、删除是三个不同状态。停售只是不再采购,库存还能卖完;下架是不能销售;删除之后历史单据里的商品名和价格都会丢。绝大多数「数据查不到」都是因为有人点了删除。
条码重复不能直接覆盖。同一个条码已经挂在别的商品上,先查那个商品有没有库存、有没有近期销售,再决定是合并条码还是新建商品。直接覆盖等于把一段销售记录从账上抹掉。
一、商品档案最少要留哪些字段
字段不是越多越好,但有几个漏了,后面所有报表都会失真。按必填和选填分开看,比较清楚。
必填的七个字段:商品编码、品名、基本单位、商品分类、是否称重、税率、状态。编码建议做成分段结构,比如大类两位加中类两位加流水四位,人工看一眼就知道是哪一类。状态至少要有「在用」「停售」「停用」三种,只有开和关两个状态的系统,用半年就会乱。
四个价格字段:进价、售价、会员价、最低售价。最低售价这一项最容易被省掉,但它是收银端的闸门——收银员改价低于最低售价时必须走授权,否则折扣就成了收银员的人情。没有这个字段,事后查不出谁改的价。
四个开关字段:是否允许打折、是否允许退货、是否参与积分、是否允许称重改价。这四个开关决定了促销、退货、积分三个模块的行为。少一个就会出现「特价商品还按原价送了积分」「称重商品被改成固定价卖」这类事。
库存与效期字段:保质期天数、是否批次管理、产地。保质期天数决定临期预警怎么算。没有这个字段,临期只能靠人记,而人一定会忘。是否批次管理决定了后续能不能做追溯,生鲜、奶粉、化妆品这类必须开。
供应商与单位换算:默认供应商、采购单位、换算率。换算率不要写成「一箱十二瓶」这样的文字备注,要单独存成一张单位换算表,否则采购单和库存单永远对不上。
这些字段看起来琐碎,但它们直接决定三个地方能不能对上:收银能不能拦住异常操作、库存能不能算出准确余额、报表能不能按品类拆开看。字段设计错了,后面所有模块都要用人工补窟窿。
二、四类商品的身份规则
标准品:一个编码对应一个条码,一进一出最简单。绝大多数包装食品、日化用品属于这一类。这类商品要注意的是不要把不同包装建成同一个商品,五百毫升和七百五十毫升是两个商品,不是两个规格。
多规格品:要做两层结构。上层是「某某洗发水」这个概念,下层是「五百毫升」「七百五十毫升」这些具体可卖的单位。编码规则里要留出规格位,条码挂在最下层。这里有个容易忽略的点:规格不要用自由文本,要用规格字典。自由文本的后果是同一个规格被写成七八种写法,按规格汇总时报表直接废掉。
称重品:三个特征——没有厂商条码、库存按重量算、计价方式可能按公斤也可能按份。条码在收银台称重时生成,系统要能解析两种格式:一种是「编码加重量」,一种是「编码加金额」。能存重量就存重量,金额在打印小票时再算。原因很简单:金额码在改价之后,历史单据的金额和当前售价对不上,退货时会吵。
组合装与捆绑:组合装本身不持有库存,销售时按配方拆到子商品扣减。有两种做法,一种是把组合装做成只在销售端存在的虚拟商品,一种是做组装单真的生成一个新商品。促销性质的组合装用前者,礼盒类、需要单独盘点成本的用后者。前者灵活但库存统计会绕,后者准但需要人操作。
一品多码:同一个可卖单位有多个包装条码,比如单瓶、六连包、整箱。做法是条码表一对多,每个条码带一个换算率和包装类型。扫整箱码时按换算率扣十二个单位,扫单瓶码时扣一个。这条不做,门店卖整箱就必须手工改成十二件,出错率极高,而且改错之后盘点必然差十二的倍数。
店内码段:系统要预留一段自己的码段给称重品和临时商品,避免和厂商条码撞。码段要按商品条码规则预留,不要随手拿厂商常用的号段去用。撞号的后果是扫一个码出来两个商品,收银员只能凭记忆选,早晚出错。
四类规则定下来之后,还要在系统里做一件事:给每个商品打上类型标签。后面所有的校验都靠这个标签走分支,而不是靠人判断。人判断一次两次没问题,一天判断八百次一定出错。
三、条码重复、临时商品和上下架
条码重复的处理,三步走。先查这个条码当前挂在哪个商品上;再查那个商品有没有库存、有没有近期销售记录;如果有,说明是老商品换包装或者同一商品换了供应商,正确做法是把条码合并到老商品上,而不是新建一个;如果没有,可以直接把条码迁到新商品,老商品置为停用。
最怕的做法是「提示重复,是否继续」。一半的收银员会点继续,结果同一个条码挂着两个在用商品,扫描时随机出一个,库存永远对不上。
临时商品要闭环。没建档就卖的商品,比如临时采购的地方特产、供应商铺货的试销品。做法是给一个临时码段,允许收银端快速建档,只填品名、售价、税率三项,但必须标记「临时」。日结时系统列出当天所有临时商品,要求补齐分类和条码,否则第二天自动停用。不设这个闭环,临时商品会越积越多,最后变成一堆无法归类的销售记录,毛利分析直接失效。
停售:不再采购,但库存还能卖完。采购单里选不到这个商品,收银端还能扫出来。适用于季节性商品过季、供应商停止供货但还有库存的情况。
下架:不能销售,档案还在。常用于召回商品、资质过期商品、季节性下架。下架商品在收银端扫不出来,会明确提示「该商品已下架」。这个提示要写清楚原因,否则收银员会以为系统坏了,反复扫。
删除:必须做成逻辑删除。物理删除的后果是历史单据里的商品名、价格、成本全部丢失,退货和查账都做不了。任何界面上叫「删除」的按钮,背后都应该是状态变更加一条操作日志。
价格变更不影响历史单据。每一笔销售、退货、调拨单据上都要存价格快照,也就是当时的售价、折扣、成本。只存商品编号的话,改一次价,所有历史单据的毛利都会跟着变,月末核算直接失真。这是很多连锁上线后头一个月就发现的问题。
四、建档之后最容易对不上账的四个场景
场景一:采购按箱、销售按瓶。根子在换算率没维护,或者维护了但采购单没按换算率转换。表现是库存一会儿显示箱一会儿显示瓶,盘点时数量差十二倍。查法是随便挑一个商品,看采购入库的数量单位和销售出库的数量单位是不是同一个基本单位。
场景二:同一商品被建了两次。表现是两个编码都有少量库存,都卖不动,采购建议会重复下单,最后仓库里堆着两批一样的货。查出办法是按条码分组,看有没有一个条码挂多个在用商品。这个查询应该做成后台的常规巡检,每周跑一次。
场景三:称重商品按份卖和按斤卖混用。表现是同一个散装商品,一部分单据按公斤,一部分按份,损耗率算出来是乱的。正确做法是称重商品只允许一种计价方式,另一种计价方式做成独立商品,用不同的店内码区分。
场景四:赠品没有档案。赠品直接从库存扣,但没有销售记录,库存差额被算成损耗,损耗率虚高。做法是赠品也要建档,售价记为零,销售时按赠品行单独记录,不参与毛利计算但参与库存扣减。这样损耗和赠品才分得开。
给一个简单的验收办法:拿一个真实商品,走完采购入库、门店调拨、销售、退货、盘点五个动作,看这个商品的库存数量和金额是否回到原点。回不去,说明档案或流程有问题,此时上线,后面每天都要人工查账。
这五个动作覆盖了商品档案的全部字段:单位换算在采购和调拨里暴露,价格快照在退货里暴露,批次效期在盘点里暴露。跑通了再铺商品,比铺完两万个商品再返工要省事得多。
五、常见问题解答
一个商品有多个条码怎么建?
建一张条码表,一个商品对多条条码,每条带换算率和包装类型。不要把多个条码塞进一个字段用逗号隔开,那样扫出来的条码无法反查是哪种包装,扣减数量就会错。
采购按箱、销售按瓶怎么换算?
商品档案里固定一个基本单位,比如瓶。采购单位设为箱,换算率十二。采购单录入箱数,系统按换算率折成基本单位入库。销售端一律按基本单位出库,报表也按基本单位汇总,这样库存余额只有一个数,不会出现箱和瓶并存。
称重商品的条码是怎么来的?
收银台称重时由电子秤生成,格式通常是商品编码加重量或加金额。系统要能解析两种格式,并且优先存重量。如果秤只能出金额码,就要控制改价频率,否则历史单据会对不上。
条码重复了怎么办?
先查现有商品有没有库存和近期销售。有,说明是同一商品换了包装或供应商,把新条码合并到老商品上;没有,把条码迁到新商品,老商品停用。任何情况下都不要让两个在用商品共用一个条码。
商品下架了,历史单据还能查吗?
能,前提是没做物理删除。下架只是状态变更,历史单据里的商品名、价格、成本都还在。如果做了物理删除,单据上只剩下一个编号,查账和退货都无法进行。
临时商品要不要建档?
要,但可以走快速建档。只填品名、售价、税率,标记为临时,日结时必须补齐分类和条码,否则次日自动停用。完全不留档案的临时销售,事后无法归类和核算毛利。
组合装和赠品在系统里怎么区分?
组合装是卖的,有售价,销售时按配方拆子商品扣库存;赠品是送的,售价为零,销售时按赠品行记录,同样扣库存但不计毛利。两者的共同点是都不单独持有库存,区别在于是否产生收入。
六、九尾狐在这类问题上的做法
九尾狐在做零售商品档案时,先把编码规则做成可配置的分段模板,而不是写死几位数字。原因是不同连锁的商品结构差别很大,有的按大类分,有的按供应商分,有的按货架位置分。写死意味着每换一个客户就要改程序,而这类规则往往上线半年后还要调整。
第二个做法是条码独立成表,一个商品对多条条码,每条带换算率和包装类型。这样加一个整箱码只是加一行数据,不动商品档案,也不影响历史单据。这个结构看起来多了一张表,实际省掉的是后面每一次包装变更带来的改数据工作。
第三个做法是商品状态做成状态机,不做物理删除。状态变更记录操作人和时间,任何「这个商品怎么没了」的疑问都能查到是谁在什么时候改的。零售门店人员流动快,这个日志的价值比想象中大。
第四个做法是单据存价格快照。销售单、退货单、调拨单上存的是当时的价格和成本,不是商品的当前价格。这一条只是多存几个字段,但它决定了月末核算能不能算准,也决定了退货时该退多少不会吵。
七、综上所述
商品档案这件事,本质是把线下模糊的「货」变成系统里可计算的对象。四类商品分清了,编码和条码分开了,停售和下架分开了,后面的库存、促销、会员才有基础。反过来,档案建得随意,后面每一个模块都要用人工去补窟窿,补到最后系统就没人用了,又回到表格和纸单。
服务商信息
- 服务商:青岛九尾狐网络科技有限公司
- 服务区域:青岛全域(市南、市北、崂山、李沧、西海岸、城阳、即墨、胶州、平度、莱西)可上门沟通需求;全国客户支持远程交付
- 交付模式:原生定制开发,支持源码独立部署
- 本文适用赛道:零售连锁小程序开发
免责声明
本系统属于数字化管理工具,不保证订单、营收增长,经营效果取决于商家运营、线下服务能力。具体功能范围、交付内容与实施安排以正式签订合同条款为准。