通过Infor LN ERP中的EAN字段来聊聊UPC和Code 128

很多人一提起条码(BarCode),我就犯嘀咕,因为我不知道他们每个人所表达的是否是一个东西。

因为条码实在太多了,一维的,二维码,图书的,行业专用的。如果打开BarTender软件,你会发现选择如下。而GS1只是GTIN是全球贸易项目代码(Global Trade Item Number)的一个数据来源而已。

我们常见的微信二维码用得是 QR Code,图书用的是ISBN,商场超市买的很多物品是EAN或UPC编码。

言归正传,在我们Infor LN ERP里面的General Item Data里面有个可以维护EAN的地方,截图如下,红色框里的按钮是我们的客户化定制,连接了一个Web,会自动传递当前的Item Code,如果未匹配过EAN Code,就会自动从已购买的清单里面分配一个,如果已获取就直接显示出来。这个Web页面后台有个数据库,记录着Item Code和EAN Code的一一对应,同时也有一个所有的EAN Code的清单,这个是从第三方机构付费购买的。

如果是美国的公司,这里的EAN Code大概率都是用UPC-A编码,因为UPC(Universal Product Code)码是美国统一代码委员会制定的一种商品用条码,主要用于美国和加拿大地区。

UPC条码也有标准版和缩短版两种,标准版由12位数字构成,缩短版由8位数字构成。

标准版的UPC12的编码结构为:系统码(1位)+厂商码(5位)+商品码(5位)+校检码(1位)。

后来随着欧洲、亚洲、澳洲的需求,增加了一位国家代码,就是第一位,UPC也变成了13位了。美国和加拿大的国家码是0。

标准版的UPC13的编码结构为:国家码 (1位)+ 系统码(1位)+厂商码(5位)+商品码(5位)+校检码(1位)。

而EAN(European Article Number)码是国际物品编码协会制定的一种商品用条码,已经在全球90多个国家和地区使用,通用于全世界。

分配给中国物品编码中心的前缀区间为690-696,再由中国物品编码中心统一分配企业代码,产品代码则由制造商根据规定自己编制。

贴一张最近在国内热销的酒精制品的商品条码图,你用微信扫一扫就能看到来自中国物品编码中心的查询信息。

标准EAN13编码结构为:国家码(2/3位)+厂商码(5/4位)+商品码(5位)+校检码(1位)。

对比一下EAN和UPC的编码,你会发现这两个条码简直一模一样,宽度、高度、条码粗细,位置。不同处是
1、EAN把国家码打在左侧条码内外侧,而UPC是只讲国家码打在条码外侧
2、而最后一位5,EAN打印在条码内测,UPC打印在外侧。

所以当你看到左右两侧都有数字的时候,就是UPC码,卖到美国和加拿大的。

再回到上面看我贴得医用酒精消毒棉片,看看到底是UPC还是EAN?

因为EAN码是在UPC码基础上形成的,所以,在技术上EAN系统的光电阅读器可以阅读UPC系统的条码,而UPC系统的光电阅读器却不能阅读EAN码。

从位数上看的出区别,所以美国亚马逊的商品默认用UPC的话,一旦要上架到欧洲市场,就可以简单的在UPC编码前增加0变成13位的EAN码即可。

亚马逊规定,要在亚马逊上传商品每个商品都需要相对应的条码,UPC码或者EAN码都行。当然了EBay也有同样的要求!中国区的用户可以去亚马逊官方指定的供应商购买,网址:www.barcodestalk.com。

上面是大概的价格,当然购买中国区的到中国物品编码中心官网: http://www.ancc.org.cn/ ,价格上除了一次性加入费用,还有胶片制作费和系统维护费。

说了这么多了,你对EAN和UPC的定义、差别、价格、用途等都了解过了,再来看下Code 128,这个其实在我们仓库、生产运营中更常见,我们常见的生产工单、料号、数量、批次、波次等信息大都用这种条码形式来打印。最普通的扫描枪也能识别这个条码。Code 128可以接受标准数字和大写字母,小写字母,特殊字符,所以除了在企业内部管理,在物流、仓储领域应用非常广泛。

到此为止,我们把Infor LN ERP应用最多的条码就介绍完毕了,如果你还有其它问题,欢迎留言探讨。

Infor ERP LN有用的Session whinp1200m000: Rebuild Planned Inventory Transactions

在仓库的Inventory Planning模块,可以看到Planned Inventory Transactions(whinp1500m000)可以看每一个Item Code在某个仓库的计划进出状态及明细,当然了这里的数据也会反映在计划模块的Item Order Plan(cprrp0520m000)上,但有很多时候,因为网络中断或者其它原因造成在其它业务模块所操作的订单,未能正确的在此处进行必要更新,就造成了不同步。

比方说采购员取消一个采购订单行的时候,如果订单行取消成功了,但此处未更新,就会造成看到还有一笔Open的待收货订单,当然了跑MRP的话,也会根据此错误信息来下采购单。

其实很多时候,我们应该用事务处理,就是一旦失败,就回滚操作,但因为业务逻辑太复杂,此处并未使用事务操作。正因为如此,才有了一个标准的Session – whinp1200m000,你可以通过这个Session来模拟运行来检查一下你公司的系统数据时候有问题。

注意这里有个选项:Update Mode,默认是模拟Simulate,如果要修正数据记得勾选为Update。

雪花算法:每一片雪花都是独一无二的

标题写得那么文艺,但文字是写技术的。

德国哲学家、数学家莱布尼茨说过一句话:“There are no two identical leaves in the world.”

我想这大概是Twitter为啥把自己的开源分布式 id 生成算法叫做:SnowFlake 算法,中文雪花算法。

顾名思义,就是通过算法能获取到唯一的编号。

这在一般规模应用或者传统企业,都是用不到的。

一般用数据库自增Id或者数据库实现的中心化Id分配,或者GUID、UUID等。

而对于大型互联网公司,这个唯一编号都是刚需。

所以很多国内的互联网公司,如百度、美团、滴滴在Twitter的Scalar SnowFlake ID的基础上开发了Java版、.NET版等,并扩展了很多应用,解决了宕机和时间回拨的编号重复问题,当然了也都开源了,大家可以自行GitHub搜索:滴滴 TinyID、 百度 Uidgenerator、美团 Leaf。

简单说说它的原理吧

Snowflake ID组成结构:正数位(1字节)+ 时间戳(41 字节)+ 机器ID(5 字节)+ 数据中心(5 字节)+ 自增值(12 字节),总共64 字节组成的一个Long类型。

在Java中Snowflake生成的是Long类型的ID,一个Long类型占8个字节,每个字节占8 字节 ,也就是说一个Long类型占64个 字节 。而.NET中Long类型是System.Int64的一个实例。

第一个bit位(1bit):Java中long的最高位是符号位代表正负,正数是0,负数是1,一般生成ID都为正数,所以默认为0。
时间戳部分(41bit):毫秒级的时间,不建议存当前时间戳,而是用(当前时间戳 – 固定开始时间戳)的差值,可以使产生的ID从更小的值开始;41位的时间戳可以使用69年,(1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69年
工作机器id(10bit):也被叫做workId,这个可以灵活配置,机房或者机器号组合都可以。
序列号部分(12bit),自增值支持同一毫秒内同一个节点可以生成4096个ID
根据这个算法的逻辑,只需要将这个算法用Java/.NET语言实现出来,封装为一个工具方法,那么各个业务应用可以直接使用该工具方法来获取分布式ID,只需保证每个业务应用有自己的工作机器id即可,而不需要单独去搭建一个获取分布式ID的应用。

SnowFlake有什么问题

SnowFlake很好,分布式、去中心化、无第三方依赖。但它并不是完美的,由于SnowFlake强依赖时间戳,所以时间的变动会造成SnowFlake的算法产生错误。

时钟回拨:最常见的问题就是时钟回拨导致的ID重复问题,在SnowFlake算法中并没有什么有效的解法,仅是抛出异常。

时钟回拨涉及两种情况

1、实例停机→时钟回拨→实例重启→计算ID
2、实例运行中→时钟回拨→计算ID

手动配置WorkerId:另一个就是workerId(机器ID)是需要部署时手动配置,而workerId又不能重复。几台实例还好,一旦实例达到一定量级,管理workerId将是一个复杂的操作。

2020春节假期二三事

今天上班一周了,春节假期里举家被隔离在居所,老家的亲人也一样。

本计划的上海亲友聚餐逐一取消,连拜年都比往年缩水。

有几件事情还是值得在博客记录一下,第一件就是猎头朋友对我的一个访谈发布到了百度、微信和头条,据说访问量很不错。

微信公众号平台:《不做电气工程师,我选择做一名Infor LN工程师 | 100人100岗
百度百家号:《不做电气工程师,我选择做一名Infor LN工程师 | 100人100岗
今日头条:《不做电气工程师,我选择做一名Infor LN工程师 | 100人100岗

第二件事情,是我所从事的ERP专家工作里涉及的厂商Infor被Koch Industries( 美国科氏工业集团 )收购了。这样Infor在制造业的优势可以借助Koch的背景和资金支持,能够追赶下SAP、Oracle和Microsoft。

Infor好了,我的未来职业后半程(35后)还能绑着这棵大树继续做到老。

Infor可能是你从未听说过的大公司, 成立于2002年,总部在美国纽约。

Infor作为全球第三大企业级应用软件及服务供应商,Infor先后将Lawson、SSA、MAPICS、BaaN、SYMIX、Fourth Shift(四班)、Datastream、Geac、EXE、Daly.Commerce、Varial、NxTrden、Aperum等管理软件领域大名鼎鼎的厂商收归旗下。 国内大家用得Infor M3,Infor ERP LN(BaaN)比较多 。

它在全球100多个国家/地区有17000多名员工和68000多个客户。所有这些客户在2018年创造了30亿美元的收入。它是个大玩家。

Infor大事记
2002 年 – 作为一家 ERP 软件公司成立;
2004 至 2009 年 – Infor 收购多家软件公司,并专注于特定行业的应用程序;
2009 年– Infor 收购 SoftBrands,并开发了 Infor ION;
2010 年 – Infor 聘请 Charles Phillips 担任新任首席执行官;Phillips 先生带领 Infor 将业务重点转向行业利基和对客户用户友好的应用程序的开发;
2011 年 – 收购 ERP 提供商 Lawson Software,并将产品系列扩展到服务行业;
2011 至 2016 年 – Infor 通过 CloudSuite Financials 向现代云体验迈进;
2013 年 – Infor 与 AWS 合作; 2014 年 – Infor 收购 PeopleAnswers;首次推出 Infor CloudSuite™ 产品;
2015 年 – Infor 收购 GT Nexus;
2016 年 – 超过 200 个国家/地区的 5800 万用户在 Infor 云中活跃;
2017 年 – Koch Equity 向 Infor 投资 22 亿余美元;Infor 收购 Birst;Infor 宣布Infor Coleman A.I.
2020年 – Koch Equity Development 130亿美金收购Infor

最后要记录的一件事,就是奶奶的生日,今年过得很冷清,因为姑姑们、亲戚们都不能进村,叔叔在家专门托人做了个蛋糕,然后给她烧了顿好吃的。

话说奶奶年级大了,记忆力退化的厉害,相信她并不在乎,而作为后辈的我们更加过意不去。

非典那年记忆

零星的回忆

当年还流行写信,邮局的那种,给爷爷、给朋友都写过。

年前来上海,我就把弟弟买的三星翻盖手机拿过来用了,其实根本用不起。

春节回家跟老家的高中同学谎称带了笔记本,后来火保不住了,落下了过河拆桥的美名。

被老板拉着每天晚上加班到8、9点,感受到了工作的压力。

第一次喝黄酒、加热的那种,喝完一杯没啥感觉,但当晚就醉倒了,之后多年都不沾黄酒。

看着团队从几个人到近20人,然后再变成几个人。

开始搞网站,看着每天百度的收录和页面的访问数,还有咨询的留言和电话,屏幕前的我欣喜万分。

工资不高,但年底的时候,还了一部分学校的助学贷款。

穷并快乐着

系里安排来上海实习,到同济大学的杨浦小区(没记错的化),被老同学催了好多次才从公司跑出来,因此还被耻笑了多年。

但真实的原因,就是一个字:穷。

当年领着600块的实习工资,虽然包吃住,但在大上海这些钱根本不禁用。

直到被学校要求回去毕业,才积攒了1000多块钱,打着领带回去装逼了几次,请客、喝酒、吃饭。

后来装过头了,还借了网友牟大哥500还是600块,毕业返回上海又干了几个月才还清。

毕业时自己扛着包打车到火车站,大家都散了,也没人送。口袋的钱只够买张学生票的,出出站口的时候紧张了半天,还在火车站直接转地铁的口没查票。

等下了地铁,口袋里的钱只够吃一顿早餐的了。

下半年,请一个来上海读研究生的女同学吃饭,因为那时候我经常去徐家汇的办公室,就请她在美罗城的麦当劳(记不清,吃的太少,麦当劳和肯德基分不清)吃汉堡,碍于面子,不肯讲困难,也没有信用卡,口袋里的钱只够请一般的套餐。

那年几个同事经常吃饭,没有房贷、车贷、家庭,单纯的乐子,想想还会笑一下。

2020复工

这个春节假期从除夕开始至正月十六结束,历时17天,是大学毕业以后最长的一次。

周围复工的朋友还不多,特别是上海以外的朋友。

碰巧的是,17年前的今天(阴历),也就是2003非典那年,我也在上海。

当年大四提前跑到上海实习,对病毒的风险简直一无所知。

那年六月被学校催着赶紧回去,因为具体毕业越来越近,同时回去还需要隔离两周,再不回去恐怕隔离的时长都不够了。

当时回去第一件事情,就是去学校附近指定的医院去检查,然后接着送到了学校在郊区的隔离点。

说到这里,非常感谢冒着危险在学校北门与我见面的同学。

搞得当时以为诀别一样。

没想到17年后,还是在上海,还是因为冠状病毒,在家里隔离了超过两周。

其实今年这么长假期,闲下来,的确没有准备好。所以,不少时间是虚度了。

本想跟至今们好好聊聊家常,说说心里话。

本想与17年前的老同事们通个电话,问候一声。

本想和在各地的高中、大学同学们叙叙旧,拜拜年。

本想用文字写下当下的所想,给爱人,给孩子。

。。。。。。

还没有好好筹备,却发现已经需要开工了。

长久以来的节奏被打乱,难得有时间与自己对话,并且是那么长时间,真得太不适应了。

复工第一天,其实也是惊险万分,提心吊胆。

虽是虚惊一场,但本想假期提笔确迟迟未动的我,决心开始写起来。

因为谁知道意外和明天哪个更早到来?

17年前你在做什么?

2020这个特别的假期里,你有没有一些特别的想法?

欢迎留言交流。

没有所谓的FlowPortal BPM绿色版

因为FlowPortal BPM加我微信的朋友日渐增多,但有不少抱着找安装文件,特别是破解版的想法。

自己不好意思说明,美其名曰绿色版。

统一回复一下,我没有。

请咨询问题、远程安装、培训或外包的朋友,先看一下这篇文字,以免耽误彼此的宝贵时间。

FlowPortal只是个BPM软件,工具是要被正确使用才能发挥价值!

跟老板学管理#1:内涵和外延

这本是逻辑学比较晦涩的概念,但有一位老板举了个例子,让我瞬间明白了其中的精要。

老板曾经管理的工厂每天需要40多人进行不良品检验,安排手下人设计制作自动检测的设备,中间细节老板也没管, 几个月过去了, 设备做出来了,但实际效果一直不理想。

为啥呢,因为这个不良的标准太难定义完整,自动识别不良的差错率一直挺高。最根本的问题是造成本来不良的没识别出来,弄成良品,卖给客户用在精密仪器里,一旦出问题就会巨额赔偿。

老板了解了细节后,直接让研发推倒重来。丢下一句话:方向不对,内涵和外延没分析好。

最终,研发改变思路,从检验不良改为检验合格,毕竟合格的标准由客户规定,也是有标准的,可以用最严格的标准来评定良品。这样做首先质量投诉的赔偿问题就解决了,其次可能因为各种原因检测不出来的良品还需要人工来检测,但90%以上的良品机器自动识别了,剩下不足10%全部人工来搞定,最终也节省了90%以上的人工成本。

如果是你,有如下两个选项,你会选哪个?

A、可能的巨额赔偿 + 无人工成品
B、没有质量投诉赔偿风险 + 90%的人工成本降低

内涵越大,外延就越小。

当我们明白这个差别,解决具体问题的时候,就可以灵活应用,多可以事半功倍。

#0011:提供DTcms4.旺财代码生成器免费版.20170926下载地址

去年写得这篇《旺财2018的618小福利》提到的DTcms4.旺财代码生成器免费版.20170926,当时文中写了加我微信索取,但后来免费发布到很多DTcms的QQ群,而文章没有更新,造成不少加我的朋友拉黑我,因为我没有发下载地址给他,而只是告诉他到DTcms的QQ群里面下载。

为避免更多朋友拉黑我,我决定做如下两件事情:

1、更新原来的文章,注明可以去QQ群索取,或到本文获取下载地址
2、写文本说明,并提供下载地址:http://download.cuiwenyuan.com/DTcms4.旺财代码生成器免费版.20170926.zip

如果您已经在使用DTcms,欢迎 购买付费版 与我一起共舞

DTcms5版本可在淘宝购买:https://item.taobao.com/item.htm?spm=a230r.1.14.13.51f476cb2Kotft&id=545213785654&ns=1&abbucket=14#detail

#0010:这半年来经受得住诱惑

有时候懂得多了,觉得自己的可以做得事情有很多,就会分散精力。

但一旦没有聚焦,结果就难免偏离预期。

虽然目前还没有达到预期,但这半年来如果未经受住这几个诱惑,那现状可能更惨。

这里记录下来,不是显摆,而是分享一下,在我们固有的认知视野之外,听一下来自市场的声音。

脸猪返利机器插件:2万元

脸猪返利机器人官方这么介绍自己:支持微信最新协议、支持QQ,支持自动发单、支持自动发送朋友圈、朋友圈点赞、评论,支持自动微信转账提现等!通通一个软件即可搞定!

脸猪返利机器人支持名片分享裂变、邀请好友裂变、防封设置、网站导购、订单提醒通知、群主提成、分群PID等强大功能,是专为淘客量打造的一款营销推广软件。

虽然这个插件技术上挺简单,.NET的插件编写,ORM用的开源的,表定义和接口也挺规范,示例插件可以直接反编译用于参考。但因为涉及到可能违法或用途不明,就果断放弃了。

QQLite插件:5000元

QQLite的官网介绍

QQLite是对QQ进行功能扩展的程序,在QQLite登录QQ号码后可以按照预先设定的一些指令自动完成某些任务,例如与好友进行交流,执行一些数据交互任务,实现QQ与网站的交互,常用插件等操作。QQLite可以为企业节省大量客服人员和时间,模拟人工应答,完成可以自己搭建客服系统。
QQLite是基于QQ2013正式版协议开发的一款QQ机器人,拥有QQ常用的功能,首款支持发送图片的机器人(PC版协议),拥有完善的插件机制,使用SkinSharp换肤组件,可以自由的变换界面。
QQLite的特色:首款支持发送图片的机器人、快如风——自动选择最快的服务器IP、提供多种风格皮肤供您选择、多线程超快反应、支持插件扩展

QQLite与同类产品相比有如下优势:

发送图片,史无前例,首个支持发送图片的机器人,单纯的文字太无聊啊,来点图片,聊天更生动,推销产品更吸引。
插件扩展,QQLite已经支持插件扩展了,不单止支持接口,还支持插件,完成的功能更强大。
千变万化皮肤,采用SkinSharp换肤组件,几十个皮肤任你换,总有一款你喜欢的。如果都不适合你,不怕我们提供工具让你自己定制属于自己的皮肤。
多线程超快反应,先进的后台处理技术,让您不必等待枯燥漫长的过程。多线程处理更迅速!

需求用了DTcms的系统搭建了Web前后端,现在需要对接里面的数据,做个查询的插件,有点像智能客服一样。微信公众号有个关键字回复功能,他想实现类似的功能。

正好那段时间也没有空,就推掉了。

BaaN ERP远程开发:2000-2500/天

其实这是我的本职工作,从2005年就开始干了,但是越干越不喜欢,因为BaaN ERP下面的开发,不同的版本,程序迁移和重用是个大问题。一直未找打一个很好的方案,重用代码和开发成果。

即便BaaN/LN里面可以将Program Script写成各种公用的dll,但是前端的Form还有Report其实很难迁移和重用,毕竟通过Export和Import进行迁移或者PMC导出来的东西,到不同的版本,兼容性是个问题。

一个月抽出四五天的周末,一万块就到手了。

可是我还是放弃了。

倾听来自市场的声音

其实还有一些朋友或者朋友的朋友要做些网站,简单的小系统开发,比如动态生成认证证书的PDF方便每个学员在线下载和印刷用途等。

还有一些想要付费问一些问题,学习一些东西,或者让我介绍几个人给他项目上用,介绍几个公司给他选型等。

最初我热情对待,但耗费太多时间,后来索性微信丢过去这篇文章《 找我培训、咨询(问问题)、外包、技术支持前,请先阅读 》,瞬间就筛选出真正匹配的人。

最后:鼓励自己,坚持聚焦

真正想做一件事情的时间,不求短暂的结果,其实会发现时间根本不够用。

加上我老婆作为前端,从市场上倾听需求和客户的声音,发现想做成一件事情,真得需要一个团队。

为未来10年布局,现在的每一步都需要脚踏实地,未来任重道远,自己给自己打气加油吧。