浅谈SAP CRM和Hybris Commerce里的价格架构折扣
最近Jerry做了一个和价格折扣相关的原型项目,把学到的知识记录下来,以备将来查阅。
在这个原型项目里,我们用React-Native开发了一个移动应用,用户可以在手机上浏览SAP Hybris Commerce里的产品,然后下单。假设Jerry购买成功后,在朋友圈分享一张包含自己个人信息的二维码。Jerry的好友扫描二维码之后,到Hybris Commerce里下单购买同样的产品之后,Jerry就会收到一张优惠券。
这个场景其实和瑞幸咖啡的推广模式类似,我们也希望通过这个原型项目,证明SAP的产品,也能运行这些在国内很热门的互联网式的营销场景。
冷冷的冬夜,一盏孤灯,在女神的陪伴下,程序员静静地写着代码,这就是程序员的平淡生活。
]
Pricing(定价)在SAP任何产品里都从来不是一个简单的话题,无论是客户在实际业务处理中对定价策略使用场景的变化多端,还是SAP产品里定价引擎本身实现的复杂程度,都超出了很多从业者的想象。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5qD1MZi-1576919864243)(https://user-images.githubusercontent.com/58975336/71305930-ab980000-2415-11ea-96cc-bfc5e17d91ee.png)]
Jerry认识的一位在SAP德国总部工作的同事,从大学毕业起就在SAP ERP里做Pricing实现,做了20多年,从ERP Pricing一直做到现在的S/4HANA Pricing,而且将一直做下去,如果不出意外的话,我估计他做Pricing会做到在SAP退休。从这位同事身上,Jerry很容易联想起“德国制造”,“工匠精神”,“精益求精”这些关键词。
正所谓“没有对比就没有伤害”,同这些Pricing专家相比,Jerry对基于ABAP实现的SAP产品内的Pricing的掌握程度,仅仅停留在出了问题后,知道从哪里设置断点开始调试。这次在SAP Hybris Commerce上使用其Pricing功能,过程也是各种磕磕绊绊,还好得到了Kevin,Jonathan和Kate同学的大力帮助,这里表示感谢。
Pricing到底是什么?当一个新的业务文档(销售订单,服务订单,报价单)被创建出来时,我们期望系统能够基于已有的配置,针对某个特定的客户,自动计算出正确的价格信息,包括总价(Gross Price),折扣(Discount),额外费用(Surcharge)等等。
以基于ABAP技术栈实现的SAP CRM Pricing为例,“已有的配置”,在CRM里称为condition record,实际就是Pricing相关的各种配置表的条目。项目实施的时候,顾问根据某企业实际的计价场景,维护不同的condition record,在运行时,计价引擎会按照不同的优先级处理这些记录,有点类似ABAP编程语言里CASE ... WHEN XXX. WHEN YYY. WHEN OTHERS.这种处理思想。
如上图所示,SAP CRM里引入了一个叫做Pricing Procedure的逻辑概念,作为计价引擎的输入,统一关联了condition record等计价相关的信息。
通过销售组织,分销渠道,部门,Document Pricing Procedure和Customer Pricing Procedure这五个参数可以唯一确定一个Pricing Procedure:
上面的配置页面其实就是Pricing Procedure determination这个函数的五个输入参数,输出则就是匹配的Pricing procedure:
再来看Hybris Commerce的Pricing设计。在SAP官网上是这样介绍的:
由此可见,Hybris Commerce的Pricing引擎工作原理和SAP CRM类似,即预先在系统配置好满足各种条件的PriceRow(即SAP CRM的condition record), 然后在运行时,根据订单字段的实际内容,找到匹配的PriceRow.
SAP官网上给出的Pricing引擎工作流程图:
最后介绍Jerry在这个原型项目中用到的几种Hybris Commerce里常见的维护价格折扣的方法。
- 价格折扣组
在我们的原型项目里,给用户设计了一系列的任务。当用户完成了这些任务后,我们的React-Native应用会调用Hybris Commerce API,将这个用户分配到Hybris一个特定的用户折扣组里,组内用户在特定的时间段里可以享受某种购物优惠。
在BackofficeCustomer Discount Groups里创建折扣组:
在Discount菜单里维护一条8折的折扣记录:
新建一条PriceRow,将上述的Customer Discount Group和8折的折扣记录关联起来:
最后创建一个user Group,id为ambassador_discount, 这个组里的所有用户都能享受20%的折扣。
把之前创建的Customer Discount Group分配给这个User group:
当用户完成任务时,调用下图这个Commerce API,将其分配到折扣组里:
原价130.65元的商品,8折就是省26.13元. 下单时,观察到省掉了26.13元,说明8折优惠生效了。
- 使用Hybris Commerce的Promotion Rule实现价格折扣
新建一条Promotion Rule(促销规则):
Promotion的条件,设置成仅当客户购买Hybris商城里的数码相机时,才触发该促销规则:
再添加一条触发规则,这条规则和上面的规则逻辑上是AND的关系,即两条同时满足,才能享受折扣。
这条规则的类型是Qualifying coupons,即用户必须持有id为jerrycoupon的优惠券。
如果这两条规则都满足,在Actions区域维护优惠信息:享受10%的优惠
同样,当用户在我们的React-Native应用里同其好友互动,完成了我们指定的任务后,React-Native应用调用Hybris Commerce的Coupon API,将jerrycoupon这个优惠券分配给该用户。
这样该用户能在My Coupons界面看到自己完成任务后赢得的这个优惠券:
最后下单时,购买这个3607元的数码相机,节省了10%也就是360.7元。
在Hybris Commerce里要实现价格折扣,方法当然不仅限于本文介绍的这两种方式。要实现折扣效果,除了Price Row之外,我们还可以利用更加直接的DiscountRow,将产品和Discount记录关联起来。
最后同样能实现折扣效果:
希望这篇文章能帮助大家对SAP产品的Pricing设计和使用场景有个最基础的认识,感谢阅读。如果对我们开发的这个SAP Hybris Commerce同微信集成的原型感兴趣,可以联系Jerry.
更多阅读
从产品展示页面谈谈Hybris系列之三:Hybris Service层介绍
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
浅谈SAP CRM和Hybris Commerce里的价格架构折扣的更多相关文章
- 【公众号系列】浅谈SAP项目管理的技能
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[[公众号系列]浅谈SAP项目管理的技能 写 ...
- 【Fiori系列】浅谈SAP Fiori的设计美感与发展历程
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[Fiori系列]浅谈SAP Fiori的设计美 ...
- 使用代码获得Hybris Commerce里显示的产品图片
使用下面这个API去取Hybris Commerce系统里产品主数据的明细信息: https://:9002/rest/v2/electronics/products/300938?fields=FU ...
- 浅谈SAP Cloud for Sales 自动化
在Jerry还在本科进行计算机理论知识学习时,我曾经把软件开发里的质量工程师(Quality Engineer)理解成是每天只是简单地做着运行开发人员编写好的软件,如果发现问题,通知开发人员去修改这种 ...
- 浅谈Exgcd(扩展欧几里得)
我们已知,求最大公约数的方法: 求A,B两数的最大公约数,递归求解,递归边界是B==0. gcd(a,b)=gcd(b,a%b) 我们进一步来求Ax+By=Gcd(A,B)的解. 尝试套用欧几里得求法 ...
- 如何在Hybris commerce里创建一个media对象
进入backoffice的Media中心, 首先新建一个文件夹,用于存放即将创建的media对象: 取名为jerryimage: 然后创建一个新的media对象,取名jerryproductimage ...
- Linux CentOS下MySQL的安装配置之浅谈
前期必备安装:VMware虚拟机,CentOS镜像[注意:Linux下使用CentOS MySQL是不用在官网下载的,只需要配置就OK了] 下面开始正式操作: //CentOS安装MySQL之浅谈 ...
- 浅谈HTML5单页面架构(一)——requirejs + angular + angular-route
心血来潮,打算结合实际开发的经验,浅谈一下HTML5单页面App或网页的架构. 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验 ...
- ABAP Netweaver, Hybris Commerce和SAP 云平台的登录认证
ABAP Netweaver 在事务码SICF里选择一个服务,在明细页面对Procedure字段点击F1,查看Logon Procedure的帮助文档. 通过这个链接打开对应的帮助文档,可以看到下列七 ...
随机推荐
- (线性基)Operation
http://acm.hdu.edu.cn/showproblem.php?pid=6579 线性基https://blog.csdn.net/a_forever_dream/article/deta ...
- [CSP-S模拟测试]:棋盘(数学+高精度)
题目描述 在一个大小为$N\times N$的棋盘上,放置了$N$个黑色的棋子.并且,对于棋盘的每一行和每一列,有且只有一个棋子.现在,你的任务是再往棋盘上放置$N$个白色的棋子.显然,白色棋子不能与 ...
- web复制到剪切板js
web复制到剪切板 clipboard.js 好使!开源项目,下载地址: https://github.com/zenorocha/clipboard.js 使用方法: 引入 clipboard.mi ...
- Git学习及使用
一.认知git理论 1.git出现的背景 版本控制 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上 ...
- 快速测试端口的连通性(HTTP/HTTPS)
ping 仅限 80 端口,命令中无法指定端口: C:\Users\Administrator>ping kikakika.com 遗失对主机的连接. 正在 Ping kikakika.com ...
- HDU 2512 一卡通大冒险 (第二类斯特林数)
题目链接:HDU 2512 Problem Description 因为长期钻研算法, 无暇顾及个人问题,BUAA ACM/ICPC 训练小组的帅哥们大部分都是单身.某天,他们在机房商量一个绝妙的计划 ...
- 深入探讨vue响应式原理
现在是时候深入一下了!Vue 最独特的特性之一,是其非侵入性的响应式系统.数据模型仅仅是普通的 JavaScript 对象.而当你修改它们时,视图会进行更新.这使得状态管理非常简单直接,不过理解其工作 ...
- vuex基本使用
1.组件之间共享数据的方式 父向子传值:v-bind 属性绑定 子向父传值:v-on 事件绑定 兄弟组件之间共享数据:EventBus $on 接收数据的那个组件 $emit 发送数据的那个组件 2. ...
- 《JAVA设计模式》之命令模式(Command)
在阎宏博士的<JAVA与模式>一书中开头是这样描述命令(Command)模式的: 命令模式属于对象的行为模式.命令模式又称为行动(Action)模式或交易(Transaction)模式. ...
- [Python3 填坑] 014 类的常用魔术方法举例
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 __init__() 2.2 __new__() 2.3 __call__() 2.4 __str__() 2.5 __repr__() ...