Subversion Repositories SmartDukaan

Rev

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

Rev 3386 Rev 3554
Line 2... Line 2...
2
Created on 10-May-2010
2
Created on 10-May-2010
3
 
3
 
4
@author: ashish
4
@author: ashish
5
'''
5
'''
6
from elixir import *
6
from elixir import *
7
from shop2020.model.v1.user.impl.Dataservice import Cart, Line, Address, User
7
from shop2020.model.v1.user.impl.Dataservice import Cart, Line, Address, User, Discount
8
from shop2020.thriftpy.model.v1.user.ttypes import CartStatus, LineStatus, ShoppingCartException,\
8
from shop2020.thriftpy.model.v1.user.ttypes import CartStatus, LineStatus, ShoppingCartException,\
9
    PromotionException
9
    PromotionException
10
import datetime
10
import datetime
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
 
Line 144... Line 144...
144
        raise ShoppingCartException(101, "item_id cannot be null")
144
        raise ShoppingCartException(101, "item_id cannot be null")
145
    cart = Cart.get_by(id = cart_id)
145
    cart = Cart.get_by(id = cart_id)
146
    if not cart:
146
    if not cart:
147
        raise ShoppingCartException(101, "no cart attached to this id")
147
        raise ShoppingCartException(101, "no cart attached to this id")
148
    item = get_line(item_id, cart_id, None, True)
148
    item = get_line(item_id, cart_id, None, True)
-
 
149
    count_deleted_discounts = delete_discounts_for_line(item)
149
    item.delete()
150
    item.delete()
150
    current_time = datetime.datetime.now()
151
    current_time = datetime.datetime.now()
151
    cart.updated_on = current_time
152
    cart.updated_on = current_time
152
    session.commit()
153
    session.commit()
153
 
154
 
-
 
155
def delete_discounts_for_line(item_line):
-
 
156
    count_deleted = Discount.query.filter_by(line = item_line).delete()
-
 
157
    session.commit()
-
 
158
    return count_deleted
-
 
159
 
-
 
160
def delete_discounts_from_cart(cart_id, cart = None):
-
 
161
    if cart is None:
-
 
162
        if cart_id is None:
-
 
163
            raise ShoppingCartException(101, 'cart_id and cart, both cannot be null')
-
 
164
        else:
-
 
165
            cart = Cart.get_by(id = cart_id)
-
 
166
    
-
 
167
    if cart.lines:
-
 
168
        for line in cart.lines:
-
 
169
            delete_discounts_for_line(line)
-
 
170
 
-
 
171
def save_discounts(discounts):
-
 
172
    if not discounts:
-
 
173
        raise ShoppingCartException(101, 'discounts be null')
-
 
174
    
-
 
175
    if len(discounts) > 0:
-
 
176
        cart = Cart.get_by(id = discounts[0].cart_id)
-
 
177
        
-
 
178
        for t_discount in discounts:
-
 
179
            line = Line.query.filter_by(cart = cart, item_id = t_discount.item_id).first()
-
 
180
            if line is not None:
-
 
181
                discount = Discount()
-
 
182
                discount.line = line
-
 
183
                discount.discount = t_discount.discount
-
 
184
                discount.quantity = t_discount.quantity
-
 
185
                session.commit()
-
 
186
            
154
def change_item_status(cart_id, item_id, status):
187
def change_item_status(cart_id, item_id, status):
155
    if not status:
188
    if not status:
156
        raise ShoppingCartException(101, "Status cannot be made null")
189
        raise ShoppingCartException(101, "Status cannot be made null")
157
    line = get_line(item_id, cart_id, None, True)
190
    line = get_line(item_id, cart_id, None, True)
158
    if line:
191
    if line:
Line 200... Line 233...
200
    
233
    
201
    #Resetting discounted price of each line in cart to Null
234
    #Resetting discounted price of each line in cart to Null
202
    for line in cart.lines:
235
    for line in cart.lines:
203
        line.discounted_price = None
236
        line.discounted_price = None
204
    
237
    
-
 
238
    delete_discounts_from_cart(cart = cart)
205
    cart.discounted_price = None
239
    cart.discounted_price = None
206
    cart.coupon_code = None
240
    cart.coupon_code = None
207
    session.commit()
241
    session.commit()
208
    
242
    
209
def commit_cart(cart_id, sessionSource, sessionTime):   
243
def commit_cart(cart_id, sessionSource, sessionTime):   
Line 235... Line 269...
235
    cart_lines = cart.lines
269
    cart_lines = cart.lines
236
    orders = []
270
    orders = []
237
    
271
    
238
    for line in cart_lines:
272
    for line in cart_lines:
239
        if line.line_status == LineStatus.LINE_ACTIVE:
273
        if line.line_status == LineStatus.LINE_ACTIVE:
-
 
274
            quantity_remaining_for_order = line.quantity
-
 
275
        
-
 
276
            for discount in line.discounts:
-
 
277
                i = 0
-
 
278
                while i < discount.quantity:
-
 
279
                    t_line_item = create_line_item(line.item_id, line.actual_price - discount.discount)
-
 
280
                    t_order = create_order(cart.user_id, cart.address_id, t_line_item)
-
 
281
                    orders.append(t_order)
-
 
282
                    i += 1
-
 
283
                quantity_remaining_for_order -= discount.quantity
-
 
284
            
240
            i = 0
285
            i = 0
241
            while i< line.quantity:
286
            while i < quantity_remaining_for_order:
242
                t_line_item = create_line_item(line.item_id, line.discounted_price)
287
                t_line_item = create_line_item(line.item_id, line.actual_price)
243
                t_order = create_order(cart.user_id, cart.address_id, t_line_item)
288
                t_order = create_order(cart.user_id, cart.address_id, t_line_item)
244
                orders.append(t_order)
289
                orders.append(t_order)
245
                i += 1
290
                i += 1
246
    return orders
291
    return orders
247
 
292
 
Line 270... Line 315...
270
    t_order.statusDescription = "Payment Pending"
315
    t_order.statusDescription = "Payment Pending"
271
    t_order.created_timestamp = to_java_date(datetime.datetime.now())
316
    t_order.created_timestamp = to_java_date(datetime.datetime.now())
272
    
317
    
273
    return t_order
318
    return t_order
274
        
319
        
275
def create_line_item(item_id, discounted_price):
320
def create_line_item(item_id, final_price):
276
    inventory_client = CatalogClient().get_client()
321
    inventory_client = CatalogClient().get_client()
277
    item = inventory_client.getItem(item_id)
322
    item = inventory_client.getItem(item_id)
278
    t_line_item = TLineItem()
323
    t_line_item = TLineItem()
279
    t_line_item.productGroup = item.productGroup
324
    t_line_item.productGroup = item.productGroup
280
    t_line_item.brand = item.brand
325
    t_line_item.brand = item.brand
Line 286... Line 331...
286
    t_line_item.model_name = item.modelName
331
    t_line_item.model_name = item.modelName
287
    t_line_item.extra_info = item.featureDescription
332
    t_line_item.extra_info = item.featureDescription
288
    t_line_item.item_id = item.id
333
    t_line_item.item_id = item.id
289
    t_line_item.quantity = 1
334
    t_line_item.quantity = 1
290
    
335
    
291
    if discounted_price is None or discounted_price == 0:
-
 
292
        t_line_item.unit_price = item.sellingPrice
-
 
293
        t_line_item.total_price = item.sellingPrice
-
 
294
    else:
-
 
295
        t_line_item.unit_price = discounted_price
336
    t_line_item.unit_price = final_price
296
        t_line_item.total_price = discounted_price
337
    t_line_item.total_price = final_price
297
    
338
    
298
    t_line_item.unit_weight = item.weight
339
    t_line_item.unit_weight = item.weight
299
    t_line_item.total_weight = item.weight
340
    t_line_item.total_weight = item.weight
300
    return t_line_item
341
    return t_line_item
301
    
342