-
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_items
củ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_progress
sẽ có nhiềugift_campaign_progress_items
, tương ứng với từnggift_condition_item
củ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_items
cho 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)
-
quantity
và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_out
và 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ị fieldquantity
vàrevenue
của cácgift_campaign_progress_items
liên quan. Khi các progress items bị thay đổi SL/DS, sẽ có callback để cập nhậtquantity
vàrevenue
củ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ìquantity
củagift_campaign_progress
tương ứng sẽ là 50. Revenue tương ứng cũng sẽ được cập nhật. -
confirmed_quantity
và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áiconfirmed
và 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_quantity
vàconfirmd_revenue
của cácgift_campaign_progress_items
liên quan. Khi các progress items bị thay đổi SL/DS, sẽ có callback để cập nhậtconfirmed_quantity
vàconfirmed_revenue
củ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ìquantity
sẽ là 150, nhưngconfirmed_quantity
là 0 vì chưa đơn nào được xác nhận. Nếu đơn 1 được xác nhận, thìquantity
sẽ là 150, vàconfirmed_quantity
là 50.
-
reward_times
: Số giải thưởng đã đạt được dựa trênquantity
và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ênquantity
hayrevenue
tù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_quantity
vàconfirmed_revenue
. Tiếp tục ví dụ trên,confirmed_rewards
sẽ 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ất
cho 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_rewards
của cácselected_gifts
nằ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_data
vàconfirmed_noncombinable_data
dù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_times
vàconfirmed_rewards
, sẽ trừunconfirmed_noncombinable_data
vàconfirmed_noncombinable_data
ra 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_gift
sẽ 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
noncombinable
làtrue
. Trong đó, ctr ID 1 sẽ là parent, vì có yêu cầu nhỏ nhất, vànoncombinable_parent_id
của ctr này sẽ lànil
. Chương trình với ID 2 và 3 sẽ cónoncombinable_parent_id
là 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_data
như 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ât
trê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_data
là 500. Như vậy,reward_times
vàconfirmed_reward_times
của ctr 1 và 2, khi tính toán số giải thưởng đạt được, sẽ trừ giá trị ở fieldconfirmed_noncombinable_data
nà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_times
sẽ 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).
-