金蝶软件咨询热线:0371-55980123 金蝶软件技术支持:0371-69063210 服务热线:18530039888

金蝶KIS专业版物料保质期按月处理的方法

    金蝶KIS专业版的物料如果启用保质期管理,则设定的保质期必须是以“天”为单位。我这边遇到一个比较特殊的情况,该客户的产品保质期分为2年和3年两种,说是按年呢,实际上2年的是按照23个月计算,3年的是按照35个月计算,就是说要比年份少1个月。当时和客户一起研究了半天,在物料的保质期(天),按年换算为天再减去30天,暂且按700天和1065天。
​    运行了一段时间,发现问题了。例如2年保质期的产品,生产日期为2016年3月1日,按客户以前的业务逻辑,有效期至应该为2018年2月1日,但金蝶KIS专业版系统按照生产日期+700天的逻辑计算出来是2018年1月31日。这两个结果其实都不错,如果按23个月的保质期算,客户是对的。如果按700天的保质期算,系统也是对的。问题就出在存在大小月,所以700天不一定是23个月,同理,1065天也不一定是35个月。

    如果只是这样倒也无妨,但是保质期计算结果与客户要的结果不一致,导致两个后果:1、销售开单人员为了凑2018年2月这个值,手工修改了生产日期,导致出现负库存。​2、客户的客户收到货后,如果有效期不是2018年2月,拒绝接收这批产品。这样直接影响到了客户的销售业务正常开展,因此我们就在金蝶KIS专业版基础上做了个二次开发,实现按月计算保质期的功能。

    ​第一个功能点,把保质期天数换算为月份。

  Private Function ConvToMonth(byval d As Integer) As Integer
    'd:物料的保质期(天数),折合成年,再换算为月,取整。
    Return Int((d/365​​)*12)
  End Funciton

  ​第二个功能点,按月计算有效期,取代系统按天计算有效期的逻辑。

  Private Structure ​GOODS
    Dim PrdDate As Datetime    '生产日期
    Dim EprDays As Integer       '保质期(天)
    Dim VldDate As Datetime    '有效期至
  End Structure

  Dim g As GOODS=getGood(ItemID,BatchNo) '通过物料代码和批号,获取生产日期和保质期天数,在函数getGood内部调用ConvToMonth将其转换为月份,然后用DateAdd("m",ConvToMonth(EprDays),PrdDate)计算出有效期的值​​。

  最后,将g.VldDate的值写入到销售出库单的“有效期至”字段,经测试,未发现与即时库存相冲突,至此,该插件完美的解决了客户的需求。

以上文章作者为南阳金蝶孙鑫

河南金蝶软件营销服务中心 河南金菊信息技术有限公司 销售咨询0371-55980123 技术支持0371-69063210