POS.tw/系统开发笔记

POS.tw.通路进销存资料转入

编辑

若使用 MySQL 当成转档料主要存放位置,当系统逐渐成长后,会造成资料转入时需要大量运算能力,平常运作却都空闲的状况。

所以,使用 AWS DynamoDB 当成主要转入资料存放位置,可以依转入资料量及时间点,动态调整执行速度,以因应部分时段大量资料转入需求。
在两个转档步骤中,使用 AWS SQS 当成中间的缓冲,先将影响到下一阶段资料的主键值放到 queue 中。

如果直接写入到 DynamoDB,就必须使用比较高的 Provisioned capacity 来存放下一阶段主键值。
使用 queue 就可以用较小的 capacity 来执行下一阶段统计,因为每一阶段统计时间可能都要很长,所以,只要极小量的 capacity 就可以因应大量资料的统计。

且未来如果资料量再增加,就可以把每个阶段切割开,把统计量大的交由 AWS EMR 进行统计后,再将资料转入使用。
若需要与通路或厂商内部系统串接,把 queue 以 API 的方式提供服务,即可跨不同的系统或云端服务平台,进行资料整合。

  • 执行步骤
  1. 取得进销存相关资料档案。
  2. 将档案资料转入 DymanoDB 。
  3. 计算进销存交易明细。
  4. 计算进销存日档及平均日销量。
  5. 计算库存异常明细。
  6. 计算进销存周档。
  7. 计算进销存月档。
  8. 计算进销存月档商品ABC分类(分金额及数量)及销售排名(分金额及数量)。

取得进销存相关资料档案

编辑
  1. 透过FTP、文字档或Web的方式,取得资料档案。
  2. 取得资料后,将档案传送到 S3,依档案内容进行命名。
  3. 将取得的资料传送到 queueFile(AWS SQS)。先传到 queueFile 可以避免 DynamoDB 写入限制,造成要使用比较高的 Provisioned capacity。
  4. 将 queueFile 中的资料写入 DynamoDB.POStwQueue : DataKey=File_[DataType], RangeKey=[FileName], Attributes 依需求.

将档案资料转入 DymanoDB

编辑
  1. 扫描 DynamoDB.POStwQueue 取得需要转入的档案名称及 S3 位置。
  2. 读取 DynamoDB.POStwMaster 取得档案上次转入状态,以决定是否重新转入或跳过。
  3. 如果需要转入,则执行转入作业;写入转档结果到 DynamoDB.POStwMaster。
  4. 将转入影响到的资料主键值传送到 queue(AWS SQS),可以避免 DynamoDB 写入限制。
  5. 将 queue 中的资料写入到 DynamoDB.POStwQueue,供下一阶段转档使用 。

PS:因应可以取得的资料内容不同,产生不同的资料主键值;例如:有交易明细,则从交易明细算日档;如果只有交易日档,则由日档开始计算;如果只有区间销售,则使用预估计算每日销售及库存;如果只有出货资料及某天库存量(可以用预估),则依出货及库存推算每日销售及库存。

  • 资料主键值类型
  1. DataType=InvoicingDetail (进销存交易明细)
  2. DataType=InvoicingDay (进销存日档)
  3. DataType=InvoicingPeriod (进销存区间资料)
  4. DataType=InvoicingWeek (进销存周档)
  5. DataType=InvoicingMonth (进销存月档)

库存异常计算

编辑
  • 库存异常定义
  1. 负库存:负库存一般均为库存管理出问题造成,除了少数特例外;所以,要特别管理,先从负库存量高的进行处理,逐步找出负库存原因,再一一进行作业调整,避免负库存产生。
  2. 库存为0:库存为0有很多原因,若是品项数多的通路,一般先从促销商品及重点商品先处理;再依商品ABC分类,从A级品项优先处理。
  3. 库存不足:透过平均日销量计算,预估缺货日在三天(可透过参数设定)内的,就当成库存不足。若是搭配补货系统,则要考虑下下次送货日期(下次送货数量必须要下下次才会再补货,所以,不能以下次送货日期计算,否则,下次送货日期后就会缺货);如果是生鲜效期短的商品,则要考虑商品到期日,如果有到期前几天下架的规定,则要考虑替换品数量。如果是效期较长的商品,则可以考虑最高库存量,以减少送货次数。
  4. 库存过多:透过平均日销量计算,如果需要再30天(可透过参数设定)才能销售完毕,则当成库存过多;依通路特性,初期可以先设定60~90天,等长天期的库存过多处理后,再逐步缩短库存天数,达到实际控管目标。若商品有效期限不长,则要依最后下架期限进行计算,避免商品过期造成损失。
  5. 滞销:若30天(可透过参数设定)内都没有任何销售,则设定为滞销。特殊情况要特别设定,例如:促销商品、重点商品及A级商品,可能要设定3~7天就要处理,避免商品放在库存区或被其它商品挡住,造成都没有销售的情况。

商品ABC分类

编辑

商品ABC分类依各家公司会有不同的设定。

在 POS.tw 中预设值为:A:20% B:60% C:20% D:0% E:0%

这个等级的商品,属于重点商品,需要特别进行管理,以避免影响业绩。

这个等级的商品,属于一般商品,以数量及金额进行排名后,找出前100大商品进行处理即可。

这个等级的商品,属于评估商品,每月(或季年,依产品属性决定。)进行评估后,如果是必备商品(依通路属性决定)则不处理,否则将其状况移到DE级商品。

系统自动计算时会排除这个等级的商品;需要人工作业,调整商品到这个等级。 这个等级的商品,属于预计停售且不再进货商品,厂商还有持续生产,只是在公司销售不佳,在有效期限内还可以进行销售,也可以退货的商品,不用急着出清。

系统自动计算时会排除这个等级的商品;需要人工作业,调整商品到这个等级。 这个等级的商品,属于停产的商品,若在期限内没有售完,将无法退货,应尽早处理以避免库存损失。