Subversion Repositories SmartDukaan

Rev

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

Rev 1627 Rev 1730
Line 148... Line 148...
148
            logistics_client = LogisticsClient().get_client()
148
            logistics_client = LogisticsClient().get_client()
149
            #FIXME line item is only one now. If multiple will come, need to fix.
149
            #FIXME line item is only one now. If multiple will come, need to fix.
150
            item_id = order.lineitems[0].item_id
150
            item_id = order.lineitems[0].item_id
151
            logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, item_id)
151
            logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, item_id)
152
            
152
            
-
 
153
            current_time = datetime.datetime.now()
-
 
154
            logistics_info.deliveryTime = adjust_delivery_time(current_time, logistics_info.deliveryTime)
-
 
155
            
153
            order.warehouse_id = logistics_info.warehouseId
156
            order.warehouse_id = logistics_info.warehouseId
154
            order.logistics_provider_id = logistics_info.providerId
157
            order.logistics_provider_id = logistics_info.providerId
155
            order.airwaybill_no = logistics_info.airway_billno
158
            order.airwaybill_no = logistics_info.airway_billno
156
            order.tracking_id = order.airwaybill_no
159
            order.tracking_id = order.airwaybill_no
157
            order.expected_delivery_time = datetime.datetime.now() + datetime.timedelta(days=logistics_info.deliveryTime)
160
            order.expected_delivery_time = current_time + datetime.timedelta(days=logistics_info.deliveryTime)
158
            
161
            
159
            catalog_client = InventoryClient().get_client()
162
            catalog_client = InventoryClient().get_client()
160
            catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)
163
            catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)
161
 
164
 
162
            item_pricing = catalog_client.getItemPricing(item_id, order.warehouse_id)
165
            item_pricing = catalog_client.getItemPricing(item_id, order.warehouse_id)
163
            order.lineitems[0].transfer_price = item_pricing.transferPrice
166
            order.lineitems[0].transfer_price = item_pricing.transferPrice
164
        
167
        
165
    session.commit()
168
    session.commit()
166
    return True
169
    return True
167
 
170
 
-
 
171
def adjust_delivery_time(order_time, delivery_days):
-
 
172
    order_date = order_time.date()
-
 
173
    
-
 
174
    delivery_date = order_date + datetime.timedelta(days = delivery_days)
-
 
175
    final_delivery_date = delivery_date
-
 
176
    
-
 
177
    time_format = "%Y-%m-%d %H:%M:%S.%f"
-
 
178
    t = time.strptime(str(order_time), time_format)
-
 
179
    midnightTime = datetime.datetime(*t[:3])
-
 
180
    fromDate = to_java_date(midnightTime)
-
 
181
    toDate = -1L
-
 
182
    
-
 
183
    logistics_client = LogisticsClient().get_client()
-
 
184
    holiday_dates = logistics_client.getHolidays(fromDate, toDate)
-
 
185
    holiday_dates = [(to_py_date(h_date)).date() for h_date in holiday_dates]
-
 
186
    
-
 
187
    while order_date <= final_delivery_date:
-
 
188
        if order_date.weekday() == 6 or is_holiday(holiday_dates, order_date):
-
 
189
            delivery_days = delivery_days + 1
-
 
190
            final_delivery_date = final_delivery_date + datetime.timedelta(days = 1)
-
 
191
        order_date = order_date + datetime.timedelta(days = 1)
-
 
192
    return delivery_days
-
 
193
 
-
 
194
 
-
 
195
 
-
 
196
def is_holiday(holidays, date):
-
 
197
    try:
-
 
198
        holidays.index(date)
-
 
199
        return 1
-
 
200
    except:
-
 
201
        return 0
-
 
202
 
168
def enqueue_transaction_info_email(transaction_id):
203
def enqueue_transaction_info_email(transaction_id):
169
    transaction = get_transaction(transaction_id)
204
    transaction = get_transaction(transaction_id)
170
    
205
    
171
    html_header = """
206
    html_header = """
172
<html>
207
<html>
Line 505... Line 540...
505
    return Order.query.filter(Order.status >= OrderStatus.SUBMITTED_FOR_PROCESSING).count()
540
    return Order.query.filter(Order.status >= OrderStatus.SUBMITTED_FOR_PROCESSING).count()
506
 
541
 
507
def get_cust_count_with_successful_txn():
542
def get_cust_count_with_successful_txn():
508
    return session.query(Order.customer_id).filter(Order.status >= OrderStatus.SUBMITTED_FOR_PROCESSING).distinct().count()
543
    return session.query(Order.customer_id).filter(Order.status >= OrderStatus.SUBMITTED_FOR_PROCESSING).distinct().count()
509
 
544
 
510
def get_max_valid_order_amount():
545
def get_valid_orders_amount_range():
511
    orders = Order.query.filter(Order.status >= OrderStatus.SUBMITTED_FOR_PROCESSING).all()
-
 
512
    order_amounts = [o.total_amount for o in orders]
-
 
513
    return max(order_amounts)
-
 
514
 
-
 
515
def get_min_valid_order_amount():
-
 
516
    orders = Order.query.filter(Order.status >= OrderStatus.SUBMITTED_FOR_PROCESSING).all()
546
    orders = Order.query.filter(Order.status >= OrderStatus.SUBMITTED_FOR_PROCESSING).all()
517
    order_amounts = [o.total_amount for o in orders]
547
    order_amounts = [o.total_amount for o in orders]
518
    return min(order_amounts)
548
    return [min(order_amounts), max(order_amounts)]
519
 
549
 
520
def close_session():
550
def close_session():
521
    if session.is_active:
551
    if session.is_active:
522
        print "session is active. closing it."
552
        print "session is active. closing it."
523
        session.close()
553
        session.close()
524
554