最近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系列之二: DTO, Converter和Populator
從産品展示頁面談談Hybris系列之三:Hybris Service層介紹