POS.tw/系统开发笔记
POS.tw.通路进销存资料转入
[编辑]若使用 MySQL 当成转档料主要存放位置,当系统逐渐成长后,会造成资料转入时需要大量运算能力,平常运作却都空闲的状况。
所以,使用 AWS DynamoDB 当成主要转入资料存放位置,可以依转入资料量及时间点,动态调整执行速度,以因应部份时段大量资料转入需求。
在两个转档步骤中,使用 AWS SQS 当成中间的缓冲,先将影响到下一阶段资料的主键值放到 queue 中。
如果直接写入到 DynamoDB,就必须使用比较高的 Provisioned capacity 来存放下一阶段主键值。
使用 queue 就可以用较小的 capacity 来执行下一阶段统计,因为每一阶段统计时间可能都要很长,所以,只要极小量的 capacity 就可以因应大量资料的统计。
且未来如果资料量再增加,就可以把每个阶段切割开,把统计量大的交由 AWS EMR 进行统计后,再将资料转入使用。
若需要与通路或厂商内部系统串接,把 queue 以 API 的方式提供服务,即可跨不同的系统或云端服务平台,进行资料整合。
- 执行步骤
- 取得进销存相关资料档案。
- 将档案资料转入 DymanoDB 。
- 计算进销存交易明细。
- 计算进销存日档及平均日销量。
- 计算库存异常明细。
- 计算进销存周档。
- 计算进销存月档。
- 计算进销存月档商品ABC分类(分金额及数量)及销售排名(分金额及数量)。
取得进销存相关资料档案
[编辑]- 透过FTP、文字档或Web的方式,取得资料档案。
- 取得资料后,将档案传送到 S3,依档案内容进行命名。
- 将取得的资料传送到 queueFile(AWS SQS)。先传到 queueFile 可以避免 DynamoDB 写入限制,造成要使用比较高的 Provisioned capacity。
- 将 queueFile 中的资料写入 DynamoDB.POStwQueue : DataKey=File_[DataType], RangeKey=[FileName], Attributes 依需求.
将档案资料转入 DymanoDB
[编辑]- 扫描 DynamoDB.POStwQueue 取得需要转入的档案名称及 S3 位置。
- 读取 DynamoDB.POStwMaster 取得档案上次转入状态,以决定是否重新转入或跳过。
- 如果需要转入,则执行转入作业;写入转档结果到 DynamoDB.POStwMaster。
- 将转入影响到的资料主键值传送到 queue(AWS SQS),可以避免 DynamoDB 写入限制。
- 将 queue 中的资料写入到 DynamoDB.POStwQueue,供下一阶段转档使用 。
PS:因应可以取得的资料内容不同,产生不同的资料主键值;例如:有交易明细,则从交易明细算日档;如果只有交易日档,则由日档开始计算;如果只有区间销售,则使用预估计算每日销售及库存;如果只有出货资料及某天库存量(可以用预估),则依出货及库存推算每日销售及库存。
- 资料主键值类型
- DataType=InvoicingDetail (进销存交易明细)
- DataType=InvoicingDay (进销存日档)
- DataType=InvoicingPeriod (进销存区间资料)
- DataType=InvoicingWeek (进销存周档)
- DataType=InvoicingMonth (进销存月档)
库存异常计算
[编辑]- 库存异常定义
- 负库存:负库存一般均为库存管理出问题造成,除了少数特例外;所以,要特别管理,先从负库存量高的进行处理,逐步找出负库存原因,再一一进行作业调整,避免负库存产生。
- 库存为0:库存为0有很多原因,若是品项数多的通路,一般先从促销商品及重点商品先处理;再依商品ABC分类,从A级品项优先处理。
- 库存不足:透过平均日销量计算,预估缺货日在三天(可透过参数设定)内的,就当成库存不足。若是搭配补货系统,则要考虑下下次送货日期(下次送货数量必须要下下次才会再补货,所以,不能以下次送货日期计算,否则,下次送货日期后就会缺货);如果是生鲜效期短的商品,则要考虑商品到期日,如果有到期前几天下架的规定,则要考虑替换品数量。如果是效期较长的商品,则可以考虑最高库存量,以减少送货次数。
- 库存过多:透过平均日销量计算,如果需要再30天(可透过参数设定)才能销售完毕,则当成库存过多;依通路特性,初期可以先设定60~90天,等长天期的库存过多处理后,再逐步缩短库存天数,达到实际控管目标。若商品有效期限不长,则要依最后下架期限进行计算,避免商品过期造成损失。
- 滞销:若30天(可透过参数设定)内都没有任何销售,则设定为滞销。特殊情况要特别设定,例如:促销商品、重点商品及A级商品,可能要设定3~7天就要处理,避免商品放在库存区或被其它商品挡住,造成都没有销售的情况。
商品ABC分类
[编辑]商品ABC分类依各家公司会有不同的设定。
在 POS.tw 中预设值为:A:20% B:60% C:20% D:0% E:0%
A级
[编辑]这个等级的商品,属于重点商品,需要特别进行管理,以避免影响业绩。
B级
[编辑]这个等级的商品,属于一般商品,以数量及金额进行排名后,找出前100大商品进行处理即可。
C级
[编辑]这个等级的商品,属于评估商品,每月(或季年,依产品属性决定。)进行评估后,如果是必备商品(依通路属性决定)则不处理,否则将其状况移到DE级商品。
D级
[编辑]系统自动计算时会排除这个等级的商品;需要人工作业,调整商品到这个等级。 这个等级的商品,属于预计停售且不再进货商品,厂商还有持续生产,只是在公司销售不佳,在有效期限内还可以进行销售,也可以退货的商品,不用急著出清。
E级
[编辑]系统自动计算时会排除这个等级的商品;需要人工作业,调整商品到这个等级。 这个等级的商品,属于停产的商品,若在期限内没有售完,将无法退货,应尽早处理以避免库存损失。