Subversion Repositories SmartDukaan

Rev

Rev 5293 | Rev 5345 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5293 Rev 5326
Line 11... Line 11...
11
from shop2020.utils.Utils import to_py_date, to_java_date
11
from shop2020.utils.Utils import to_py_date, to_java_date
12
 
12
 
13
from shop2020.thriftpy.model.v1.order.ttypes import Transaction as TTransaction,\
13
from shop2020.thriftpy.model.v1.order.ttypes import Transaction as TTransaction,\
14
    TransactionStatus as TTransactionStatus, Order as TOrder, LineItem as TLineItem, OrderStatus 
14
    TransactionStatus as TTransactionStatus, Order as TOrder, LineItem as TLineItem, OrderStatus 
15
 
15
 
16
from shop2020.thriftpy.model.v1.catalog.ttypes import Item as TItem
-
 
17
from shop2020.thriftpy.logistics.ttypes import LogisticsInfo as TLogisticsInfo,\
16
from shop2020.thriftpy.logistics.ttypes import LogisticsServiceException, DeliveryType
18
    LogisticsServiceException, DeliveryType
-
 
19
 
17
 
20
from shop2020.clients.TransactionClient import TransactionClient
18
from shop2020.clients.TransactionClient import TransactionClient
21
from shop2020.clients.CatalogClient import CatalogClient
19
from shop2020.clients.CatalogClient import CatalogClient
22
from shop2020.clients.LogisticsClient import LogisticsClient
20
from shop2020.clients.LogisticsClient import LogisticsClient
23
from shop2020.model.v1 import user
21
from shop2020.model.v1 import user
24
from shop2020.clients.PromotionClient import PromotionClient
22
from shop2020.clients.PromotionClient import PromotionClient
25
from shop2020.model.v1.user.impl import UserDataAccessors
-
 
26
 
23
 
27
def get_cart(user_id):
24
def get_cart(userId):
28
    query = Cart.query.filter_by(user_id=user_id)      
25
    user = User.get_by(id=userId)
29
    query = query.filter_by(cart_status = CartStatus.ACTIVE)
-
 
30
    try:
-
 
31
        cart = query.first()
-
 
32
    except:
-
 
33
        return None
-
 
34
#        raise ShoppingCartException(101, "Cart does not exist")
-
 
35
    return cart
26
    return user.active_cart
36
 
27
 
37
def get_cart_by_id(id):
28
def get_cart_by_id(id):
38
    cart = Cart.get_by(id=id)
29
    cart = Cart.get_by(id=id)
39
    return cart
30
    return cart
40
 
31
 
41
def create_cart(user_id):
32
def create_cart():
42
    cart = get_cart(user_id)
-
 
43
    if not cart: 
-
 
44
        cart = Cart()
33
    cart = Cart()
45
        cart.user_id = user_id
-
 
46
        cart.created_on = datetime.datetime.now()
34
    cart.created_on = datetime.datetime.now()
47
        cart.updated_on = datetime.datetime.now()
35
    cart.updated_on = datetime.datetime.now()
48
        cart.cart_status = CartStatus.ACTIVE
36
    cart.cart_status = CartStatus.ACTIVE
49
        session.commit()
-
 
50
    return cart
37
    return cart
51
 
38
 
52
def get_cart_by_user_id_and_status(user_id, status):
-
 
53
    query = Cart.query.filter_by(user_id=user_id)
-
 
54
    if status:
-
 
55
        query = query.filter_by(cart_status=status)
-
 
56
    carts = query.all()
-
 
57
    return carts
-
 
58
 
-
 
59
def get_carts_by_status(status):
-
 
60
    return Cart.query.filter_by(cart_status=status).all()
-
 
61
 
-
 
62
def get_carts_between(start_time, end_time, status):
39
def get_carts_between(start_time, end_time, status):
63
    init_time = to_py_date(start_time)
40
    init_time = to_py_date(start_time)
64
    finish_time = to_py_date(end_time)
41
    finish_time = to_py_date(end_time)
65
    
42
    
66
    query = Cart.query
43
    query = Cart.query
Line 92... Line 69...
92
        else:
69
        else:
93
            return query.all()
70
            return query.all()
94
    except:
71
    except:
95
        return None
72
        return None
96
 
73
 
97
def change_cart_status(cart_id, status):
-
 
98
    cart = get_cart_by_id(id)
-
 
99
    if not cart:
-
 
100
        raise ShoppingCartException(101, "no cart attached to this id")
-
 
101
    if not status:
-
 
102
        raise ShoppingCartException(101, "invalid status")
-
 
103
    cart.cart_status = status
-
 
104
    session.commit()
-
 
105
    
-
 
106
def add_item_to_cart(cart_id, item_id, quantity, sourceId):
74
def add_item_to_cart(cart_id, item_id, quantity, sourceId):
107
    if not item_id:
75
    if not item_id:
108
        raise ShoppingCartException(101, "item_id cannot be null")
76
        raise ShoppingCartException(101, "item_id cannot be null")
109
    
77
    
110
    if not quantity:
78
    if not quantity:
Line 182... Line 150...
182
                discount.line = line
150
                discount.line = line
183
                discount.discount = t_discount.discount
151
                discount.discount = t_discount.discount
184
                discount.quantity = t_discount.quantity
152
                discount.quantity = t_discount.quantity
185
                session.commit()
153
                session.commit()
186
            
154
            
187
def change_item_status(cart_id, item_id, status):
-
 
188
    if not status:
-
 
189
        raise ShoppingCartException(101, "Status cannot be made null")
-
 
190
    line = get_line(item_id, cart_id, None, True)
-
 
191
    if line:
-
 
192
        line.line_status = status
-
 
193
        current_time = datetime.datetime.now()
-
 
194
        line.updated_on = current_time
-
 
195
        line.cart.updated_on = current_time
-
 
196
        session.commit()
-
 
197
    else:
-
 
198
        raise ShoppingCartException(101, "Unable to probe the line you desired")
-
 
199
    
-
 
200
def add_address_to_cart(cart_id, address_id):
155
def add_address_to_cart(cart_id, address_id):
201
    if not cart_id:
156
    if not cart_id:
202
        raise ShoppingCartException(101, "cart id cannot be made null")
157
        raise ShoppingCartException(101, "cart id cannot be made null")
203
    
158
    
204
    if not address_id:
159
    if not address_id:
Line 238... Line 193...
238
    delete_discounts_from_cart(cart.id, cart=cart)
193
    delete_discounts_from_cart(cart.id, cart=cart)
239
    cart.discounted_price = None
194
    cart.discounted_price = None
240
    cart.coupon_code = None
195
    cart.coupon_code = None
241
    session.commit()
196
    session.commit()
242
    
197
    
243
def commit_cart(cart_id, sessionSource, sessionTime, firstSource, firstSourceTime):   
198
def commit_cart(cart_id, sessionSource, sessionTime, firstSource, firstSourceTime, userId):   
244
    cart = get_cart_by_id(cart_id)   
199
    cart = get_cart_by_id(cart_id)   
245
    #now we have a cart. Need to create a transaction with it
200
    #now we have a cart. Need to create a transaction with it
246
    txn = TTransaction()
201
    txn = TTransaction()
247
    txn.shoppingCartid = cart_id
202
    txn.shoppingCartid = cart_id
248
    txn.customer_id = cart.user_id
203
    txn.customer_id = userId
249
    txn.createdOn = to_java_date(datetime.datetime.now())
204
    txn.createdOn = to_java_date(datetime.datetime.now())
250
    txn.transactionStatus = TTransactionStatus.INIT
205
    txn.transactionStatus = TTransactionStatus.INIT
251
    txn.statusDescription = "New Order"
206
    txn.statusDescription = "New Order"
252
    txn.coupon_code = cart.coupon_code
207
    txn.coupon_code = cart.coupon_code
253
    txn.sessionSource = sessionSource
208
    txn.sessionSource = sessionSource
254
    txn.sessionStartTime = sessionTime
209
    txn.sessionStartTime = sessionTime
255
    txn.firstSource = firstSource
210
    txn.firstSource = firstSource
256
    txn.firstSourceTime = firstSourceTime
211
    txn.firstSourceTime = firstSourceTime
257
    
212
    
258
    txn.orders = create_orders(cart)
213
    txn.orders = create_orders(cart, userId)
259
    
214
    
260
    transaction_client = TransactionClient().get_client()
215
    transaction_client = TransactionClient().get_client()
261
    txn_id = transaction_client.createTransaction(txn)
216
    txn_id = transaction_client.createTransaction(txn)
262
    session.commit()
217
    session.commit()
263
    
218
    
264
    #new_cart = create_cart(cart.user_id)
-
 
265
    #user = User.get_by(id=cart.user_id)
-
 
266
    #user.active_cart_id = new_cart.id
-
 
267
    #session.commit()
-
 
268
    return txn_id
219
    return txn_id
269
 
220
 
270
def create_orders(cart):
221
def create_orders(cart, userId):
271
    cart_lines = cart.lines
222
    cart_lines = cart.lines
272
    orders = []
223
    orders = []
273
    
224
    
274
    for line in cart_lines:
225
    for line in cart_lines:
275
        if line.line_status == LineStatus.LINE_ACTIVE:
226
        if line.line_status == LineStatus.LINE_ACTIVE:
Line 277... Line 228...
277
        
228
        
278
            for discount in line.discounts:
229
            for discount in line.discounts:
279
                i = 0
230
                i = 0
280
                while i < discount.quantity:
231
                while i < discount.quantity:
281
                    t_line_item = create_line_item(line.item_id, line.actual_price - discount.discount)
232
                    t_line_item = create_line_item(line.item_id, line.actual_price - discount.discount)
282
                    t_order = create_order(cart.user_id, cart.address_id, t_line_item)
233
                    t_order = create_order(userId, cart.address_id, t_line_item)
283
                    orders.append(t_order)
234
                    orders.append(t_order)
284
                    i += 1
235
                    i += 1
285
                quantity_remaining_for_order -= discount.quantity
236
                quantity_remaining_for_order -= discount.quantity
286
            
237
            
287
            i = 0
238
            i = 0
288
            while i < quantity_remaining_for_order:
239
            while i < quantity_remaining_for_order:
289
                t_line_item = create_line_item(line.item_id, line.actual_price)
240
                t_line_item = create_line_item(line.item_id, line.actual_price)
290
                t_order = create_order(cart.user_id, cart.address_id, t_line_item)
241
                t_order = create_order(userId, cart.address_id, t_line_item)
291
                orders.append(t_order)
242
                orders.append(t_order)
292
                i += 1
243
                i += 1
293
    return orders
244
    return orders
294
 
245
 
295
def create_order(user_id, address_id, t_line_item):
246
def create_order(userId, address_id, t_line_item):
296
    user = User.get_by(id=user_id)
247
    user = User.get_by(id=userId)
297
    address = Address.get_by(id=address_id)
248
    address = Address.get_by(id=address_id)
298
    t_order = TOrder()
249
    t_order = TOrder()
299
    
250
    
300
    t_order.customer_id = user.id
251
    t_order.customer_id = user.id
301
    t_order.customer_email = user.email
252
    t_order.customer_email = user.email