trex-model 1.6.4__tar.gz → 1.6.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of trex-model might be problematic. Click here for more details.
- {trex_model-1.6.4 → trex_model-1.6.6}/PKG-INFO +1 -1
- {trex_model-1.6.4 → trex_model-1.6.6}/setup.py +1 -1
- {trex_model-1.6.4 → trex_model-1.6.6}/trex_model.egg-info/PKG-INFO +1 -1
- {trex_model-1.6.4 → trex_model-1.6.6}/trex_model.egg-info/SOURCES.txt +1 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/customer_models.py +4 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/helper/reward_transaction_helper.py +15 -22
- trex_model-1.6.6/trexmodel/models/datastore/helper/sales_transaction_helpers.py +33 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/transaction_models.py +34 -149
- {trex_model-1.6.4 → trex_model-1.6.6}/LICENSE +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/MANIFEST.in +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/README.md +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/setup.cfg +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trex_model.egg-info/dependency_links.txt +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trex_model.egg-info/requires.txt +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trex_model.egg-info/top_level.txt +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/__init__.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/conf.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/__init__.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/__init__.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/admin_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/analytic_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/app_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/coporate_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/customer_model_helpers.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/fb_subsriber_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/helper/__init__.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/helper/reward_model_helpers.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/import_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/inventory_model.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/loyalty_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/lucky_draw_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/marketing_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/membership_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/merchant_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/merchant_promotion_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/message_model_helper.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/message_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/model_decorators.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/ndb_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/partnership_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/pos_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/prepaid_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/product_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/program_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/rating_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/recruit_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/redeem_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/redemption_catalogue_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/referral_program_model.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/reward_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/spending_base_program_model.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/system_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/task_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/test_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/user_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/voucher_models.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/merchant_helpers.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/model_decorator.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/prepaid_helpers.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/pos_conf.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/program_conf.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/utils/__init__.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/utils/gcloud/__init__.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/utils/gcloud/datastore_util.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/utils/model/__init__.py +0 -0
- {trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/utils/model/model_util.py +0 -0
|
@@ -57,6 +57,7 @@ trexmodel/models/datastore/voucher_models.py
|
|
|
57
57
|
trexmodel/models/datastore/helper/__init__.py
|
|
58
58
|
trexmodel/models/datastore/helper/reward_model_helpers.py
|
|
59
59
|
trexmodel/models/datastore/helper/reward_transaction_helper.py
|
|
60
|
+
trexmodel/models/datastore/helper/sales_transaction_helpers.py
|
|
60
61
|
trexmodel/utils/__init__.py
|
|
61
62
|
trexmodel/utils/gcloud/__init__.py
|
|
62
63
|
trexmodel/utils/gcloud/datastore_util.py
|
{trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/helper/reward_transaction_helper.py
RENAMED
|
@@ -19,14 +19,14 @@ from trexmodel.models.datastore.customer_model_helpers import update_customer_en
|
|
|
19
19
|
update_customer_entiteld_voucher_summary_with_customer_new_voucher,\
|
|
20
20
|
update_prepaid_summary_with_reverted_prepaid,\
|
|
21
21
|
update_reward_summary_with_reverted_reward
|
|
22
|
-
from trexanalytics.bigquery_upstream_data_config import
|
|
23
|
-
create_merchant_customer_transaction_upstream_for_merchant,\
|
|
22
|
+
from trexanalytics.bigquery_upstream_data_config import create_merchant_customer_transaction_upstream_for_merchant,\
|
|
24
23
|
create_merchant_customer_redemption_upstream_for_merchant,\
|
|
25
24
|
create_merchant_customer_prepaid_upstream_for_merchant,\
|
|
26
25
|
create_merchant_customer_redemption_reverted_upstream_for_merchant,\
|
|
27
26
|
create_revert_entitled_customer_voucher_upstream_for_merchant,\
|
|
28
27
|
create_redeemed_customer_voucher_to_upstream_for_merchant,\
|
|
29
|
-
create_merchant_sales_transaction_upstream_for_merchant
|
|
28
|
+
create_merchant_sales_transaction_upstream_for_merchant,\
|
|
29
|
+
create_merchant_customer_reward_upstream_for_merchant
|
|
30
30
|
from trexmodel.models.datastore.membership_models import MerchantTierMembership
|
|
31
31
|
from trexmodel.models.datastore.transaction_models import CustomerTransaction,\
|
|
32
32
|
SalesTransaction
|
|
@@ -152,11 +152,10 @@ def create_sales_transaction(transact_outlet=None, sales_amount=.0, tax_amount=.
|
|
|
152
152
|
transact_by = transact_by,
|
|
153
153
|
|
|
154
154
|
transact_datetime = transact_datetime,
|
|
155
|
-
promotion_code = promotion_code,
|
|
156
155
|
|
|
157
156
|
)
|
|
158
157
|
|
|
159
|
-
create_merchant_sales_transaction_upstream_for_merchant(sales_transaction,
|
|
158
|
+
create_merchant_sales_transaction_upstream_for_merchant(sales_transaction,)
|
|
160
159
|
|
|
161
160
|
return sales_transaction
|
|
162
161
|
|
|
@@ -772,7 +771,7 @@ def prepaid_payment_transaction(customer, redeem_outlet=None, reward_format=None
|
|
|
772
771
|
|
|
773
772
|
if customer_redemption:
|
|
774
773
|
create_payment_message(customer_redemption)
|
|
775
|
-
create_merchant_customer_redemption_upstream_for_merchant(customer_redemption,
|
|
774
|
+
create_merchant_customer_redemption_upstream_for_merchant(customer_redemption, )
|
|
776
775
|
|
|
777
776
|
return customer_redemption
|
|
778
777
|
|
|
@@ -832,7 +831,8 @@ def revert_transaction(transaction_details, reverted_by, reverted_datetime=None,
|
|
|
832
831
|
merchant_acct = transaction_details.transact_merchant_acct
|
|
833
832
|
transaction_id = transaction_details.transaction_id
|
|
834
833
|
customer_acct = transaction_details.transact_customer_acct
|
|
835
|
-
|
|
834
|
+
is_from_instant_transaction = transaction_details.is_from_instant_transaction
|
|
835
|
+
|
|
836
836
|
if transaction_details.is_membership_purchase:
|
|
837
837
|
#remove membership
|
|
838
838
|
|
|
@@ -942,18 +942,12 @@ def revert_transaction(transaction_details, reverted_by, reverted_datetime=None,
|
|
|
942
942
|
|
|
943
943
|
create_merchant_customer_transaction_upstream_for_merchant(transaction_details, Reverted=True)
|
|
944
944
|
|
|
945
|
-
if transaction_details.
|
|
945
|
+
if transaction_details.is_from_instant_transaction:
|
|
946
946
|
sales_transaction = SalesTransaction.get_by_transaction_id(transaction_id)
|
|
947
947
|
|
|
948
948
|
if sales_transaction:
|
|
949
|
-
sales_transaction.
|
|
950
|
-
sales_transaction.reverted_datetime = reverted_datetime
|
|
951
|
-
sales_transaction.reverted_by = reverted_by_key
|
|
952
|
-
sales_transaction.reverted_by_username = reverted_by.username
|
|
949
|
+
sales_transaction.used = False
|
|
953
950
|
sales_transaction.put()
|
|
954
|
-
|
|
955
|
-
create_merchant_sales_transaction_upstream_for_merchant(sales_transaction, Reverted=True)
|
|
956
|
-
|
|
957
951
|
|
|
958
952
|
if is_stamp_entitled_in_transaction or is_point_entitled_in_transaction or is_voucher_entitled_in_transaction or is_prepaid_entitled_in_transaction:
|
|
959
953
|
for p in reverting_point_details_list:
|
|
@@ -966,7 +960,7 @@ def revert_transaction(transaction_details, reverted_by, reverted_datetime=None,
|
|
|
966
960
|
|
|
967
961
|
customer_reward_summary = update_reward_summary_with_reverted_reward(customer_reward_summary, p.to_reward_summary())
|
|
968
962
|
if create_upstream:
|
|
969
|
-
|
|
963
|
+
create_merchant_customer_reward_upstream_for_merchant(transaction_details, p, Reverted=True)
|
|
970
964
|
|
|
971
965
|
|
|
972
966
|
for p in reverting_stamp_details_list:
|
|
@@ -979,7 +973,7 @@ def revert_transaction(transaction_details, reverted_by, reverted_datetime=None,
|
|
|
979
973
|
|
|
980
974
|
customer_reward_summary = update_reward_summary_with_reverted_reward(customer_reward_summary, p.to_reward_summary())
|
|
981
975
|
if create_upstream:
|
|
982
|
-
|
|
976
|
+
create_merchant_customer_reward_upstream_for_merchant(transaction_details, p, Reverted=True)
|
|
983
977
|
|
|
984
978
|
for p in reverting_vouchers_list:
|
|
985
979
|
if p.is_valid:
|
|
@@ -999,7 +993,7 @@ def revert_transaction(transaction_details, reverted_by, reverted_datetime=None,
|
|
|
999
993
|
|
|
1000
994
|
voucher_reward_brief = VoucherRewardDetailsForUpstreamData(voucher_key, 1, expiry_date, rewarded_datetime)
|
|
1001
995
|
if create_upstream:
|
|
1002
|
-
|
|
996
|
+
create_merchant_customer_reward_upstream_for_merchant(transaction_details, voucher_reward_brief, Reverted=True)
|
|
1003
997
|
|
|
1004
998
|
for p in reverting_prepaid_list:
|
|
1005
999
|
if p.is_valid:
|
|
@@ -1011,8 +1005,7 @@ def revert_transaction(transaction_details, reverted_by, reverted_datetime=None,
|
|
|
1011
1005
|
|
|
1012
1006
|
customer_prepaid_summary = update_prepaid_summary_with_reverted_prepaid(customer_prepaid_summary, p.to_prepaid_summary())
|
|
1013
1007
|
if create_upstream:
|
|
1014
|
-
|
|
1015
|
-
create_merchant_customer_reward_reverted_upstream_for_merchant(transaction_details, p, reverted_datetime)
|
|
1008
|
+
create_merchant_customer_prepaid_upstream_for_merchant(transaction_details, p, Reverted=True)
|
|
1016
1009
|
|
|
1017
1010
|
|
|
1018
1011
|
|
|
@@ -1198,8 +1191,8 @@ def create_topup_prepaid_transaction(customer, prepaid_program, topup_outlet=Non
|
|
|
1198
1191
|
update_customer_kpi_summary_and_transact_summary(customer, customer_transaction)
|
|
1199
1192
|
|
|
1200
1193
|
create_transaction_message(customer_transaction)
|
|
1201
|
-
create_merchant_customer_prepaid_upstream_for_merchant(customer_transaction, prepaid_topup_reward,
|
|
1202
|
-
create_merchant_customer_transaction_upstream_for_merchant(customer_transaction,
|
|
1194
|
+
create_merchant_customer_prepaid_upstream_for_merchant(customer_transaction, prepaid_topup_reward, )
|
|
1195
|
+
create_merchant_customer_transaction_upstream_for_merchant(customer_transaction, )
|
|
1203
1196
|
|
|
1204
1197
|
return (customer_transaction, prepaid_summary)
|
|
1205
1198
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'''
|
|
2
|
+
Created on 23 Jun 2025
|
|
3
|
+
|
|
4
|
+
@author: jacklok
|
|
5
|
+
'''
|
|
6
|
+
import logging
|
|
7
|
+
from datetime import datetime
|
|
8
|
+
from trexanalytics.bigquery_upstream_data_config import create_merchant_sales_transaction_upstream_for_merchant
|
|
9
|
+
|
|
10
|
+
#logger = logging.getLogger('helper')
|
|
11
|
+
logger = logging.getLogger('target_debug')
|
|
12
|
+
|
|
13
|
+
def revert_sales_transaction(transaction_details, reverted_by, reverted_datetime=None):
|
|
14
|
+
|
|
15
|
+
if transaction_details.is_revert==False and transaction_details.allow_to_revert and transaction_details.used==False:
|
|
16
|
+
logger.info('going to check for sales transaction revert')
|
|
17
|
+
|
|
18
|
+
if reverted_datetime is None:
|
|
19
|
+
reverted_datetime = datetime.utcnow()
|
|
20
|
+
|
|
21
|
+
if reverted_by:
|
|
22
|
+
transaction_details.reverted_by = reverted_by.create_ndb_key()
|
|
23
|
+
transaction_details.reverted_by_username = reverted_by.username
|
|
24
|
+
|
|
25
|
+
transaction_details.reverted_datetime = reverted_datetime
|
|
26
|
+
transaction_details.is_revert = True
|
|
27
|
+
transaction_details.put()
|
|
28
|
+
|
|
29
|
+
create_merchant_sales_transaction_upstream_for_merchant(transaction_details, Reverted=True)
|
|
30
|
+
|
|
31
|
+
else:
|
|
32
|
+
logger.error('Sales transaction is either reverted or not allow to revert or it has been claimed by customer')
|
|
33
|
+
raise Exception('Sales transaction is either reverted or not allow to revert or it has been claimed by customer')
|
|
@@ -185,29 +185,45 @@ class SalesTransaction(BaseNModel, DictModel):
|
|
|
185
185
|
|
|
186
186
|
return customer_transaction
|
|
187
187
|
|
|
188
|
-
@
|
|
189
|
-
def
|
|
188
|
+
@classmethod
|
|
189
|
+
def list_outlet_transaction(cls, transact_outlet, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False, reverse_order=True):
|
|
190
190
|
if reverse_order:
|
|
191
|
-
query =
|
|
191
|
+
query = cls.query(ndb.AND(cls.transact_outlet==transact_outlet.create_ndb_key())).order(-cls.transact_datetime)
|
|
192
192
|
else:
|
|
193
|
-
query =
|
|
193
|
+
query = cls.query(ndb.AND(cls.transact_outlet==transact_outlet.create_ndb_key())).order(cls.transact_datetime)
|
|
194
194
|
|
|
195
|
-
return
|
|
195
|
+
return cls.list_all_with_condition_query(query, offset=offset, limit=limit, start_cursor=start_cursor, return_with_cursor=return_with_cursor)
|
|
196
196
|
|
|
197
|
-
@
|
|
198
|
-
def
|
|
199
|
-
query =
|
|
197
|
+
@classmethod
|
|
198
|
+
def count_outlet_transaction(cls, transact_outlet, limit=conf.MAX_FETCH_RECORD):
|
|
199
|
+
query = cls.query(ndb.AND(cls.transact_outlet==transact_outlet.create_ndb_key()))
|
|
200
200
|
|
|
201
|
-
return
|
|
201
|
+
return cls.count_with_condition_query(query, limit=limit)
|
|
202
202
|
|
|
203
|
-
|
|
204
|
-
|
|
203
|
+
|
|
204
|
+
@classmethod
|
|
205
|
+
def list_merchant_transaction(cls, transact_merchant, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False, reverse_order=True):
|
|
206
|
+
if reverse_order:
|
|
207
|
+
query = cls.query(ndb.AND(cls.transact_merchant==transact_merchant.create_ndb_key()))
|
|
208
|
+
else:
|
|
209
|
+
query = cls.query(ndb.AND(cls.transact_merchant==transact_merchant.create_ndb_key()))
|
|
210
|
+
|
|
211
|
+
return cls.list_all_with_condition_query(query, offset=offset, limit=limit, start_cursor=start_cursor, return_with_cursor=return_with_cursor)
|
|
212
|
+
|
|
213
|
+
@classmethod
|
|
214
|
+
def count_by_merchant(cls, transact_merchant, limit=conf.MAX_FETCH_RECORD):
|
|
215
|
+
query = cls.query(ndb.AND(cls.transact_merchant==transact_merchant.create_ndb_key()))
|
|
216
|
+
|
|
217
|
+
return cls.count_with_condition_query(query, limit)
|
|
218
|
+
|
|
219
|
+
@classmethod
|
|
220
|
+
def list(cls, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False, reverse_order=True):
|
|
205
221
|
if reverse_order:
|
|
206
|
-
query =
|
|
222
|
+
query = cls.query().order(-cls.transact_datetime)
|
|
207
223
|
else:
|
|
208
|
-
query =
|
|
224
|
+
query = cls.query().order(cls.transact_datetime)
|
|
209
225
|
|
|
210
|
-
return
|
|
226
|
+
return cls.list_all_with_condition_query(query, offset=offset, limit=limit, start_cursor=start_cursor, return_with_cursor=return_with_cursor)
|
|
211
227
|
|
|
212
228
|
@classmethod
|
|
213
229
|
def list_transaction_by_date(cls, transact_date, transact_outlet=None, including_reverted_transaction=True, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False):
|
|
@@ -332,7 +348,7 @@ class CustomerTransaction(SalesTransaction):
|
|
|
332
348
|
'transact_datetime', 'created_datetime', 'transact_outlet_key', 'is_revert', 'reverted_datetime', 'reverted_by_username',
|
|
333
349
|
'transact_by', 'transact_by_username', 'is_reward_redeemed', 'is_sales_transaction', 'allow_to_revert',
|
|
334
350
|
'is_membership_purchase', 'purchased_merchant_membership_key', 'is_tier_membership_upgraded', 'upgraded_merchant_tier_membership_key',
|
|
335
|
-
'is_rating_review_enabled', 'promotion_code', 'is_partner_transaction',
|
|
351
|
+
'is_rating_review_enabled', 'promotion_code', 'is_partner_transaction', 'is_from_instant_transaction',
|
|
336
352
|
]
|
|
337
353
|
|
|
338
354
|
def to_transaction_details_json(self):
|
|
@@ -511,9 +527,9 @@ class CustomerTransaction(SalesTransaction):
|
|
|
511
527
|
|
|
512
528
|
transact_datetime = sales_transaction.transact_datetime,
|
|
513
529
|
is_from_instant_transaction = True,
|
|
514
|
-
is_rating_review_enabled = is_rating_review_enabled
|
|
530
|
+
is_rating_review_enabled = is_rating_review_enabled,
|
|
515
531
|
#is_sales_transaction = True,
|
|
516
|
-
|
|
532
|
+
allow_to_revert = False,
|
|
517
533
|
#is_membership_purchase = False,
|
|
518
534
|
#is_membership_renew = False,
|
|
519
535
|
#purchased_merchant_membership = False,
|
|
@@ -589,105 +605,7 @@ class CustomerTransaction(SalesTransaction):
|
|
|
589
605
|
#customer.put()
|
|
590
606
|
|
|
591
607
|
return customer_transaction
|
|
592
|
-
|
|
593
|
-
def revert(self, customer_acct, reverted_by):
|
|
594
|
-
transaction_id = self.transaction_id
|
|
595
|
-
|
|
596
|
-
entitled_point_details_list = CustomerPointReward.list_by_transaction_id(transaction_id)
|
|
597
|
-
|
|
598
|
-
entitled_stamp_details_list = CustomerStampReward.list_by_transaction_id(transaction_id)
|
|
599
|
-
|
|
600
|
-
entiteld_vouchers_list = CustomerEntitledVoucher.list_by_transaction_id(transaction_id)
|
|
601
|
-
|
|
602
|
-
entitled_prepaid_list = CustomerPrepaidReward.list_by_transaction_id(transaction_id)
|
|
603
|
-
|
|
604
|
-
is_transaction_reward_used = False
|
|
605
|
-
|
|
606
|
-
customer_reward_summary = customer_acct.reward_summary or {}
|
|
607
|
-
entitled_voucher_summary = customer_acct.entitled_voucher_summary or {}
|
|
608
|
-
|
|
609
|
-
logger.debug('revert: transaction_id=%s', transaction_id)
|
|
610
|
-
logger.debug('revert: entitled_point_details_list count=%s', len(entitled_point_details_list))
|
|
611
|
-
logger.debug('revert: entitled_stamp_details_list count=%s', len(entitled_stamp_details_list))
|
|
612
|
-
logger.debug('revert: entiteld_vouchers_list count=%s', len(entiteld_vouchers_list))
|
|
613
|
-
|
|
614
|
-
for p in entitled_point_details_list:
|
|
615
|
-
if p.is_used:
|
|
616
|
-
is_transaction_reward_used = True
|
|
617
|
-
break
|
|
618
|
-
|
|
619
|
-
if is_transaction_reward_used is False:
|
|
620
|
-
for p in entitled_stamp_details_list:
|
|
621
|
-
if p.is_used:
|
|
622
|
-
is_transaction_reward_used = True
|
|
623
|
-
break
|
|
624
|
-
|
|
625
|
-
if is_transaction_reward_used is False:
|
|
626
|
-
for p in entiteld_vouchers_list:
|
|
627
|
-
if p.is_used:
|
|
628
|
-
is_transaction_reward_used = True
|
|
629
|
-
break
|
|
630
|
-
|
|
631
|
-
logger.debug('revert: is_transaction_reward_used=%s', is_transaction_reward_used)
|
|
632
|
-
|
|
633
|
-
if is_transaction_reward_used is False:
|
|
634
|
-
|
|
635
|
-
logger.debug('Going to revert transqction')
|
|
636
|
-
reverted_by_key = reverted_by.create_ndb_key()
|
|
637
|
-
|
|
638
|
-
reverted_datetime = datetime.now()
|
|
639
|
-
self.is_revert = True
|
|
640
|
-
self.reverted_datetime = reverted_datetime
|
|
641
|
-
self.reverted_by = reverted_by_key
|
|
642
|
-
self.reverted_by_username = reverted_by.username
|
|
643
|
-
self.put()
|
|
644
|
-
|
|
645
|
-
for p in entitled_point_details_list:
|
|
646
|
-
if p.is_valid:
|
|
647
|
-
customer_reward_summary = update_reward_summary_with_reverted_reward(customer_reward_summary, p.to_reward_summary())
|
|
648
|
-
p.status = program_conf.REWARD_STATUS_REVERTED
|
|
649
|
-
p.reverted_datetime = reverted_datetime
|
|
650
|
-
p.reverted_by = reverted_by_key
|
|
651
|
-
p.reverted_by_username = reverted_by.username
|
|
652
|
-
p.put()
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
for p in entitled_stamp_details_list:
|
|
656
|
-
if p.is_valid:
|
|
657
|
-
customer_reward_summary = update_reward_summary_with_reverted_reward(customer_reward_summary, p.to_reward_summary())
|
|
658
|
-
p.status = program_conf.REWARD_STATUS_REVERTED
|
|
659
|
-
p.reverted_datetime = reverted_datetime
|
|
660
|
-
p.reverted_by = reverted_by_key
|
|
661
|
-
p.reverted_by_username = reverted_by.username
|
|
662
|
-
p.put()
|
|
663
|
-
|
|
664
|
-
for p in entiteld_vouchers_list:
|
|
665
|
-
if p.is_valid:
|
|
666
|
-
p.status = program_conf.REWARD_STATUS_REVERTED
|
|
667
|
-
p.reverted_datetime = reverted_datetime
|
|
668
|
-
p.reverted_by = reverted_by_key
|
|
669
|
-
p.reverted_by_username = reverted_by.username
|
|
670
|
-
p.put()
|
|
671
|
-
|
|
672
|
-
entitled_voucher_summary = update_customer_entiteld_voucher_summary_after_reverted_voucher(entitled_voucher_summary, p)
|
|
673
|
-
|
|
674
|
-
updated_voucher_summary = {}
|
|
675
|
-
|
|
676
|
-
logger.debug('revert transaction debug: entitled_voucher_summary=%s', entitled_voucher_summary)
|
|
677
|
-
|
|
678
|
-
for voucher_key, details in entitled_voucher_summary.items():
|
|
679
|
-
if len(details.get('redeem_info_list'))>0:
|
|
680
|
-
updated_voucher_summary[voucher_key] = details
|
|
681
|
-
|
|
682
|
-
customer_acct.reward_summary = customer_reward_summary
|
|
683
|
-
customer_acct.entitled_voucher_summary = updated_voucher_summary or {}
|
|
684
|
-
customer_acct.put()
|
|
685
|
-
|
|
686
|
-
return True
|
|
687
|
-
|
|
688
|
-
else:
|
|
689
|
-
raise Exception('Transaction reward have been used')
|
|
690
|
-
'''
|
|
608
|
+
|
|
691
609
|
@staticmethod
|
|
692
610
|
def list_customer_transaction(customer_acct, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False, reverse_order=True, keys_only=False):
|
|
693
611
|
if keys_only:
|
|
@@ -706,45 +624,12 @@ class CustomerTransaction(SalesTransaction):
|
|
|
706
624
|
query = CustomerTransaction.query(ancestor = customer_acct.create_ndb_key())
|
|
707
625
|
CustomerTransaction.delete_multiples(query)
|
|
708
626
|
|
|
709
|
-
@staticmethod
|
|
710
|
-
def list(offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False, reverse_order=True):
|
|
711
|
-
if reverse_order:
|
|
712
|
-
query = CustomerTransaction.query().order(-CustomerTransaction.transact_datetime)
|
|
713
|
-
else:
|
|
714
|
-
query = CustomerTransaction.query().order(CustomerTransaction.transact_datetime)
|
|
715
|
-
|
|
716
|
-
return CustomerTransaction.list_all_with_condition_query(query, offset=offset, limit=limit, start_cursor=start_cursor, return_with_cursor=return_with_cursor)
|
|
717
|
-
|
|
718
|
-
@staticmethod
|
|
719
|
-
def list_outlet_transaction(transact_outlet, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False, reverse_order=True):
|
|
720
|
-
if reverse_order:
|
|
721
|
-
query = CustomerTransaction.query(ndb.AND(CustomerTransaction.transact_outlet==transact_outlet.create_ndb_key())).order(-CustomerTransaction.transact_datetime)
|
|
722
|
-
else:
|
|
723
|
-
query = CustomerTransaction.query(ndb.AND(CustomerTransaction.transact_outlet==transact_outlet.create_ndb_key())).order(CustomerTransaction.transact_datetime)
|
|
724
|
-
|
|
725
|
-
return CustomerTransaction.list_all_with_condition_query(query, offset=offset, limit=limit, start_cursor=start_cursor, return_with_cursor=return_with_cursor)
|
|
726
|
-
|
|
727
|
-
@staticmethod
|
|
728
|
-
def list_merchant_transaction(transact_merchant, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False, reverse_order=True):
|
|
729
|
-
if reverse_order:
|
|
730
|
-
query = CustomerTransaction.query(ndb.AND(CustomerTransaction.transact_merchant==transact_merchant.create_ndb_key()))
|
|
731
|
-
else:
|
|
732
|
-
query = CustomerTransaction.query(ndb.AND(CustomerTransaction.transact_merchant==transact_merchant.create_ndb_key()))
|
|
733
|
-
|
|
734
|
-
return CustomerTransaction.list_all_with_condition_query(query, offset=offset, limit=limit, start_cursor=start_cursor, return_with_cursor=return_with_cursor)
|
|
735
|
-
|
|
736
627
|
@staticmethod
|
|
737
628
|
def count_valid_customer_transaction(customer_acct, limit=conf.MAX_FETCH_RECORD):
|
|
738
629
|
query = CustomerTransaction.query(ndb.AND(CustomerTransaction.is_revert==False), ancestor = customer_acct.create_ndb_key())
|
|
739
630
|
|
|
740
631
|
return CustomerTransaction.count_with_condition_query(query, limit=limit)
|
|
741
632
|
|
|
742
|
-
@staticmethod
|
|
743
|
-
def count_outlet_transaction(transact_outlet, limit=conf.MAX_FETCH_RECORD):
|
|
744
|
-
query = CustomerTransaction.query(ndb.AND(CustomerTransaction.transact_outlet==transact_outlet.create_ndb_key()))
|
|
745
|
-
|
|
746
|
-
return CustomerTransaction.count_with_condition_query(query, limit=limit)
|
|
747
|
-
|
|
748
633
|
@staticmethod
|
|
749
634
|
def list_valid_customer_transaction(customer_acct, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False):
|
|
750
635
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/helper/reward_model_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/merchant_promotion_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/redemption_catalogue_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trex_model-1.6.4 → trex_model-1.6.6}/trexmodel/models/datastore/spending_base_program_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|