-
Thành tích cộng dồn của các chương trình quà tặng type B được lưu vào table
gift_campaign_progresses. Mỗi record sẽ tương ứng với 1 chương trình và 1 khách hàng và bao gồm các data field liên quan tới số lượng, doanh số của các mã hàng liên quan đến chương trình (các mã hàng tronggift_condition_itemscủavariant_gift) và số giải thưởng ở các trạng thái khác nhau. -
Thành tích về doanh số (revenue) sẽ được tính dựa trên giá sau chiết khấu bao gồm thuế của mã hàng mua.
-
Mỗi
gift_campaign_progresssẽ có nhiềugift_campaign_progress_items, tương ứng với từnggift_condition_itemcủa chương trình mà KH đã chọn mua. Ví dụ chương trình yeu cầu mua 100c A, B, C để đạt quà. Khách đã mua 200A và 50B, thì sẽ có 2gift_campaign_progress_itemscho A và B, ghi nhận SL và DS đã mua cho 2 mã này. Vì mã C chưa đặt mua, nên sẽ ko có record tương ứng ==> chỉ tạo progress items khi khách đặt mua (hoặc đặt mã hàng vào giỏ hàng) để tránh tình trạng hàng loạt progress items được tạo nhưng ko dc sử dụng (đặc biệt là cho các chương trình với số condition items lên tới hàng trăm)
-
quantityvàrevenue: doanh số và số lượng đã đặt mua của các mã hàng liên quan. Đã đặt mua ở đây có nghĩa là nằm trong các đơn hàng đã đươc checkout (đã trải qua trạng tháichecked_outvà có timestampchecked_out_at) và KHÔNG ở trạng thái hủy (canceled) hay yêu cầu hủy (pending_cancellation). Giá trị field này tương đương với tổng giá trị fieldquantityvàrevenuecủa cácgift_campaign_progress_itemsliên quan. Khi các progress items bị thay đổi SL/DS, sẽ có callback để cập nhậtquantityvàrevenuecủa progress tương ứng. Ví dụ, chương trình mua 100A tặng 5B. Khách đã đặt mua 50A trong đơn hàng 1, và đơn hàng này đã được checkout, thìquantitycủagift_campaign_progresstương ứng sẽ là 50. Revenue tương ứng cũng sẽ được cập nhật. -
confirmed_quantityvàconfirmed_revenue: doanh số và số lượng đã xác nhận của các mã hàng mua liên quan. Đã xác nhận đây có nghĩa là các đơn hàng liên quan đã được xác nhận (đã trải qua trạng tháiconfirmedvà có timestampconfirmed_at) và KHÔNG ở trạng thái hủy hay yêu cầu hủy. Giá trị field này tương đương với tổng giá trị fieldconfirmed_quantityvàconfirmd_revenuecủa cácgift_campaign_progress_itemsliên quan. Khi các progress items bị thay đổi SL/DS, sẽ có callback để cập nhậtconfirmed_quantityvàconfirmed_revenuecủa progress tương ứng. Tiếp tục ví dụ trên, khách hàng mua tiếp 100A trong đơn hàng 2, thìquantitysẽ là 150, nhưngconfirmed_quantitylà 0 vì chưa đơn nào được xác nhận. Nếu đơn 1 được xác nhận, thìquantitysẽ là 150, vàconfirmed_quantitylà 50.
-
reward_times: Số giải thưởng đã đạt được dựa trênquantityvàrevenue. Tiếp tục ví dụ trên,reward_timesđây sẽ là 1, vì đã mua 150c, và chương trình yêu cầu mua 100c chô mỗi giải thưởng. Field này sẽ được tính toán dựa trênquantityhayrevenuetùy vào chương trình yêu cầu về SL hay DS. -
confirmed_rewards: Số giải thưởng đã xác nhận dựa trênconfirmed_quantityvàconfirmed_revenue. Tiếp tục ví dụ trên,confirmed_rewardssẽ là 0, vì chỉ mới có 50c đã được xác nhận, nên chưa đủ yêu cầu 100c của chương trinh. Field này dùng để xuất quà tăng riêng, nếu field này > 0 và số lần quà tặng đã chọn chưa đủ, thì chương trình sẽ được hiển thị ở tabQuản lý quà tặng->Đã đạt chưa xuấtcho khách xuất quà. -
checked_out_rewards: Số giải thưởng đã được xuất, tương đương với tổng fieldchecked_out_rewardscủa cácselected_giftsnằm ở trạng tháifinalized. Nghĩa là các gói quà được chọn, sau khi được xuất thành công, sẽ được phản ánh ở field này tronggift_campaign_progress. Nếu field này bằng vớiconfirmed_rewards, nghĩa là KH đã xuất hết các gói quà đã đạt được.
- Các field
unconfirmed_noncombinable_datavàconfirmed_noncombinable_datadùng để ghi nhận thành tích đã được sử dụng để xuất quà của các chương trình trong nhóm loại trừ (noncombinable). Khi tính toánreward_timesvàconfirmed_rewards, sẽ trừunconfirmed_noncombinable_datavàconfirmed_noncombinable_datara khỏi tổng SL/DS tương ứng.
-
Nhóm các chương trình noncombinable là các chương trình có chung 1
internal order(hay gọi tắt làIO, và trong tablevariant_giftsẽ là fieldsap_internal_order), nhưng khác nhau về yêu cầu SL, doanh số, và quà tặng. Chẳng hạn- Chương trình với ID là 1, IO 1234, yêu cầu mua 100c A, B, C được tăng 10D
- Chương trình với ID là 2, IO 1234, yêu cầu mua 200c A, B, C được tặng 30D
- Chương trình với ID là 3, IO 1234, yêu cầu mua 500c A, B, C được tặng 100D
-
3 chương trình này sẽ thuộc nhóm noncombinable với nhau, với field
noncombinablelàtrue. Trong đó, ctr ID 1 sẽ là parent, vì có yêu cầu nhỏ nhất, vànoncombinable_parent_idcủa ctr này sẽ lànil. Chương trình với ID 2 và 3 sẽ cónoncombinable_parent_idlà 1. -
Đối với các chương trình loại trừ, thành tích dùng để xuất quà của 1 chương trình sẽ không được tính vào các ctr còn lại. Ví dụ, theo như nhớm noncombinable trên, nếu KH mua dc 1000c, KH sẽ đạt dc 10 gói quà ID 1, 5 gói quà ID 2, và 2 gói quà ID 3. Nhưng nếu khách xuất 1 gói quà của chương trình thứ 3, tương ứng với sử dụng 500c hàng mua để đổi quà, thì các chương trình còn lại sẽ chỉ có thể lấy 500c còn lại chưa dùng đến để đổi quà. Như vậy, KH dc 5 gói quà ID 1, và 2 lần gói quà ID 2, và 1 gói quà ID 3 sau khi xuất 1 gói quà 500c.
-
Thành tích của các chương trình chung 1 nhóm noncombinable sẽ gióng nhau về mặt SL và DS, nhưng để đảm bảo tính loại trừ nói trên, thì phần thành tích đã được sử dụng để xuất quà sẽ được tính vào các field
noncombinable_datanhư sau:-
confirmed_noncombinable_data: Thành tích chòn quà đã xác nhận. Đây được dùng để tính toán thành tích trong modal chọn quà trên web. Tiếp tục ví dụ nhóm noncombinable ở trên, với trường hợp là khách đã mua 1000c, khi trong tab quà tặngđã đạt chưa xuâttrên AMPO, khi mở modal chọn quà lên và chọn gói quà 500c (ID 3), thì progress của chương trình ID 1 và 2 sẽ cập nhật fieldconfirmed_noncombinable_datalà 500. Như vậy,reward_timesvàconfirmed_reward_timescủa ctr 1 và 2, khi tính toán số giải thưởng đạt được, sẽ trừ giá trị ở fieldconfirmed_noncombinable_datanày (tức 500) ra khỏi tổng SL/DS đã mua/ đã xác nhận. -
unconfirmed_noncombinable_data: Thành tích chọn quà chưa xác nhận, dùng để ghi nhận SL/DS được dùng để chọn quà tặng kèm đơn mua cho các đơn mua chưa được xác nhận. Nếu field này có giá trị, thìreward_timessẽ trừ giá trị này ra khi tính toán số gói quà đạt dc (nhưng chưa xác nhận).
-