| Line 655... |
Line 655... |
| 655 |
#This will pass the maximum unit price of available product in all scenarios.
|
655 |
#This will pass the maximum unit price of available product in all scenarios.
|
| 656 |
subOrderAmountsList = sorted(subOrderAmountsMap.keys())
|
656 |
subOrderAmountsList = sorted(subOrderAmountsMap.keys())
|
| 657 |
maxUnitPriceOrder = subOrderAmountsMap.get(subOrderAmountsList[len(subOrderAmountsList)-1])
|
657 |
maxUnitPriceOrder = subOrderAmountsMap.get(subOrderAmountsList[len(subOrderAmountsList)-1])
|
| 658 |
costingAndDeliveryEstimateObj = logistics_client.getCostingAndDeliveryEstimateForPincode(orders[0].customer_pincode, maxUnitPriceOrder.lineitems[0].unit_price, False, maxUnitPriceOrder.lineitems[0].unit_weight, billingWarehouseId, False)
|
658 |
costingAndDeliveryEstimateObj = logistics_client.getCostingAndDeliveryEstimateForPincode(orders[0].customer_pincode, maxUnitPriceOrder.lineitems[0].unit_price, False, maxUnitPriceOrder.lineitems[0].unit_weight, billingWarehouseId, False)
|
| 659 |
except:
|
659 |
except:
|
| - |
|
660 |
#TODO:
|
| 660 |
raise TransactionServiceException(108, "No Logistics Provider Assigned")
|
661 |
raise TransactionServiceException(108, "No Logistics Provider Assigned")
|
| - |
|
662 |
#This should not be raised lets go ahead
|
| - |
|
663 |
|
| 661 |
|
664 |
|
| 662 |
logisticsCost = costingAndDeliveryEstimateObj.logisticsCost
|
665 |
logisticsCost = costingAndDeliveryEstimateObj.logisticsCost
|
| 663 |
logisticsCostInOrders = 0
|
666 |
logisticsCostInOrders = 0
|
| 664 |
current_time = datetime.datetime.now()
|
667 |
current_time = datetime.datetime.now()
|
| 665 |
#delivery_delay
|
668 |
#delivery_delay
|
| Line 2564... |
Line 2567... |
| 2564 |
Payment Mode: %(payMode)s
|
2567 |
Payment Mode: %(payMode)s
|
| 2565 |
|
2568 |
|
| 2566 |
%(note)s
|
2569 |
%(note)s
|
| 2567 |
|
2570 |
|
| 2568 |
Thanks and Regards
|
2571 |
Thanks and Regards
|
| 2569 |
Sandeep Sachdeva
|
2572 |
Himanshu Pandey
|
| 2570 |
'''
|
2573 |
'''
|
| 2571 |
|
2574 |
|
| 2572 |
payMode = 'Prepaid'
|
2575 |
payMode = 'Prepaid'
|
| 2573 |
note = ''
|
2576 |
note = ''
|
| 2574 |
if order.cod:
|
2577 |
if order.cod:
|
| Line 2580... |
Line 2583... |
| 2580 |
'provider' : provider.name,
|
2583 |
'provider' : provider.name,
|
| 2581 |
'product' : str(order.lineitems[0]),
|
2584 |
'product' : str(order.lineitems[0]),
|
| 2582 |
'payMode' : payMode,
|
2585 |
'payMode' : payMode,
|
| 2583 |
'note' : note
|
2586 |
'note' : note
|
| 2584 |
}
|
2587 |
}
|
| 2585 |
to_addresses = [store.email, store.bdmEmail, 'sandeep.sachdeva@shop2020.in', 'amit.sirohi@shop2020.in', 'manoj.kumar@shop2020.in']
|
2588 |
to_addresses = [store.email, store.bdmEmail, 'himanshu.pandey@shop2020.in', 'amit.sirohi@shop2020.in', 'ritesh.chauhan@shop2020.in']
|
| 2586 |
cc = ['khushal.bhatia@spiceretail.co.in']
|
2589 |
cc = ['khushal.bhatia@spiceretail.co.in']
|
| 2587 |
bcc = ['rajneesh.arora@spiceretail.co.in']
|
2590 |
bcc = ['rajneesh.arora@spiceretail.co.in']
|
| 2588 |
mail(mail_user, mail_password, to_addresses, subject, message, [], cc, bcc)
|
2591 |
mail(mail_user, mail_password, to_addresses, subject, message, [], cc, bcc)
|
| 2589 |
|
2592 |
|
| 2590 |
def mark_orders_as_returned_from_store(providerId, orderIds, awbs):
|
2593 |
def mark_orders_as_returned_from_store(providerId, orderIds, awbs):
|
| Line 7545... |
Line 7548... |
| 7545 |
enddate = to_py_date(enddate).date()
|
7548 |
enddate = to_py_date(enddate).date()
|
| 7546 |
query = query.filter(cast(StoreOrderCollection.pushedAt, DATE) <= enddate)
|
7549 |
query = query.filter(cast(StoreOrderCollection.pushedAt, DATE) <= enddate)
|
| 7547 |
|
7550 |
|
| 7548 |
return query.filter(StoreOrderCollection.pushedToOcr == 1).all()
|
7551 |
return query.filter(StoreOrderCollection.pushedToOcr == 1).all()
|
| 7549 |
|
7552 |
|
| 7550 |
def update_timestamp_for_amazon_order(orderDeliveryMap):
|
- |
|
| 7551 |
for orderId,dateMap in orderDeliveryMap.iteritems():
|
- |
|
| 7552 |
order = get_order(orderId)
|
- |
|
| 7553 |
order.expected_delivery_time = datetime.datetime.strptime(dateMap.values()[0]+' 15:00:00', '%d-%m-%Y %H:%M:%S')
|
- |
|
| 7554 |
order.promised_delivery_time = datetime.datetime.strptime(dateMap.values()[0]+' 15:00:00', '%d-%m-%Y %H:%M:%S')
|
- |
|
| 7555 |
promisedShipping = datetime.datetime.strptime(dateMap.keys()[0]+' 15:00:00', '%d-%m-%Y %H:%M:%S')
|
- |
|
| 7556 |
order.expected_shipping_time = promisedShipping
|
- |
|
| 7557 |
order.promised_shipping_time = promisedShipping
|
- |
|
| 7558 |
session.commit()
|
- |
|
| 7559 |
return True
|
- |
|
| 7560 |
|
- |
|
| 7561 |
def update_source_detail_timestamp(id,lastUpdatedOn):
|
- |
|
| 7562 |
detail = get_source_detail(id)
|
- |
|
| 7563 |
detail.lastUpdatedOn = to_py_date(lastUpdatedOn)
|
- |
|
| 7564 |
session.commit()
|
- |
|
| 7565 |
return True
|
- |
|
| 7566 |
|
7553 |
|
| 7567 |
def get_orders_by_mobile_number(mobileNumber):
|
7554 |
def get_orders_by_mobile_number(mobileNumber):
|
| 7568 |
return Order.query.filter(Order.customer_mobilenumber == mobileNumber).all()
|
7555 |
return Order.query.filter(Order.customer_mobilenumber == mobileNumber).all()
|
| 7569 |
|
7556 |
|
| 7570 |
def get_orders_by_amazon_id(amazonId):
|
7557 |
def get_orders_by_amazon_id(amazonId):
|
| Line 7622... |
Line 7609... |
| 7622 |
return query.all()
|
7609 |
return query.all()
|
| 7623 |
|
7610 |
|
| 7624 |
def __update_tax_type(order):
|
7611 |
def __update_tax_type(order):
|
| 7625 |
print "updating tax type"
|
7612 |
print "updating tax type"
|
| 7626 |
|
7613 |
|
| 7627 |
def create_ebay_order(ebay_order):
|
- |
|
| 7628 |
ebayOrder = EbayOrder()
|
- |
|
| 7629 |
ebayOrder.orderId = ebay_order.orderId
|
- |
|
| 7630 |
ebayOrder.paisaPayId = ebay_order.paisaPayId
|
- |
|
| 7631 |
ebayOrder.salesRecordNumber = ebay_order.salesRecordNumber
|
- |
|
| 7632 |
ebayOrder.ebayListingId = ebay_order.ebayListingId
|
- |
|
| 7633 |
ebayOrder.subsidyAmount = ebay_order.subsidyAmount
|
- |
|
| 7634 |
ebayOrder.ebayTxnDate = to_py_date(ebay_order.ebayTxnDate)
|
- |
|
| 7635 |
ebayOrder.transactionId = ebay_order.transactionId
|
- |
|
| 7636 |
ebayOrder.listingName = ebay_order.listingName
|
- |
|
| 7637 |
ebayOrder.listingPrice = ebay_order.listingPrice
|
- |
|
| 7638 |
session.commit()
|
- |
|
| 7639 |
|
- |
|
| 7640 |
def get_ebay_order_by_sales_rec_number(sales_rec_number):
|
- |
|
| 7641 |
return EbayOrder.query.filter(EbayOrder.salesRecordNumber == sales_rec_number).one()
|
- |
|
| 7642 |
|
- |
|
| 7643 |
def get_ebay_order(sales_rec_number, listingId, paisa_pay_id):
|
- |
|
| 7644 |
query = EbayOrder.query
|
- |
|
| 7645 |
if sales_rec_number:
|
- |
|
| 7646 |
query = query.filter(EbayOrder.salesRecordNumber == sales_rec_number)
|
- |
|
| 7647 |
if listingId:
|
- |
|
| 7648 |
query = query.filter(EbayOrder.ebayListingId == listingId)
|
- |
|
| 7649 |
if paisa_pay_id:
|
- |
|
| 7650 |
query = query.filter(EbayOrder.paisaPayId == paisa_pay_id)
|
- |
|
| 7651 |
return query.all()
|
- |
|
| 7652 |
#return EbayOrder.query.filter(EbayOrder.salesRecordNumber == sales_rec_number).filter(EbayOrder.ebayListingId == listingId).one()
|
- |
|
| 7653 |
|
- |
|
| 7654 |
def get_ebay_order_by_orderId(order_id):
|
- |
|
| 7655 |
return EbayOrder.query.filter(EbayOrder.orderId == order_id).one()
|
- |
|
| 7656 |
|
- |
|
| 7657 |
def update_ebay_order(ebay_order):
|
- |
|
| 7658 |
ebayOrder = get_ebay_order_by_orderId(ebay_order.orderId)
|
- |
|
| 7659 |
ebayOrder.subsidyAmount = ebay_order.subsidyAmount
|
- |
|
| 7660 |
ebayOrder.transactionId = ebay_order.transactionId
|
- |
|
| 7661 |
ebayOrder.ebayTxnDate = to_py_date(ebay_order.ebayTxnDate)
|
- |
|
| 7662 |
ebayOrder.bluedartPaisaPayRef = ebay_order.bluedartPaisaPayRef
|
- |
|
| 7663 |
ebayOrder.listingPrice = ebay_order.listingPrice
|
- |
|
| 7664 |
session.commit()
|
- |
|
| 7665 |
|
- |
|
| 7666 |
def ebay_order_exists(sales_rec_number, ebay_listing_id):
|
- |
|
| 7667 |
try:
|
- |
|
| 7668 |
ebayOrder = get_ebay_order_by_sales_rec_number(sales_rec_number)
|
- |
|
| 7669 |
if ebayOrder.ebayListingId == ebay_listing_id:
|
- |
|
| 7670 |
return True
|
- |
|
| 7671 |
else:
|
- |
|
| 7672 |
return False
|
- |
|
| 7673 |
except Exception as e:
|
- |
|
| 7674 |
return False
|
- |
|
| 7675 |
def update_order_for_ebay(t_order):
|
- |
|
| 7676 |
order = get_order(t_order.id)
|
- |
|
| 7677 |
order.customer_id = t_order.customer_id
|
- |
|
| 7678 |
order.customer_name = t_order.customer_name
|
- |
|
| 7679 |
order.customer_city = t_order.customer_city
|
- |
|
| 7680 |
order.customer_state = t_order.customer_state
|
- |
|
| 7681 |
order.customer_mobilenumber = t_order.customer_mobilenumber
|
- |
|
| 7682 |
order.customer_pincode = t_order.customer_pincode
|
- |
|
| 7683 |
order.customer_address1 = t_order.customer_address1
|
- |
|
| 7684 |
order.customer_address2 = t_order.customer_address2
|
- |
|
| 7685 |
order.customer_email = t_order.customer_email
|
- |
|
| 7686 |
order.logistics_provider_id = t_order.logistics_provider_id
|
- |
|
| 7687 |
order.airwaybill_no = t_order.airwaybill_no
|
- |
|
| 7688 |
order.tracking_id = t_order.tracking_id
|
- |
|
| 7689 |
order.status = t_order.status
|
- |
|
| 7690 |
order.statusDescription = t_order.statusDescription
|
- |
|
| 7691 |
order.cod = 0
|
- |
|
| 7692 |
order.otg = False
|
- |
|
| 7693 |
order.freebieItemId = 0
|
- |
|
| 7694 |
order.orderType = OrderType.B2C
|
- |
|
| 7695 |
order.source = 6
|
- |
|
| 7696 |
|
- |
|
| 7697 |
transaction = get_transaction(order.transaction_id)
|
- |
|
| 7698 |
transaction.status = TransactionStatus.AUTHORIZED
|
- |
|
| 7699 |
transaction.customer_id = t_order.customer_id
|
- |
|
| 7700 |
session.commit()
|
- |
|
| 7701 |
|
- |
|
| 7702 |
def split_ebay_order(order_id, split_order_qty, split_order_item_id, use_power_ship):
|
- |
|
| 7703 |
#In case of split now order is always assigned based on the website logic...Also itemId won't work for now
|
- |
|
| 7704 |
order = get_order(order_id)
|
- |
|
| 7705 |
if split_order_qty >=order.lineitems[0].quantity:
|
- |
|
| 7706 |
raise TransactionServiceException(108, "Split Quantity is greater than or equal to order quantity")
|
- |
|
| 7707 |
if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW, OrderStatus.LOW_INV_PO_RAISED, OrderStatus.LOW_INV_REVERSAL_IN_PROCESS, OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT, OrderStatus.CAPTURE_IN_PROCESS, OrderStatus.REJECTED, OrderStatus.ACCEPTED]:
|
- |
|
| 7708 |
raise TransactionServiceException(108, "Order not allowed to be split")
|
- |
|
| 7709 |
new_order = __clone_order(order, False, False)
|
- |
|
| 7710 |
new_order.expected_delivery_time = order.expected_delivery_time
|
- |
|
| 7711 |
new_order.promised_delivery_time = order.promised_delivery_time
|
- |
|
| 7712 |
new_order.expected_shipping_time = order.expected_shipping_time
|
- |
|
| 7713 |
new_order.promised_shipping_time = order.promised_shipping_time
|
- |
|
| 7714 |
if use_power_ship:
|
- |
|
| 7715 |
new_order.logistics_provider_id = order.logistics_provider_id
|
- |
|
| 7716 |
new_order.airwaybill_no = order.airwaybill_no
|
- |
|
| 7717 |
new_order.tracking_id = order.tracking_id
|
- |
|
| 7718 |
|
- |
|
| 7719 |
new_order.lineitems[0].quantity = split_order_qty
|
- |
|
| 7720 |
new_order.lineitems[0].total_price = new_order.lineitems[0].unit_price*split_order_qty
|
- |
|
| 7721 |
new_order.total_amount = new_order.lineitems[0].total_price
|
- |
|
| 7722 |
|
- |
|
| 7723 |
order.lineitems[0].quantity = order.lineitems[0].quantity - split_order_qty
|
- |
|
| 7724 |
order.lineitems[0].total_price = order.lineitems[0].unit_price * order.lineitems[0].quantity
|
- |
|
| 7725 |
order.total_amount = order.lineitems[0].total_price
|
- |
|
| 7726 |
|
- |
|
| 7727 |
session.commit()
|
- |
|
| 7728 |
return new_order
|
- |
|
| 7729 |
|
- |
|
| 7730 |
def add_or_update_amazon_fba_sales_snapshot(amazonfbasalessnapshot):
|
- |
|
| 7731 |
salesnapshotfordate = AmazonFbaSalesSnapshot.get_by(item_id = amazonfbasalessnapshot.item_id,dateOfSale=to_py_date(amazonfbasalessnapshot.dateOfSale).date(),fcLocation=amazonfbasalessnapshot.fcLocation)
|
- |
|
| 7732 |
if salesnapshotfordate is None:
|
- |
|
| 7733 |
amazon_fba_sales_snapshot = AmazonFbaSalesSnapshot()
|
- |
|
| 7734 |
amazon_fba_sales_snapshot.dateOfSale = to_py_date(amazonfbasalessnapshot.dateOfSale).date()
|
- |
|
| 7735 |
amazon_fba_sales_snapshot.item_id = amazonfbasalessnapshot.item_id
|
- |
|
| 7736 |
amazon_fba_sales_snapshot.totalOrderCount = amazonfbasalessnapshot.totalOrderCount
|
- |
|
| 7737 |
amazon_fba_sales_snapshot.amazonFbaInventory = amazonfbasalessnapshot.amazonFbaInventory
|
- |
|
| 7738 |
amazon_fba_sales_snapshot.isOutOfStock = amazonfbasalessnapshot.isOutOfStock
|
- |
|
| 7739 |
amazon_fba_sales_snapshot.promotionOrderCount = amazonfbasalessnapshot.promotionOrderCount
|
- |
|
| 7740 |
amazon_fba_sales_snapshot.totalSale = amazonfbasalessnapshot.totalSale
|
- |
|
| 7741 |
amazon_fba_sales_snapshot.promotionSale = amazonfbasalessnapshot.promotionSale
|
- |
|
| 7742 |
#if amazonfbasalessnapshot.ourPrice is not None:
|
- |
|
| 7743 |
amazon_fba_sales_snapshot.ourPriceSnapshotDate = to_py_date(amazonfbasalessnapshot.ourPriceSnapshotDate)
|
- |
|
| 7744 |
amazon_fba_sales_snapshot.ourPrice = amazonfbasalessnapshot.ourPrice
|
- |
|
| 7745 |
#if amazonfbasalessnapshot.salePrice is not None:
|
- |
|
| 7746 |
amazon_fba_sales_snapshot.salePriceSnapshotDate = to_py_date(amazonfbasalessnapshot.salePriceSnapshotDate)
|
- |
|
| 7747 |
amazon_fba_sales_snapshot.salePrice = amazonfbasalessnapshot.salePrice
|
- |
|
| 7748 |
#if amazonfbasalessnapshot.minFbaPrice is not None:
|
- |
|
| 7749 |
amazon_fba_sales_snapshot.minFbaPriceSnapshotDate = to_py_date(amazonfbasalessnapshot.minFbaPriceSnapshotDate)
|
- |
|
| 7750 |
amazon_fba_sales_snapshot.minFbaPrice = amazonfbasalessnapshot.minFbaPrice
|
- |
|
| 7751 |
#if amazonfbasalessnapshot.minMfnPrice is not None:
|
- |
|
| 7752 |
amazon_fba_sales_snapshot.minMfnPriceSnapshotDate = to_py_date(amazonfbasalessnapshot.minMfnPriceSnapshotDate)
|
- |
|
| 7753 |
amazon_fba_sales_snapshot.minMfnPrice = amazonfbasalessnapshot.minMfnPrice
|
- |
|
| 7754 |
amazon_fba_sales_snapshot.fcLocation = amazonfbasalessnapshot.fcLocation
|
- |
|
| 7755 |
|
- |
|
| 7756 |
else:
|
- |
|
| 7757 |
if(amazonfbasalessnapshot.totalOrderCount > 0):
|
- |
|
| 7758 |
salesnapshotfordate.isOutOfStock = 0
|
- |
|
| 7759 |
salesnapshotfordate.promotionOrderCount = amazonfbasalessnapshot.promotionOrderCount
|
- |
|
| 7760 |
salesnapshotfordate.totalSale = amazonfbasalessnapshot.totalSale
|
- |
|
| 7761 |
salesnapshotfordate.promotionSale = amazonfbasalessnapshot.promotionSale
|
- |
|
| 7762 |
salesnapshotfordate.totalOrderCount = amazonfbasalessnapshot.totalOrderCount
|
- |
|
| 7763 |
salesnapshotfordate.fcLocation = amazonfbasalessnapshot.fcLocation
|
- |
|
| 7764 |
session.commit()
|
- |
|
| 7765 |
|
- |
|
| 7766 |
def get_amazon_fba_sales_snapshot_for_days(interval):
|
- |
|
| 7767 |
query = session.query(Order.status, func.count(Order.id)).group_by(Order.status)
|
- |
|
| 7768 |
date = datetime.datetime.now()
|
- |
|
| 7769 |
toDate = date-timedelta(days = 1)
|
- |
|
| 7770 |
fromDate = toDate-timedelta(days = interval)
|
- |
|
| 7771 |
fbasalessnapshot = AmazonFbaSalesSnapshot.query.filter(AmazonFbaSalesSnapshot.dateOfSale.between (fromDate.date(),toDate.date())).order_by(AmazonFbaSalesSnapshot.dateOfSale).all()
|
- |
|
| 7772 |
return fbasalessnapshot
|
- |
|
| 7773 |
|
- |
|
| 7774 |
def create_snapdeal_order(t_snapdeal_order):
|
- |
|
| 7775 |
snapdealOrder = SnapdealOrder()
|
- |
|
| 7776 |
snapdealOrder.orderId = t_snapdeal_order.orderId
|
- |
|
| 7777 |
snapdealOrder.subOrderId = t_snapdeal_order.subOrderId
|
- |
|
| 7778 |
snapdealOrder.referenceCode = t_snapdeal_order.referenceCode
|
- |
|
| 7779 |
snapdealOrder.productName = t_snapdeal_order.productName
|
- |
|
| 7780 |
snapdealOrder.listingPrice = t_snapdeal_order.listingPrice
|
- |
|
| 7781 |
snapdealOrder.snapdealTxnDate = to_py_date(t_snapdeal_order.snapdealTxnDate)
|
- |
|
| 7782 |
snapdealOrder.maxNlc = t_snapdeal_order.maxNlc
|
- |
|
| 7783 |
order = Order.get_by(id=t_snapdeal_order.orderId)
|
- |
|
| 7784 |
order.status = OrderStatus.ACCEPTED
|
- |
|
| 7785 |
user = None
|
- |
|
| 7786 |
try:
|
- |
|
| 7787 |
user_client = UserClient().get_client()
|
- |
|
| 7788 |
user_to_add = User()
|
- |
|
| 7789 |
user_to_add.email = 'SD.'+ str(t_snapdeal_order.orderId) + '@mailinator.com'
|
- |
|
| 7790 |
user_to_add.password = 'hSp5gvCsrrhZcceE6mzzOQ'
|
- |
|
| 7791 |
user_to_add.communicationEmail = user_to_add.email
|
- |
|
| 7792 |
user_to_add.sourceStartTime = int(round(time.time() * 1000))
|
- |
|
| 7793 |
user_to_add.sourceId = OrderSource.SNAPDEAL
|
- |
|
| 7794 |
user_to_add.sex = Sex.WONT_SAY
|
- |
|
| 7795 |
user_to_add = user_client.createUser(user_to_add)
|
- |
|
| 7796 |
user = user_to_add
|
- |
|
| 7797 |
except:
|
- |
|
| 7798 |
pass
|
- |
|
| 7799 |
|
- |
|
| 7800 |
if user:
|
- |
|
| 7801 |
order.customer_id = user.userId
|
- |
|
| 7802 |
order.customer_email = user.email
|
- |
|
| 7803 |
session.commit()
|
- |
|
| 7804 |
|
- |
|
| 7805 |
def get_snapdeal_order(order_id, reference_code, subOrder_id):
|
- |
|
| 7806 |
query = SnapdealOrder.query
|
- |
|
| 7807 |
if order_id:
|
- |
|
| 7808 |
query = query.filter(SnapdealOrder.orderId == order_id)
|
- |
|
| 7809 |
elif reference_code==subOrder_id:
|
- |
|
| 7810 |
if reference_code is None:
|
- |
|
| 7811 |
reference_code=''
|
- |
|
| 7812 |
query = query.filter(or_(SnapdealOrder.referenceCode == reference_code, SnapdealOrder.subOrderId== subOrder_id))
|
- |
|
| 7813 |
else:
|
- |
|
| 7814 |
query = query.filter(and_(SnapdealOrder.referenceCode == reference_code, SnapdealOrder.subOrderId== subOrder_id))
|
- |
|
| 7815 |
return query.one()
|
- |
|
| 7816 |
return query.all()
|
- |
|
| 7817 |
|
- |
|
| 7818 |
def snapdeal_order_exists(suborder_id, reference_code):
|
- |
|
| 7819 |
exists = SnapdealOrder.query.filter_by(subOrderId=suborder_id,referenceCode=reference_code).first()
|
- |
|
| 7820 |
if exists is not None:
|
- |
|
| 7821 |
return True
|
- |
|
| 7822 |
else:
|
- |
|
| 7823 |
return False
|
- |
|
| 7824 |
|
- |
|
| 7825 |
def get_amazon_fba_sales_latest_snapshot_for_item(item_id):
|
- |
|
| 7826 |
return AmazonFbaSalesSnapshot.query.filter(AmazonFbaSalesSnapshot.item_id==item_id).filter(AmazonFbaSalesSnapshot.dateOfSale!=datetime.datetime.now().date()).order_by(desc(AmazonFbaSalesSnapshot.dateOfSale)).first()
|
- |
|
| 7827 |
|
- |
|
| 7828 |
def update_latest_fba_prices_for_item(fbaitemprices):
|
- |
|
| 7829 |
fbasalessnapshot = AmazonFbaSalesSnapshot.query.filter(AmazonFbaSalesSnapshot.item_id==fbaitemprices.item_id).order_by(desc(AmazonFbaSalesSnapshot.dateOfSale)).first()
|
- |
|
| 7830 |
if(fbasalessnapshot.ourPriceSnapshotDate < to_java_date(fbaitemprices.ourPriceSnapshotDate) and fbaitemprices.ourPrice is not None):
|
- |
|
| 7831 |
fbasalessnapshot.ourPriceSnapshotDate = to_py_date(fbaitemprices.ourPriceSnapshotDate)
|
- |
|
| 7832 |
fbasalessnapshot.ourPrice = fbaitemprices.ourPrice
|
- |
|
| 7833 |
if(fbasalessnapshot.salePriceSnapshotDate < to_java_date(fbaitemprices.salePriceSnapshotDate) and fbaitemprices.salePrice is not None):
|
- |
|
| 7834 |
fbasalessnapshot.salePriceSnapshotDate = to_py_date(fbaitemprices.salePriceSnapshotDate)
|
- |
|
| 7835 |
fbasalessnapshot.salePrice = fbaitemprices.salePrice
|
- |
|
| 7836 |
if(fbasalessnapshot.minFbaPriceSnapshotDate < to_java_date(fbaitemprices.minFbaPriceSnapshotDate) and fbaitemprices.minFbaPrice is not None):
|
- |
|
| 7837 |
fbasalessnapshot.minFbaPriceSnapshotDate = to_py_date(fbaitemprices.minFbaPriceSnapshotDate)
|
- |
|
| 7838 |
fbasalessnapshot.minFbaPrice = fbaitemprices.minFbaPrice
|
- |
|
| 7839 |
if(fbasalessnapshot.minMfnPriceSnapshotDate < to_java_date(fbaitemprices.minMfnPriceSnapshotDate) and fbaitemprices.minMfnPrice is not None):
|
- |
|
| 7840 |
fbasalessnapshot.minMfnPriceSnapshotDate = to_py_date(fbaitemprices.minMfnPriceSnapshotDate)
|
- |
|
| 7841 |
fbasalessnapshot.minMfnPrice = fbaitemprices.minMfnPrice
|
- |
|
| 7842 |
session.commit()
|
- |
|
| 7843 |
|
- |
|
| 7844 |
def flipkart_order_exists(orderid,suborderid):
|
- |
|
| 7845 |
exists = FlipkartOrder.query.filter_by(flipkartOrderId=orderid,flipkartSubOrderId=suborderid).first()
|
- |
|
| 7846 |
if exists is not None:
|
- |
|
| 7847 |
return True
|
- |
|
| 7848 |
else:
|
- |
|
| 7849 |
return False
|
- |
|
| 7850 |
|
- |
|
| 7851 |
def create_flipkart_order(flipkartorder):
|
- |
|
| 7852 |
order = FlipkartOrder()
|
- |
|
| 7853 |
order.orderId = flipkartorder.orderId
|
- |
|
| 7854 |
order.flipkartSubOrderId = flipkartorder.flipkartSubOrderId
|
- |
|
| 7855 |
order.flipkartOrderId = flipkartorder.flipkartOrderId
|
- |
|
| 7856 |
order.flipkartTxnDate = to_py_date(flipkartorder.flipkartTxnDate)
|
- |
|
| 7857 |
order.shippingPrice = flipkartorder.shippingPrice
|
- |
|
| 7858 |
order.octroiFee = flipkartorder.octroiFee
|
- |
|
| 7859 |
order.emiFee = flipkartorder.emiFee
|
- |
|
| 7860 |
order.maxNlc = flipkartorder.maxNlc
|
- |
|
| 7861 |
s_order = Order.get_by(id=flipkartorder.orderId)
|
- |
|
| 7862 |
if s_order.cod:
|
- |
|
| 7863 |
s_order.status = OrderStatus.COD_VERIFICATION_PENDING
|
- |
|
| 7864 |
else:
|
- |
|
| 7865 |
s_order.status = OrderStatus.ACCEPTED
|
- |
|
| 7866 |
s_order.accepted_timetsmap = datetime.datetime.now()
|
- |
|
| 7867 |
user = None
|
- |
|
| 7868 |
try:
|
- |
|
| 7869 |
user_client = UserClient().get_client()
|
- |
|
| 7870 |
user_to_add = User()
|
- |
|
| 7871 |
user_to_add.email = 'FK.'+ str(flipkartorder.orderId) + '@mailinator.com'
|
- |
|
| 7872 |
user_to_add.password = 'gR9zF-Ish2im6tbYFNivgA'
|
- |
|
| 7873 |
user_to_add.communicationEmail = user_to_add.email
|
- |
|
| 7874 |
user_to_add.sourceStartTime = int(round(time.time() * 1000))
|
- |
|
| 7875 |
user_to_add.sourceId = OrderSource.FLIPKART
|
- |
|
| 7876 |
user_to_add.sex = Sex.WONT_SAY
|
- |
|
| 7877 |
user_to_add = user_client.createUser(user_to_add)
|
- |
|
| 7878 |
user = user_to_add
|
- |
|
| 7879 |
except:
|
- |
|
| 7880 |
pass
|
- |
|
| 7881 |
|
- |
|
| 7882 |
if user:
|
- |
|
| 7883 |
s_order.customer_id = user.userId
|
- |
|
| 7884 |
s_order.customer_email = user.email
|
- |
|
| 7885 |
|
- |
|
| 7886 |
session.commit()
|
- |
|
| 7887 |
|
- |
|
| 7888 |
def get_flipkart_order(orderid):
|
- |
|
| 7889 |
flipkartorder = FlipkartOrder.query.filter_by(orderId=orderid).first()
|
- |
|
| 7890 |
if not flipkartorder:
|
- |
|
| 7891 |
print "No found order for orderid " + str(orderid)
|
- |
|
| 7892 |
raise TransactionServiceException(108, "no such order")
|
- |
|
| 7893 |
return flipkartorder
|
- |
|
| 7894 |
|
- |
|
| 7895 |
def get_flipkart_order_by_subOrderId(flipkartOrderItemId):
|
- |
|
| 7896 |
flipkartorder = FlipkartOrder.query.filter_by(flipkartSubOrderId=flipkartOrderItemId).first()
|
- |
|
| 7897 |
if not flipkartorder:
|
- |
|
| 7898 |
raise TransactionServiceException(108, "no such flipkart order " + str(flipkartOrderItemId))
|
- |
|
| 7899 |
return flipkartorder
|
- |
|
| 7900 |
|
- |
|
| 7901 |
def update_flipkart_order_dates_and_awb(orderid,suborderid,date,awb):
|
- |
|
| 7902 |
flipkartorder = FlipkartOrder.query.filter_by(flipkartOrderId=orderid,flipkartSubOrderId=suborderid).first()
|
- |
|
| 7903 |
print flipkartorder
|
- |
|
| 7904 |
order = get_order(flipkartorder.orderId)
|
- |
|
| 7905 |
if not order:
|
- |
|
| 7906 |
print "No found order for orderid " + str(orderid)
|
- |
|
| 7907 |
raise TransactionServiceException(108, "no such order")
|
- |
|
| 7908 |
order.tracking_id = awb
|
- |
|
| 7909 |
order.expected_delivery_time = to_py_date(date + 4*24*60*60*1000)
|
- |
|
| 7910 |
order.promised_delivery_time = to_py_date(date + 4*24*60*60*1000)
|
- |
|
| 7911 |
order.expected_shipping_time = to_py_date(date)
|
- |
|
| 7912 |
order.promised_shipping_time = to_py_date(date)
|
- |
|
| 7913 |
session.commit()
|
- |
|
| 7914 |
|
- |
|
| 7915 |
def get_order_for_airwayBillNo(airwaybillNo):
|
7614 |
def get_order_for_airwayBillNo(airwaybillNo):
|
| 7916 |
orders = Order.query.filter(Order.airwaybill_no==airwaybillNo).all()
|
7615 |
orders = Order.query.filter(Order.airwaybill_no==airwaybillNo).all()
|
| 7917 |
if not orders:
|
7616 |
if not orders:
|
| 7918 |
orders = []
|
7617 |
orders = []
|
| 7919 |
|
7618 |
|
| Line 7949... |
Line 7648... |
| 7949 |
return len(catalog_client.getAllActivePrivateDeals(allItems, 0)) > 0
|
7648 |
return len(catalog_client.getAllActivePrivateDeals(allItems, 0)) > 0
|
| 7950 |
|
7649 |
|
| 7951 |
|
7650 |
|
| 7952 |
return result
|
7651 |
return result
|
| 7953 |
|
7652 |
|
| 7954 |
def update_snapdeal_orders_status(orders):
|
- |
|
| 7955 |
for statusString, orderList in orders.iteritems():
|
- |
|
| 7956 |
if statusString == "Cancelled":
|
- |
|
| 7957 |
try:
|
- |
|
| 7958 |
for cancel_order in orderList:
|
- |
|
| 7959 |
ref_code = cancel_order[0]
|
- |
|
| 7960 |
sub_order_code = cancel_order[1]
|
- |
|
| 7961 |
snapdeal_order = None
|
- |
|
| 7962 |
try:
|
- |
|
| 7963 |
snapdeal_order = get_snapdeal_order(None, ref_code, sub_order_code)
|
- |
|
| 7964 |
except Exception as e:
|
- |
|
| 7965 |
print 'Caught in Updation of Cancelled Orders Getting Snapdeal Order'
|
- |
|
| 7966 |
pass
|
- |
|
| 7967 |
if snapdeal_order:
|
- |
|
| 7968 |
order = get_order(snapdeal_order.orderId)
|
- |
|
| 7969 |
if order.status == OrderStatus.SHIPPED_FROM_WH:
|
- |
|
| 7970 |
order.status = OrderStatus.SHIPPED_TO_LOGST
|
- |
|
| 7971 |
session.commit()
|
- |
|
| 7972 |
except Exception as e:
|
- |
|
| 7973 |
print 'Caught in Updation of Cancelled Orders'
|
- |
|
| 7974 |
print e
|
- |
|
| 7975 |
print sys.exc_info()
|
- |
|
| 7976 |
|
- |
|
| 7977 |
|
- |
|
| 7978 |
if statusString == "Delivered":
|
- |
|
| 7979 |
try:
|
- |
|
| 7980 |
for del_order in orderList:
|
- |
|
| 7981 |
ref_code = del_order[0]
|
- |
|
| 7982 |
sub_order_code = del_order[1]
|
- |
|
| 7983 |
dlvry_timestamp = del_order[2]
|
- |
|
| 7984 |
snapdeal_order = None
|
- |
|
| 7985 |
try:
|
- |
|
| 7986 |
snapdeal_order = get_snapdeal_order(None, ref_code, sub_order_code)
|
- |
|
| 7987 |
except Exception as e:
|
- |
|
| 7988 |
print 'Caught in Updation of Delivered Orders Getting Snapdeal Order'
|
- |
|
| 7989 |
pass
|
- |
|
| 7990 |
if snapdeal_order:
|
- |
|
| 7991 |
order = get_order(snapdeal_order.orderId)
|
- |
|
| 7992 |
if order.status == OrderStatus.SHIPPED_FROM_WH:
|
- |
|
| 7993 |
order.delivery_timestamp = datetime.datetime.strptime(dlvry_timestamp, "%Y-%m-%d %H:%M:%S")
|
- |
|
| 7994 |
order.receiver = order.customer_name
|
- |
|
| 7995 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
- |
|
| 7996 |
order.statusDescription = "Order delivered"
|
- |
|
| 7997 |
session.commit()
|
- |
|
| 7998 |
except Exception as e:
|
- |
|
| 7999 |
print 'Caught in Updation of Delivered Orders'
|
- |
|
| 8000 |
print e
|
- |
|
| 8001 |
print sys.exc_info()
|
- |
|
| 8002 |
'''
|
- |
|
| 8003 |
try:
|
- |
|
| 8004 |
for del_order in delivered_orders:
|
- |
|
| 8005 |
ref_code = del_order[0]
|
- |
|
| 8006 |
sub_order_code = del_order[1]
|
- |
|
| 8007 |
dlvry_timestamp = del_order[2]
|
- |
|
| 8008 |
|
- |
|
| 8009 |
if snapdeal_order_exists(sub_order_code, ref_code):
|
- |
|
| 8010 |
snapdeal_order = get_snapdeal_order(None, None, sub_order_code)
|
- |
|
| 8011 |
if snapdeal_order:
|
- |
|
| 8012 |
order = get_order(snapdeal_order.orderId)
|
- |
|
| 8013 |
if order.status == OrderStatus.SHIPPED_FROM_WH:
|
- |
|
| 8014 |
order.delivery_timestamp = datetime.datetime.strptime(dlvry_timestamp, "%Y-%m-%d %H:%M:%S")
|
- |
|
| 8015 |
order.receiver = order.customer_name
|
- |
|
| 8016 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
- |
|
| 8017 |
order.statusDescription = "Order delivered"
|
- |
|
| 8018 |
session.commit()
|
- |
|
| 8019 |
except Exception as e:
|
- |
|
| 8020 |
print e
|
- |
|
| 8021 |
print sys.exc_info()
|
- |
|
| 8022 |
'''
|
- |
|
| 8023 |
|
- |
|
| 8024 |
def update_flipkart_orders_status(delivered_orders):
|
- |
|
| 8025 |
try:
|
- |
|
| 8026 |
for del_order in delivered_orders:
|
- |
|
| 8027 |
flipkart_order_id = del_order[0]
|
- |
|
| 8028 |
sub_order_code = del_order[1]
|
- |
|
| 8029 |
dlvry_timestamp = del_order[2]
|
- |
|
| 8030 |
|
- |
|
| 8031 |
if flipkart_order_exists(flipkart_order_id,sub_order_code):
|
- |
|
| 8032 |
flipkart_order = get_flipkart_order_by_subOrderId(sub_order_code)
|
- |
|
| 8033 |
if flipkart_order:
|
- |
|
| 8034 |
order = get_order(flipkart_order.orderId)
|
- |
|
| 8035 |
if order.status == OrderStatus.SHIPPED_FROM_WH:
|
- |
|
| 8036 |
order.delivery_timestamp = datetime.datetime.strptime(dlvry_timestamp, "%Y-%m-%d %H:%M:%S")
|
- |
|
| 8037 |
order.receiver = order.customer_name
|
- |
|
| 8038 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
- |
|
| 8039 |
order.statusDescription = "Order delivered"
|
- |
|
| 8040 |
session.commit()
|
- |
|
| 8041 |
except Exception as e:
|
- |
|
| 8042 |
print e
|
- |
|
| 8043 |
print sys.exc_info()
|
- |
|
| 8044 |
|
- |
|
| 8045 |
'''
|
- |
|
| 8046 |
order_ids = delivered_orders.keys()
|
- |
|
| 8047 |
for orderId in order_ids:
|
- |
|
| 8048 |
order = Order.query.filter(Order.id == orderId).first()
|
- |
|
| 8049 |
order.status = OrderStatus.DELIVERY_SUCCESS
|
- |
|
| 8050 |
order.statusDescription = "Order delivered"
|
- |
|
| 8051 |
order.delivery_timestamp = datetime.datetime.strptime(delivered_orders.get(orderId), "%Y-%m-%d %H:%M:%S")
|
- |
|
| 8052 |
session.commit()
|
- |
|
| 8053 |
'''
|
- |
|
| 8054 |
|
- |
|
| 8055 |
def bulk_add_or_update_amazon_fba_sales_snapshot(amazonfbasalessnapshotlist):
|
- |
|
| 8056 |
for amazonfbasalessnapshot in amazonfbasalessnapshotlist:
|
- |
|
| 8057 |
salesnapshotfordate = AmazonFbaSalesSnapshot.get_by(item_id = amazonfbasalessnapshot.item_id,dateOfSale=to_py_date(amazonfbasalessnapshot.dateOfSale).date(),fcLocation=amazonfbasalessnapshot.fcLocation)
|
- |
|
| 8058 |
if salesnapshotfordate is None:
|
- |
|
| 8059 |
amazon_fba_sales_snapshot = AmazonFbaSalesSnapshot()
|
- |
|
| 8060 |
amazon_fba_sales_snapshot.dateOfSale = to_py_date(amazonfbasalessnapshot.dateOfSale).date()
|
- |
|
| 8061 |
amazon_fba_sales_snapshot.item_id = amazonfbasalessnapshot.item_id
|
- |
|
| 8062 |
amazon_fba_sales_snapshot.totalOrderCount = amazonfbasalessnapshot.totalOrderCount
|
- |
|
| 8063 |
amazon_fba_sales_snapshot.amazonFbaInventory = amazonfbasalessnapshot.amazonFbaInventory
|
- |
|
| 8064 |
amazon_fba_sales_snapshot.isOutOfStock = amazonfbasalessnapshot.isOutOfStock
|
- |
|
| 8065 |
amazon_fba_sales_snapshot.promotionOrderCount = amazonfbasalessnapshot.promotionOrderCount
|
- |
|
| 8066 |
amazon_fba_sales_snapshot.totalSale = amazonfbasalessnapshot.totalSale
|
- |
|
| 8067 |
amazon_fba_sales_snapshot.promotionSale = amazonfbasalessnapshot.promotionSale
|
- |
|
| 8068 |
#if amazonfbasalessnapshot.ourPrice is not None:
|
- |
|
| 8069 |
amazon_fba_sales_snapshot.ourPriceSnapshotDate = to_py_date(amazonfbasalessnapshot.ourPriceSnapshotDate)
|
- |
|
| 8070 |
amazon_fba_sales_snapshot.ourPrice = amazonfbasalessnapshot.ourPrice
|
- |
|
| 8071 |
#if amazonfbasalessnapshot.salePrice is not None:
|
- |
|
| 8072 |
amazon_fba_sales_snapshot.salePriceSnapshotDate = to_py_date(amazonfbasalessnapshot.salePriceSnapshotDate)
|
- |
|
| 8073 |
amazon_fba_sales_snapshot.salePrice = amazonfbasalessnapshot.salePrice
|
- |
|
| 8074 |
#if amazonfbasalessnapshot.minFbaPrice is not None:
|
- |
|
| 8075 |
amazon_fba_sales_snapshot.minFbaPriceSnapshotDate = to_py_date(amazonfbasalessnapshot.minFbaPriceSnapshotDate)
|
- |
|
| 8076 |
amazon_fba_sales_snapshot.minFbaPrice = amazonfbasalessnapshot.minFbaPrice
|
- |
|
| 8077 |
#if amazonfbasalessnapshot.minMfnPrice is not None:
|
- |
|
| 8078 |
amazon_fba_sales_snapshot.minMfnPriceSnapshotDate = to_py_date(amazonfbasalessnapshot.minMfnPriceSnapshotDate)
|
- |
|
| 8079 |
amazon_fba_sales_snapshot.minMfnPrice = amazonfbasalessnapshot.minMfnPrice
|
- |
|
| 8080 |
amazon_fba_sales_snapshot.fcLocation = amazonfbasalessnapshot.fcLocation
|
- |
|
| 8081 |
else:
|
- |
|
| 8082 |
if(amazonfbasalessnapshot.totalOrderCount > 0):
|
- |
|
| 8083 |
salesnapshotfordate.isOutOfStock = 0
|
- |
|
| 8084 |
salesnapshotfordate.promotionOrderCount = amazonfbasalessnapshot.promotionOrderCount
|
- |
|
| 8085 |
salesnapshotfordate.totalSale = amazonfbasalessnapshot.totalSale
|
- |
|
| 8086 |
salesnapshotfordate.promotionSale = amazonfbasalessnapshot.promotionSale
|
- |
|
| 8087 |
salesnapshotfordate.totalOrderCount = amazonfbasalessnapshot.totalOrderCount
|
- |
|
| 8088 |
salesnapshotfordate.fcLocation = amazonfbasalessnapshot.fcLocation
|
- |
|
| 8089 |
session.commit()
|
- |
|
| 8090 |
|
- |
|
| 8091 |
def get_created_orders_for_flipkart(flipkartorderids):
|
- |
|
| 8092 |
item_ordercount = dict()
|
- |
|
| 8093 |
orders = []
|
- |
|
| 8094 |
flipkart_orders = session.query(FlipkartOrder).filter(FlipkartOrder.flipkartOrderId.in_(tuple(flipkartorderids))).all()
|
- |
|
| 8095 |
print flipkart_orders
|
- |
|
| 8096 |
if len(flipkart_orders)!=0:
|
- |
|
| 8097 |
for order in flipkart_orders:
|
- |
|
| 8098 |
print order.orderId
|
- |
|
| 8099 |
orders.append(order.orderId)
|
- |
|
| 8100 |
items =session.query(LineItem.item_id,func.count(LineItem.quantity)).join((Order,LineItem.order_id==Order.id)).filter(Order.id.in_(tuple(orders))).filter(Order.status >=3).filter(Order.shipping_timestamp==None).group_by(LineItem.item_id).all()
|
- |
|
| 8101 |
else:
|
- |
|
| 8102 |
return item_ordercount
|
- |
|
| 8103 |
print "items map after query"
|
- |
|
| 8104 |
print items
|
- |
|
| 8105 |
for item in items:
|
- |
|
| 8106 |
print "item id"
|
- |
|
| 8107 |
print item[0]
|
- |
|
| 8108 |
print "order count"
|
- |
|
| 8109 |
print item[1]
|
- |
|
| 8110 |
item_ordercount[item[0]] = item[1]
|
- |
|
| 8111 |
print item_ordercount
|
- |
|
| 8112 |
return item_ordercount
|
- |
|
| 8113 |
|
- |
|
| 8114 |
def change_easyship_mfn_order_txn_status(transaction_id, new_status, description, pickUp, orderType, source, shipTimestamp, deliveryTimeStamp):
|
- |
|
| 8115 |
transaction = get_transaction(transaction_id)
|
- |
|
| 8116 |
transaction.status = new_status
|
- |
|
| 8117 |
transaction.status_message = description
|
- |
|
| 8118 |
## Assign runner in case of delhi pincodes
|
- |
|
| 8119 |
if transaction.orders[0].pickupStoreId:
|
- |
|
| 8120 |
logistics_client = LogisticsClient().get_client()
|
- |
|
| 8121 |
store = logistics_client.getPickupStore(transaction.orders[0].pickupStoreId)
|
- |
|
| 8122 |
if delhi_pincodes.__contains__(store.pin):
|
- |
|
| 8123 |
pickUp = PickUpType.RUNNER
|
- |
|
| 8124 |
|
- |
|
| 8125 |
if new_status == TransactionStatus.FAILED:
|
- |
|
| 8126 |
for order in transaction.orders:
|
- |
|
| 8127 |
order.status = OrderStatus.PAYMENT_FAILED
|
- |
|
| 8128 |
order.statusDescription = "Payment Failed"
|
- |
|
| 8129 |
elif new_status == TransactionStatus.AUTHORIZED or new_status == TransactionStatus.FLAGGED:
|
- |
|
| 8130 |
for order in transaction.orders:
|
- |
|
| 8131 |
if new_status == TransactionStatus.AUTHORIZED:
|
- |
|
| 8132 |
order.status = OrderStatus.SUBMITTED_FOR_PROCESSING
|
- |
|
| 8133 |
order.statusDescription = "Submitted to warehouse"
|
- |
|
| 8134 |
elif new_status == TransactionStatus.FLAGGED:
|
- |
|
| 8135 |
order.status = OrderStatus.PAYMENT_FLAGGED
|
- |
|
| 8136 |
order.statusDescription = "Payment flagged by gateway"
|
- |
|
| 8137 |
order.cod = False
|
- |
|
| 8138 |
order.orderType = orderType
|
- |
|
| 8139 |
#After we got payment success, we will set logistics info also
|
- |
|
| 8140 |
logistics_client = LogisticsClient().get_client()
|
- |
|
| 8141 |
#FIXME line item is only one now. If multiple will come, need to fix.
|
- |
|
| 8142 |
item_id = order.lineitems[0].item_id
|
- |
|
| 8143 |
logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, item_id, DeliveryType.PREPAID, pickUp)
|
- |
|
| 8144 |
|
- |
|
| 8145 |
#current_time = datetime.datetime.now()
|
- |
|
| 8146 |
|
- |
|
| 8147 |
#logistics_info.deliveryTime = adjust_delivery_time(to_py_date(deliveryTimeStamp), 0)
|
- |
|
| 8148 |
#logistics_info.shippingTime = adjust_delivery_time(to_py_date(shipTimestamp), 0)
|
- |
|
| 8149 |
#logistics_info.deliveryDelay = 0
|
- |
|
| 8150 |
|
- |
|
| 8151 |
|
- |
|
| 8152 |
order.otg = logistics_info.otgAvailable
|
- |
|
| 8153 |
order.warehouse_id = logistics_info.warehouseId
|
- |
|
| 8154 |
order.fulfilmentWarehouseId = logistics_info.fulfilmentWarehouseId
|
- |
|
| 8155 |
order.logistics_provider_id = 45
|
- |
|
| 8156 |
#Start:- Added by Manish Sharma for FedEx Integration - Shipment Creation on 31-Jul-2013
|
- |
|
| 8157 |
#order.airwaybill_no = logistics_info.airway_billno
|
- |
|
| 8158 |
#order.tracking_id = order.airwaybill_no
|
- |
|
| 8159 |
#End:- Added by Manish Sharma for FedEx Integration- Shipment Creation on 31-Jul-2013
|
- |
|
| 8160 |
|
- |
|
| 8161 |
order.courier_delivery_time = to_py_date(deliveryTimeStamp).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
- |
|
| 8162 |
order.expected_shipping_time = to_py_date(shipTimestamp).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
- |
|
| 8163 |
order.promised_shipping_time = order.expected_shipping_time
|
- |
|
| 8164 |
order.expected_delivery_time = to_py_date(deliveryTimeStamp).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
- |
|
| 8165 |
order.promised_delivery_time = order.expected_delivery_time
|
- |
|
| 8166 |
|
- |
|
| 8167 |
if order.pickupStoreId:
|
- |
|
| 8168 |
order.otg = False
|
- |
|
| 8169 |
|
- |
|
| 8170 |
inventory_client = InventoryClient().get_client()
|
- |
|
| 8171 |
if order.productCondition != ProductCondition.BAD:
|
- |
|
| 8172 |
inventory_client.reserveItemInWarehouse(item_id, logistics_info.fulfilmentWarehouseId, sourceId, order.id, to_java_date(order.created_timestamp), to_java_date(order.promised_shipping_time), order.lineitems[0].quantity)
|
- |
|
| 8173 |
|
- |
|
| 8174 |
try:
|
- |
|
| 8175 |
item_pricing = inventory_client.getItemPricing(item_id, -1)
|
- |
|
| 8176 |
order.lineitems[0].transfer_price = item_pricing.transferPrice
|
- |
|
| 8177 |
order.lineitems[0].nlc = item_pricing.nlc
|
- |
|
| 8178 |
except:
|
- |
|
| 8179 |
print "Not able to get transfer price. Skipping"
|
- |
|
| 8180 |
|
- |
|
| 8181 |
catalog_client = CatalogClient().get_client()
|
- |
|
| 8182 |
voucherAmount = catalog_client.getVoucherAmount(item_id, VoucherType.SPICEDECK_MOBILE)
|
- |
|
| 8183 |
if voucherAmount:
|
- |
|
| 8184 |
__create_recharge_voucher_tracker(order, voucherAmount, VoucherType.SPICEDECK_MOBILE)
|
- |
|
| 8185 |
#Note 2 Buy back Offer
|
- |
|
| 8186 |
if item_id in (7974, 7558) and transaction.coupon_code is not None and transaction.coupon_code.lower() == "note2buyback":
|
- |
|
| 8187 |
order.status = OrderStatus.COD_VERIFICATION_PENDING
|
- |
|
| 8188 |
order.statusDescription = "Note 2 Buy Back Offer - Approval Pending from CRM Team"
|
- |
|
| 8189 |
order.otg = False
|
- |
|
| 8190 |
|
- |
|
| 8191 |
elif new_status == TransactionStatus.COD_IN_PROCESS:
|
- |
|
| 8192 |
for order in transaction.orders:
|
- |
|
| 8193 |
order.status = OrderStatus.COD_VERIFICATION_PENDING
|
- |
|
| 8194 |
order.statusDescription = "Verification Pending"
|
- |
|
| 8195 |
order.cod = True
|
- |
|
| 8196 |
order.orderType = orderType
|
- |
|
| 8197 |
#After we got payment success, we will set logistics info also
|
- |
|
| 8198 |
logistics_client = LogisticsClient().get_client()
|
- |
|
| 8199 |
#FIXME line item is only one now. If multiple will come, need to fix.
|
- |
|
| 8200 |
item_id = order.lineitems[0].item_id
|
- |
|
| 8201 |
if order.pickupStoreId:
|
- |
|
| 8202 |
# Need to send prepaid awb number for store pick up orders
|
- |
|
| 8203 |
logistics_info = logistics_client.getLogisticsEstimation(item_id, order.customer_pincode, DeliveryType.COD)
|
- |
|
| 8204 |
#//Start:- Added by Manish Sharma for FedEx Integration- Shipment Creation on 31-Jul-2013
|
- |
|
| 8205 |
#prepaid_logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, item_id, DeliveryType.PREPAID, pickUp)
|
- |
|
| 8206 |
#logistics_info.airway_billno = prepaid_logistics_info.airway_billno
|
- |
|
| 8207 |
#logistics_info.providerId = prepaid_logistics_info.providerId
|
- |
|
| 8208 |
#End:- Added by Manish Sharma for FedEx Integration- Shipment Creation on 31-Jul-2013
|
- |
|
| 8209 |
# Will not provide OTG in pickup store
|
- |
|
| 8210 |
order.otg = False
|
- |
|
| 8211 |
else:
|
- |
|
| 8212 |
logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, item_id, DeliveryType.COD, pickUp)
|
- |
|
| 8213 |
order.otg = logistics_info.otgAvailable
|
- |
|
| 8214 |
|
- |
|
| 8215 |
|
- |
|
| 8216 |
#current_time = datetime.datetime.now()
|
- |
|
| 8217 |
#logistics_info.deliveryTime = adjust_delivery_time(current_time, logistics_info.deliveryTime)
|
- |
|
| 8218 |
#logistics_info.shippingTime = adjust_delivery_time(current_time, logistics_info.shippingTime)
|
- |
|
| 8219 |
#logistics_info.deliveryDelay = adjust_delivery_time(current_time, (logistics_info.shippingTime+logistics_info.deliveryDelay))
|
- |
|
| 8220 |
|
- |
|
| 8221 |
|
- |
|
| 8222 |
order.warehouse_id = logistics_info.warehouseId
|
- |
|
| 8223 |
order.fulfilmentWarehouseId = logistics_info.fulfilmentWarehouseId
|
- |
|
| 8224 |
order.logistics_provider_id = 45
|
- |
|
| 8225 |
#Start:- Added by Manish Sharma for FedEx Integration- Shipment Creation on 31-Jul-2013
|
- |
|
| 8226 |
#order.airwaybill_no = logistics_info.airway_billno
|
- |
|
| 8227 |
#order.tracking_id = order.airwaybill_no
|
- |
|
| 8228 |
#End:- Added by Manish Sharma for FedEx Integration- Shipment Creation on 31-Jul-2013
|
- |
|
| 8229 |
order.courier_delivery_time = to_py_date(deliveryTimeStamp).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
- |
|
| 8230 |
order.expected_shipping_time = to_py_date(shipTimestamp).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
- |
|
| 8231 |
order.promised_shipping_time = order.expected_shipping_time
|
- |
|
| 8232 |
order.expected_delivery_time = to_py_date(deliveryTimeStamp).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
|
- |
|
| 8233 |
order.promised_delivery_time = order.expected_delivery_time
|
- |
|
| 8234 |
|
- |
|
| 8235 |
inventory_client = InventoryClient().get_client()
|
- |
|
| 8236 |
if order.productCondition != ProductCondition.BAD:
|
- |
|
| 8237 |
inventory_client.reserveItemInWarehouse(item_id, logistics_info.fulfilmentWarehouseId, sourceId, order.id, to_java_date(order.created_timestamp), to_java_date(order.promised_shipping_time), order.lineitems[0].quantity)
|
- |
|
| 8238 |
|
- |
|
| 8239 |
try:
|
- |
|
| 8240 |
item_pricing = inventory_client.getItemPricing(item_id, -1)
|
- |
|
| 8241 |
order.lineitems[0].transfer_price = item_pricing.transferPrice
|
- |
|
| 8242 |
order.lineitems[0].nlc = item_pricing.nlc
|
- |
|
| 8243 |
except:
|
- |
|
| 8244 |
print "Not able to get transfer price. Skipping"
|
- |
|
| 8245 |
|
- |
|
| 8246 |
catalog_client = CatalogClient().get_client()
|
- |
|
| 8247 |
voucherAmount = catalog_client.getVoucherAmount(item_id, VoucherType.SPICEDECK_MOBILE)
|
- |
|
| 8248 |
if voucherAmount:
|
- |
|
| 8249 |
__create_recharge_voucher_tracker(order, voucherAmount, VoucherType.SPICEDECK_MOBILE)
|
- |
|
| 8250 |
|
- |
|
| 8251 |
|
- |
|
| 8252 |
session.commit()
|
- |
|
| 8253 |
|
- |
|
| 8254 |
if new_status in (TransactionStatus.AUTHORIZED, TransactionStatus.FLAGGED, TransactionStatus.COD_IN_PROCESS):
|
- |
|
| 8255 |
try:
|
- |
|
| 8256 |
if order.source == OrderSource.WEBSITE:
|
- |
|
| 8257 |
if new_status == TransactionStatus.COD_IN_PROCESS:
|
- |
|
| 8258 |
transaction_requiring_extra_processing = TransactionRequiringExtraProcessing()
|
- |
|
| 8259 |
transaction_requiring_extra_processing.category = 'COD_VERIFICATION'
|
- |
|
| 8260 |
transaction_requiring_extra_processing.transaction_id = transaction_id
|
- |
|
| 8261 |
session.commit()
|
- |
|
| 8262 |
elif new_status == TransactionStatus.FLAGGED:
|
- |
|
| 8263 |
transaction_requiring_extra_processing = TransactionRequiringExtraProcessing()
|
- |
|
| 8264 |
transaction_requiring_extra_processing.category = 'PAYMENT_FLAGGED'
|
- |
|
| 8265 |
transaction_requiring_extra_processing.transaction_id = transaction_id
|
- |
|
| 8266 |
session.commit()
|
- |
|
| 8267 |
elif order.source == OrderSource.STORE:
|
- |
|
| 8268 |
order.otg = False
|
- |
|
| 8269 |
session.commit()
|
- |
|
| 8270 |
catalog_client = CatalogClient().get_client()
|
- |
|
| 8271 |
sourcePricing = catalog_client.getStorePricing(order.lineitems[0].item_id)
|
- |
|
| 8272 |
if order.total_amount >= sourcePricing.minPrice:
|
- |
|
| 8273 |
order.status = OrderStatus.SUBMITTED_FOR_PROCESSING
|
- |
|
| 8274 |
order.statusDescription = "Order Accepted"
|
- |
|
| 8275 |
session.commit()
|
- |
|
| 8276 |
sod = StoreOrderDetail.get_by(orderId = order.id)
|
- |
|
| 8277 |
__push_store_collection_to_hotspot(order, "advance", sod.cashAmount, sod.cardAmount)
|
- |
|
| 8278 |
|
- |
|
| 8279 |
else:
|
- |
|
| 8280 |
order.status = OrderStatus.COD_VERIFICATION_PENDING
|
- |
|
| 8281 |
order.statusDescription = "Approval Pending"
|
- |
|
| 8282 |
content = "<html><body>"
|
- |
|
| 8283 |
content += "<h4>Order Id: " + str(order.id) + "</h4>"
|
- |
|
| 8284 |
content += "<h4>Product: " + str(order.lineitems[0]) + "</h4>"
|
- |
|
| 8285 |
content += "<h4>Min Price: " + str(sourcePricing.minPrice) + "</h4>"
|
- |
|
| 8286 |
content += "<h4>Recommended Price: " + str(sourcePricing.recommendedPrice) + "</h4>"
|
- |
|
| 8287 |
content += "<h2>Approval Requested for Price: " + str(order.total_amount) + "</h2>"
|
- |
|
| 8288 |
content += "<h2>Note 1: If this discount price is approved then reply 'Approved' otherwise 'Not Approved' without changing anythig in the Mail.</h2>"
|
- |
|
| 8289 |
content += "<h2>Note 2: For Quick approval using browser <a href='http://support.shop2020.in:8080/Support/price-approval?xszbg=" + base64.b64encode(str(order.id)) + "'>Click Here</a></h2>"
|
- |
|
| 8290 |
content += "<br><br></body></html>"
|
- |
|
| 8291 |
store = get_hotspot_store(order.storeId, "")
|
- |
|
| 8292 |
helper_client = HelperClient().get_client()
|
- |
|
| 8293 |
helper_client.saveUserEmailForSending(store.approvalEmail.split(';'), SaholicHelpEmailId, "Price approval requested for " + str(order.lineitems[0]) + " order Id " + str(order.id) + " in store " + store.hotspotId , content, str(transaction_id), "PriceApproval", [], [], order.source)
|
- |
|
| 8294 |
session.commit()
|
- |
|
| 8295 |
else:
|
- |
|
| 8296 |
order.otg = False
|
- |
|
| 8297 |
session.commit()
|
- |
|
| 8298 |
except Exception as e:
|
- |
|
| 8299 |
print "Error inserting transaction Id: " + str(transaction_id) + " due to " + str(e)
|
- |
|
| 8300 |
|
- |
|
| 8301 |
return True
|
- |
|
| 8302 |
|
- |
|
| 8303 |
def update_amazon_fba_order_returns(fbaOrderReturns):
|
- |
|
| 8304 |
for order_return in fbaOrderReturns:
|
- |
|
| 8305 |
orderReturn = AmazonFbaOrderReturns.query.filter(AmazonFbaOrderReturns.amazonOrderId==order_return.amazonOrderId).filter(AmazonFbaOrderReturns.insertionTimestamp == to_py_date(order_return.insertionTimestamp)).filter(AmazonFbaOrderReturns.sku==order_return.sku).first()
|
- |
|
| 8306 |
if orderReturn:
|
- |
|
| 8307 |
orderReturn.sellableReturnQuantity = order_return.sellableReturnQuantity
|
- |
|
| 8308 |
orderReturn.nonSellableReturnQuantity = order_return.nonSellableReturnQuantity
|
- |
|
| 8309 |
session.commit()
|
- |
|
| 8310 |
else:
|
- |
|
| 8311 |
orderReturn = AmazonFbaOrderReturns()
|
- |
|
| 8312 |
orderReturn.amazonOrderId = order_return.amazonOrderId
|
- |
|
| 8313 |
orderReturn.insertionTimestamp = to_py_date(order_return.insertionTimestamp)
|
- |
|
| 8314 |
orderReturn.sku = order_return.sku
|
- |
|
| 8315 |
orderReturn.creationTimestamp = to_py_date(order_return.creationTimestamp)
|
- |
|
| 8316 |
orderReturn.shippedQuantity = order_return.shippedQuantity
|
- |
|
| 8317 |
orderReturn.sellableReturnQuantity = order_return.sellableReturnQuantity
|
- |
|
| 8318 |
orderReturn.nonSellableReturnQuantity = order_return.nonSellableReturnQuantity
|
- |
|
| 8319 |
session.commit()
|
- |
|
| 8320 |
|
- |
|
| 8321 |
def get_all_amazon_fba_order_returns(insertionTimestamp):
|
- |
|
| 8322 |
returns = AmazonFbaOrderReturns.query.filter(AmazonFbaOrderReturns.insertionTimestamp==to_py_date(insertionTimestamp)).all()
|
- |
|
| 8323 |
if not returns:
|
- |
|
| 8324 |
returns = []
|
- |
|
| 8325 |
return returns
|
- |
|
| 8326 |
|
- |
|
| 8327 |
def get_total_sale_returns_fba_skus_curent_time(insertionTimestamp):
|
- |
|
| 8328 |
allFbaSkuDetails = session.query(AmazonFbaOrderReturns.sku, func.sum(AmazonFbaOrderReturns.shippedQuantity), func.sum(AmazonFbaOrderReturns.sellableReturnQuantity), func.sum(AmazonFbaOrderReturns.nonSellableReturnQuantity)).group_by(AmazonFbaOrderReturns.sku).filter(AmazonFbaOrderReturns.insertionTimestamp == to_py_date(insertionTimestamp)).all()
|
- |
|
| 8329 |
|
- |
|
| 8330 |
returnAllFbaSkuDetails = {}
|
- |
|
| 8331 |
|
- |
|
| 8332 |
for fbaSkuDetail in allFbaSkuDetails:
|
- |
|
| 8333 |
saleReturnDetail = {}
|
- |
|
| 8334 |
saleReturnDetail['Sale'] = fbaSkuDetail[1]
|
- |
|
| 8335 |
saleReturnDetail['SaleableReturn'] = fbaSkuDetail[2]
|
- |
|
| 8336 |
saleReturnDetail['NonSaleableReturn'] = fbaSkuDetail[3]
|
- |
|
| 8337 |
returnAllFbaSkuDetails[fbaSkuDetail[0]]= saleReturnDetail
|
- |
|
| 8338 |
|
- |
|
| 8339 |
return returnAllFbaSkuDetails
|
- |
|
| 8340 |
|
- |
|
| 8341 |
def get_amazon_fba_sales_latest_snapshot_for_item_location_wise(item_id,location):
|
- |
|
| 8342 |
return AmazonFbaSalesSnapshot.query.filter(AmazonFbaSalesSnapshot.item_id==item_id).filter(AmazonFbaSalesSnapshot.fcLocation==location).filter(AmazonFbaSalesSnapshot.dateOfSale!=datetime.datetime.now().date()).order_by(desc(AmazonFbaSalesSnapshot.dateOfSale)).first()
|
- |
|
| 8343 |
|
- |
|
| 8344 |
def get_verification_pending_orders_fk():
|
- |
|
| 8345 |
retOrders = Order.query.filter(Order.source==OrderSource.FLIPKART).filter(Order.status==OrderStatus.COD_VERIFICATION_PENDING).all()
|
- |
|
| 8346 |
retFkOrders = []
|
- |
|
| 8347 |
order_ids = []
|
- |
|
| 8348 |
if not retOrders:
|
- |
|
| 8349 |
return retFkOrders
|
- |
|
| 8350 |
else:
|
- |
|
| 8351 |
for order in retOrders:
|
- |
|
| 8352 |
order_ids.append(order.id)
|
- |
|
| 8353 |
retFkOrders = FlipkartOrder.query.filter(FlipkartOrder.orderId.in_(tuple(order_ids)))
|
- |
|
| 8354 |
if not retFkOrders:
|
- |
|
| 8355 |
retFkOrders = []
|
- |
|
| 8356 |
return retFkOrders
|
- |
|
| 8357 |
|
- |
|
| 8358 |
def add_invoice_details_to_orders(transactionId, customerId):
|
7653 |
def add_invoice_details_to_orders(transactionId, customerId):
|
| 8359 |
orders = Order.query.filter_by(transaction_id=transactionId, customer_id=customerId).all()
|
7654 |
orders = Order.query.filter_by(transaction_id=transactionId, customer_id=customerId).all()
|
| 8360 |
if not orders:
|
7655 |
if not orders:
|
| 8361 |
raise TransactionServiceException(101, "No order for the transaction Unable to Print Invoice")
|
7656 |
raise TransactionServiceException(101, "No order for the transaction Unable to Print Invoice")
|
| 8362 |
else:
|
7657 |
else:
|
| 8363 |
invoiceNo = get_next_invoice_number(orders[0].orderType)
|
7658 |
invoiceNo = get_next_invoice_number(orders[0].orderType)
|
| 8364 |
for order in orders:
|
7659 |
for order in orders:
|
| 8365 |
order.invoice_number = invoiceNo
|
7660 |
order.invoice_number = invoiceNo
|
| 8366 |
session.commit()
|
7661 |
session.commit()
|
| 8367 |
|
7662 |
|
| 8368 |
def get_fa_order_by_fk_order_id(fk_OrderId,fk_OrderItemId):
|
- |
|
| 8369 |
faOrder = FlipkartAdvantageOrder.query.filter_by(fkOrderId=fk_OrderId,fkOrderItemId=fk_OrderItemId).first()
|
- |
|
| 8370 |
if not faOrder:
|
- |
|
| 8371 |
print "Not found order for orderId " + str(fk_OrderId)
|
- |
|
| 8372 |
raise TransactionServiceException(108, "no such order")
|
- |
|
| 8373 |
|
- |
|
| 8374 |
return faOrder
|
- |
|
| 8375 |
|
- |
|
| 8376 |
def flipkart_fa_order_exists(fk_OrderId,fk_OrderItemId):
|
- |
|
| 8377 |
faOrder = FlipkartAdvantageOrder.query.filter_by(fkOrderId=fk_OrderId,fkOrderItemId=fk_OrderItemId).first()
|
- |
|
| 8378 |
if not faOrder:
|
- |
|
| 8379 |
return False
|
- |
|
| 8380 |
else:
|
- |
|
| 8381 |
return True
|
- |
|
| 8382 |
|
- |
|
| 8383 |
def get_all_fa_orders_list(status):
|
- |
|
| 8384 |
faOrders = None
|
- |
|
| 8385 |
if status == 'all':
|
- |
|
| 8386 |
faOrders = FlipkartAdvantageOrder.query.all()
|
- |
|
| 8387 |
else:
|
- |
|
| 8388 |
faOrders = FlipkartAdvantageOrder.query.filter(FlipkartAdvantageOrder.status==status).all()
|
- |
|
| 8389 |
if not faOrders:
|
- |
|
| 8390 |
faOrders = []
|
- |
|
| 8391 |
return faOrders
|
- |
|
| 8392 |
|
- |
|
| 8393 |
def add_update_fa_orders_bulk(faOrdersList):
|
- |
|
| 8394 |
for faOrder in faOrdersList:
|
- |
|
| 8395 |
if faOrder.status == 'approved':
|
- |
|
| 8396 |
fa_Order = FlipkartAdvantageOrder()
|
- |
|
| 8397 |
fa_Order.fkOrderId = faOrder.fkOrderId
|
- |
|
| 8398 |
fa_Order.fkOrderItemId = faOrder.fkOrderItemId
|
- |
|
| 8399 |
fa_Order.sku = faOrder.sku
|
- |
|
| 8400 |
fa_Order.creationTimestamp = to_py_date(faOrder.creationTimestamp)
|
- |
|
| 8401 |
fa_Order.customerName = faOrder.customerName
|
- |
|
| 8402 |
fa_Order.customerAddress = faOrder.customerAddress
|
- |
|
| 8403 |
fa_Order.pincode = faOrder.pincode
|
- |
|
| 8404 |
fa_Order.customerCity = faOrder.customerCity
|
- |
|
| 8405 |
fa_Order.customerState = faOrder.customerState
|
- |
|
| 8406 |
fa_Order.customerPhone = faOrder.customerPhone
|
- |
|
| 8407 |
fa_Order.status = faOrder.status
|
- |
|
| 8408 |
fa_Order.quantity = faOrder.quantity
|
- |
|
| 8409 |
fa_Order.totalPrice = faOrder.totalPrice
|
- |
|
| 8410 |
fa_Order.listPrice = faOrder.listPrice
|
- |
|
| 8411 |
fa_Order.modifiedDate = to_py_date(faOrder.modifiedDate)
|
- |
|
| 8412 |
fa_Order.listingId = faOrder.listingId
|
- |
|
| 8413 |
fa_Order.cancelReason = faOrder.cancelReason
|
- |
|
| 8414 |
fa_Order.returnReason = faOrder.returnReason
|
- |
|
| 8415 |
fa_Order.freebieItemId = faOrder.freebieItemId
|
- |
|
| 8416 |
fa_Order.productTitle = faOrder.productTitle
|
- |
|
| 8417 |
else:
|
- |
|
| 8418 |
fa_Order = FlipkartAdvantageOrder.query.filter_by(fkOrderId=faOrder.fkOrderId,fkOrderItemId=faOrder.fkOrderItemId).first()
|
- |
|
| 8419 |
if fa_Order:
|
- |
|
| 8420 |
if fa_Order.status !=faOrder.status:
|
- |
|
| 8421 |
fa_Order.status = faOrder.status
|
- |
|
| 8422 |
fa_Order.cancelReason = faOrder.cancelReason
|
- |
|
| 8423 |
fa_Order.returnReason = faOrder.returnReason
|
- |
|
| 8424 |
fa_Order.modifiedDate = to_py_date(faOrder.modifiedDate)
|
- |
|
| 8425 |
else:
|
- |
|
| 8426 |
fa_Order = FlipkartAdvantageOrder()
|
- |
|
| 8427 |
fa_Order.fkOrderId = faOrder.fkOrderId
|
- |
|
| 8428 |
fa_Order.fkOrderItemId = faOrder.fkOrderItemId
|
- |
|
| 8429 |
fa_Order.sku = faOrder.sku
|
- |
|
| 8430 |
fa_Order.creationTimestamp = to_py_date(faOrder.creationTimestamp)
|
- |
|
| 8431 |
fa_Order.customerName = faOrder.customerName
|
- |
|
| 8432 |
fa_Order.customerAddress = faOrder.customerAddress
|
- |
|
| 8433 |
fa_Order.pincode = faOrder.pincode
|
- |
|
| 8434 |
fa_Order.customerCity = faOrder.customerCity
|
- |
|
| 8435 |
fa_Order.customerState = faOrder.customerState
|
- |
|
| 8436 |
fa_Order.customerPhone = faOrder.customerPhone
|
- |
|
| 8437 |
fa_Order.status = faOrder.status
|
- |
|
| 8438 |
fa_Order.quantity = faOrder.quantity
|
- |
|
| 8439 |
fa_Order.totalPrice = faOrder.totalPrice
|
- |
|
| 8440 |
fa_Order.listPrice = faOrder.listPrice
|
- |
|
| 8441 |
fa_Order.modifiedDate = to_py_date(faOrder.modifiedDate)
|
- |
|
| 8442 |
fa_Order.listingId = faOrder.listingId
|
- |
|
| 8443 |
fa_Order.cancelReason = faOrder.cancelReason
|
- |
|
| 8444 |
fa_Order.returnReason = faOrder.returnReason
|
- |
|
| 8445 |
fa_Order.freebieItemId = faOrder.freebieItemId
|
- |
|
| 8446 |
fa_Order.productTitle = faOrder.productTitle
|
- |
|
| 8447 |
session.commit()
|
- |
|
| 8448 |
|
7663 |
|
| 8449 |
def get_recharge_order_status(rechargeOrderId, final):
|
7664 |
def get_recharge_order_status(rechargeOrderId, final):
|
| 8450 |
d_rechargeOrder = get_recharge_order(rechargeOrderId)
|
7665 |
d_rechargeOrder = get_recharge_order(rechargeOrderId)
|
| 8451 |
if d_rechargeOrder.status == RechargeOrderStatus.RECHARGE_UNKNOWN:
|
7666 |
if d_rechargeOrder.status == RechargeOrderStatus.RECHARGE_UNKNOWN:
|
| 8452 |
try:
|
7667 |
try:
|
| Line 9340... |
Line 8555... |
| 9340 |
if txnShipSeq.invoiceFormat == 2:
|
8555 |
if txnShipSeq.invoiceFormat == 2:
|
| 9341 |
return 'Bulk'
|
8556 |
return 'Bulk'
|
| 9342 |
else:
|
8557 |
else:
|
| 9343 |
return 'Individual'
|
8558 |
return 'Individual'
|
| 9344 |
|
8559 |
|
| 9345 |
def create_homeshop_order(hsOrder):
|
- |
|
| 9346 |
hs_Order = HsOrder()
|
- |
|
| 9347 |
hs_Order.orderId = hsOrder.orderId
|
- |
|
| 9348 |
hs_Order.catalogueName = hsOrder.catalogueName
|
- |
|
| 9349 |
hs_Order.courierName = hsOrder.courierName
|
- |
|
| 9350 |
hs_Order.hsItemId = hsOrder.hsItemId
|
- |
|
| 9351 |
hs_Order.hsOrderDate = to_py_date(hsOrder.hsOrderDate)
|
- |
|
| 9352 |
hs_Order.hsOrderNo = hsOrder.hsOrderNo
|
- |
|
| 9353 |
hs_Order.hsProductId = hsOrder.hsProductId
|
- |
|
| 9354 |
hs_Order.hsSubOrderNo = hsOrder.hsSubOrderNo
|
- |
|
| 9355 |
hs_Order.paymentMode = hsOrder.paymentMode
|
- |
|
| 9356 |
hs_Order.sellerSku = hsOrder.sellerSku
|
- |
|
| 9357 |
hs_Order.slaDays = hsOrder.slaDays
|
- |
|
| 9358 |
hs_Order.shippingName = hsOrder.shippingName
|
- |
|
| 9359 |
order = Order.get_by(id=hsOrder.orderId)
|
- |
|
| 9360 |
order.status = OrderStatus.ACCEPTED
|
- |
|
| 9361 |
order.accepted_timestamp = datetime.datetime.now()
|
- |
|
| 9362 |
user = None
|
- |
|
| 9363 |
try:
|
- |
|
| 9364 |
user_client = UserClient().get_client()
|
- |
|
| 9365 |
user_to_add = User()
|
- |
|
| 9366 |
user_to_add.email = 'HS.'+ str(hsOrder.orderId) + '@mailinator.com'
|
- |
|
| 9367 |
user_to_add.password = 'ouBPONyDYWfeAFtXeaYRkQ'
|
- |
|
| 9368 |
user_to_add.communicationEmail = user_to_add.email
|
- |
|
| 9369 |
user_to_add.sourceStartTime = int(round(time.time() * 1000))
|
- |
|
| 9370 |
user_to_add.sourceId = OrderSource.HOMESHOP18
|
- |
|
| 9371 |
user_to_add.sex = Sex.WONT_SAY
|
- |
|
| 9372 |
user_to_add = user_client.createUser(user_to_add)
|
- |
|
| 9373 |
user = user_to_add
|
- |
|
| 9374 |
except:
|
- |
|
| 9375 |
pass
|
- |
|
| 9376 |
|
- |
|
| 9377 |
if user:
|
- |
|
| 9378 |
order.customer_id = user.userId
|
- |
|
| 9379 |
order.customer_email = user.email
|
- |
|
| 9380 |
session.commit()
|
- |
|
| 9381 |
|
- |
|
| 9382 |
def get_homeshop_order(order_id, hsOrderNo, hsSubOrderNo):
|
- |
|
| 9383 |
query = HsOrder.query
|
- |
|
| 9384 |
if order_id:
|
- |
|
| 9385 |
query = query.filter(HsOrder.orderId == order_id)
|
- |
|
| 9386 |
if hsOrderNo:
|
- |
|
| 9387 |
query = query.filter(HsOrder.hsOrderNo == hsOrderNo)
|
- |
|
| 9388 |
if hsSubOrderNo:
|
- |
|
| 9389 |
query = query.filter(HsOrder.hsSubOrderNo == hsSubOrderNo)
|
- |
|
| 9390 |
return query.all()
|
- |
|
| 9391 |
|
- |
|
| 9392 |
def homeshop_order_exists(hs_OrderNo, hs_SubOrderNo):
|
- |
|
| 9393 |
exists = HsOrder.query.filter_by(hsOrderNo=hs_OrderNo,hsSubOrderNo=hs_SubOrderNo).first()
|
- |
|
| 9394 |
if exists is not None:
|
- |
|
| 9395 |
return True
|
- |
|
| 9396 |
else:
|
- |
|
| 9397 |
return False
|
- |
|
| 9398 |
|
- |
|
| 9399 |
def split_bulk_order(order_id, split_order_quantity):
|
8560 |
def split_bulk_order(order_id, split_order_quantity):
|
| 9400 |
order = get_order(order_id)
|
8561 |
order = get_order(order_id)
|
| 9401 |
if split_order_quantity >=order.lineitems[0].quantity:
|
8562 |
if split_order_quantity >=order.lineitems[0].quantity:
|
| 9402 |
raise TransactionServiceException(115, "Split Quantity is greater than or equal to order quantity")
|
8563 |
raise TransactionServiceException(115, "Split Quantity is greater than or equal to order quantity")
|
| 9403 |
if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW, OrderStatus.LOW_INV_PO_RAISED, OrderStatus.LOW_INV_REVERSAL_IN_PROCESS, OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT, OrderStatus.CAPTURE_IN_PROCESS, OrderStatus.REJECTED, OrderStatus.ACCEPTED]:
|
8564 |
if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING,
|
| - |
|
8565 |
OrderStatus.INVENTORY_LOW,
|
| - |
|
8566 |
OrderStatus.LOW_INV_PO_RAISED,
|
| - |
|
8567 |
OrderStatus.LOW_INV_REVERSAL_IN_PROCESS,
|
| - |
|
8568 |
OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT,
|
| - |
|
8569 |
OrderStatus.CAPTURE_IN_PROCESS, OrderStatus.REJECTED,
|
| - |
|
8570 |
OrderStatus.ACCEPTED]:
|
| 9404 |
raise TransactionServiceException(115, "Order not allowed to be split")
|
8571 |
raise TransactionServiceException(115, "Order not allowed to be split")
|
| 9405 |
|
8572 |
|
| 9406 |
new_order = __clone_order(order, False, order.cod, False)
|
8573 |
new_order = __clone_order(order, False, order.cod, False)
|
| 9407 |
|
8574 |
|
| 9408 |
new_order.lineitems[0].quantity = split_order_quantity
|
8575 |
new_order.lineitems[0].quantity = split_order_quantity
|
| Line 10186... |
Line 9353... |
| 10186 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
9353 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
| 10187 |
if not returnOrder:
|
9354 |
if not returnOrder:
|
| 10188 |
return None
|
9355 |
return None
|
| 10189 |
return returnOrder
|
9356 |
return returnOrder
|
| 10190 |
|
9357 |
|
| 10191 |
def refund_return_order(returnOrderInfo, attrList):
|
- |
|
| 10192 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderInfo.id)
|
- |
|
| 10193 |
if returnOrder.returnStatus not in (OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_VALID], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_INVALID], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_LOST_IN_TRANSIT],OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_DAMAGED] ,OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_LOST_IN_TRANSIT], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_UNUSABLE], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_USABLE],OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_DAMAGED]):
|
- |
|
| 10194 |
print "************returnig false staus check"
|
- |
|
| 10195 |
return False
|
- |
|
| 10196 |
if returnOrder.returnAction == ReturnAction.REFUND:
|
- |
|
| 10197 |
returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REFUND_IN_PROCESS]
|
- |
|
| 10198 |
else:
|
- |
|
| 10199 |
returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REPLACEMENT_ORDER_CREATED]
|
- |
|
| 10200 |
detailsMap = {}
|
- |
|
| 10201 |
if returnOrder.refundedAt or returnOrder.replacementOrderId:
|
- |
|
| 10202 |
raise TransactionServiceException(145, "Refund/Replacemet already in Process for this return order")
|
- |
|
| 10203 |
if returnOrder.receivedQuantity != returnOrder.returnQuantity:
|
- |
|
| 10204 |
raise TransactionServiceException(145, "Quantity mismatch Return vs Received")
|
- |
|
| 10205 |
detailsMap['RefundReason'] = returnOrderInfo.refundReason
|
- |
|
| 10206 |
detailsMap['RefundType'] = returnOrderInfo.refundType
|
- |
|
| 10207 |
detailsMap['RefundedBy'] = returnOrderInfo.refundedBy
|
- |
|
| 10208 |
detailsMap['RefundAmount'] = returnOrderInfo.refundAmount
|
- |
|
| 10209 |
detailsMap['RefundDescription'] = returnOrderInfo.refundDescription
|
- |
|
| 10210 |
print detailsMap
|
- |
|
| 10211 |
print "*************************8"
|
- |
|
| 10212 |
if(not __process_return_order(returnOrder, detailsMap)):
|
- |
|
| 10213 |
raise TransactionServiceException(145, "Issue in __process_return_order")
|
- |
|
| 10214 |
returnOrder.processedAt = datetime.datetime.now()
|
- |
|
| 10215 |
__markReturnTransactionAsProcessed(returnOrder.returnTransaction_id)
|
- |
|
| 10216 |
set_order_attributes(returnOrder.orderId, attrList)
|
- |
|
| 10217 |
return True
|
- |
|
| 10218 |
|
- |
|
| 10219 |
def __markReturnTransactionAsProcessed(returnTransactionId):
|
- |
|
| 10220 |
returnTransaction = ReturnTransaction.get_by(id=returnTransactionId)
|
- |
|
| 10221 |
if returnTransaction is None:
|
- |
|
| 10222 |
raise TransactionServiceException(101, "No Return Transaction Found")
|
- |
|
| 10223 |
unprocessedOrders = []
|
- |
|
| 10224 |
for retOrder in returnTransaction.returnOrders:
|
- |
|
| 10225 |
if retOrder.reshippedAt is None and retOrder.refundedAt is None:
|
- |
|
| 10226 |
unprocessedOrders.append(retOrder)
|
- |
|
| 10227 |
if len(unprocessedOrders) == 0:
|
- |
|
| 10228 |
returnTransaction.processedAt = datetime.datetime.now()
|
- |
|
| 10229 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[ReturnTransactionStatus.PROCESSED]
|
- |
|
| 10230 |
session.commit()
|
- |
|
| 10231 |
|
- |
|
| 10232 |
|
- |
|
| 10233 |
def get_return_orders_info_map(order_ids=None, statuses=None):
|
9358 |
def get_return_orders_info_map(order_ids=None, statuses=None):
|
| 10234 |
returnOrdersInfoQuery = ReturnOrderInfo.query
|
9359 |
returnOrdersInfoQuery = ReturnOrderInfo.query
|
| 10235 |
if order_ids is not None and len(order_ids)>0:
|
9360 |
if order_ids is not None and len(order_ids)>0:
|
| 10236 |
returnOrdersInfoQuery = returnOrdersInfoQuery.filter(ReturnOrderInfo.orderId.in_(tuple(order_ids)))
|
9361 |
returnOrdersInfoQuery = returnOrdersInfoQuery.filter(ReturnOrderInfo.orderId.in_(tuple(order_ids)))
|
| 10237 |
if statuses is not None:
|
9362 |
if statuses is not None:
|
| Line 10402... |
Line 9527... |
| 10402 |
|
9527 |
|
| 10403 |
def get_return_transaction(transaction_id):
|
9528 |
def get_return_transaction(transaction_id):
|
| 10404 |
transaction = ReturnTransaction.get_by(id=transaction_id)
|
9529 |
transaction = ReturnTransaction.get_by(id=transaction_id)
|
| 10405 |
if not transaction:
|
9530 |
if not transaction:
|
| 10406 |
raise TransactionServiceException(108, "no such transaction")
|
9531 |
raise TransactionServiceException(108, "no such transaction")
|
| - |
|
9532 |
|
| 10407 |
return transaction
|
9533 |
return transaction
|
| 10408 |
|
9534 |
|
| 10409 |
def get_return_orders_for_return_transaction(returnTransactionId):
|
9535 |
def get_return_orders_for_return_transaction(returnTransactionId):
|
| 10410 |
returnOrders = ReturnOrderInfo.query.filter_by(returnTransactionId=returnTransactionId).all()
|
9536 |
returnOrders = ReturnOrderInfo.query.filter_by(returnTransactionId=returnTransactionId).all()
|
| 10411 |
|
9537 |
|
| Line 10447... |
Line 9573... |
| 10447 |
else:
|
9573 |
else:
|
| 10448 |
returnOrder.refundDescription = "No Pickup Required for this item. Refund in Process. It takes 7-10 working days to be in actual credit."
|
9574 |
returnOrder.refundDescription = "No Pickup Required for this item. Refund in Process. It takes 7-10 working days to be in actual credit."
|
| 10449 |
else:
|
9575 |
else:
|
| 10450 |
raise TransactionServiceException(114, "This order can't be refunded")
|
9576 |
raise TransactionServiceException(114, "This order can't be refunded")
|
| 10451 |
|
9577 |
|
| 10452 |
__create_refund(order)
|
9578 |
__create_refund(order, returnOrder)
|
| 10453 |
|
9579 |
|
| 10454 |
returnOrder.refundedAt = datetime.datetime.now()
|
9580 |
returnOrder.refundedAt = datetime.datetime.now()
|
| 10455 |
returnOrder.refundedBy = refundedBy
|
9581 |
returnOrder.refundedBy = refundedBy
|
| 10456 |
returnOrder.refundReason = refundReason
|
9582 |
returnOrder.refundReason = refundReason
|
| 10457 |
returnOrder.refundAmount = refundAmount
|
9583 |
returnOrder.refundAmount = refundAmount
|
| Line 10636... |
Line 9762... |
| 10636 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
9762 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
| 10637 |
elif new_status == ReturnTransactionStatus.PROCESSED:
|
9763 |
elif new_status == ReturnTransactionStatus.PROCESSED:
|
| 10638 |
if returnOrdersIds and len(returnOrdersIds)>0:
|
9764 |
if returnOrdersIds and len(returnOrdersIds)>0:
|
| 10639 |
unprocessedOrders = []
|
9765 |
unprocessedOrders = []
|
| 10640 |
for retOrder in returnTransaction.returnOrders:
|
9766 |
for retOrder in returnTransaction.returnOrders:
|
| 10641 |
if retOrder.reshippedAt is None or retOrder.refundedAt is None:
|
9767 |
if retOrder.reshippedAt is None and retOrder.refundedAt is None:
|
| 10642 |
unprocessedOrders.append(retOrder)
|
9768 |
unprocessedOrders.append(retOrder)
|
| 10643 |
if len(returnOrdersIds) < len(returnTransaction.returnOrders):
|
9769 |
if len(returnOrdersIds) < len(returnTransaction.returnOrders):
|
| 10644 |
if len(returnOrdersIds) == len(unprocessedOrders):
|
9770 |
if len(returnOrdersIds) == len(unprocessedOrders):
|
| 10645 |
for ret_Order in unprocessedOrders:
|
9771 |
for ret_Order in unprocessedOrders:
|
| 10646 |
if ret_Order.returnAction == ReturnAction.REFUND:
|
9772 |
if ret_Order.returnAction == ReturnAction.REFUND:
|
| Line 10656... |
Line 9782... |
| 10656 |
else:
|
9782 |
else:
|
| 10657 |
ret_Order.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REPLACEMENT_ORDER_CREATED]
|
9783 |
ret_Order.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REPLACEMENT_ORDER_CREATED]
|
| 10658 |
returnTransaction.processedAt = datetime.datetime.now()
|
9784 |
returnTransaction.processedAt = datetime.datetime.now()
|
| 10659 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
9785 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
| 10660 |
for returnOrderId in returnOrdersIds:
|
9786 |
for returnOrderId in returnOrdersIds:
|
| 10661 |
__process_return_order(get_return_order_info(returnOrderId), returnOrdersAttrMap.get(returnOrderId))
|
9787 |
__process_return_order(get_return_order_info(returnOrderId), returnOrdersAttrMap.get(returnOrderId))
|
| 10662 |
|
- |
|
| 10663 |
elif new_status == ReturnTransactionStatus.COMPLETED:
|
- |
|
| 10664 |
mark_return_transaction_complete(returnTransaction.id)
|
- |
|
| 10665 |
|
- |
|
| 10666 |
elif new_status == ReturnTransactionStatus.CLOSED:
|
- |
|
| 10667 |
if not returnTransaction.status == ReturnTransactionStatus._VALUES_TO_NAMES[ReturnTransactionStatus.COMPLETED]:
|
9788 |
elif new_status == ReturnTransactionStatus.CLOSED and mark_return_transaction_complete(returnTransaction.id):
|
| 10668 |
raise
|
- |
|
| 10669 |
returnTransaction.closedAt = datetime.datetime.now()
|
9789 |
returnTransaction.closedAt = datetime.datetime.now()
|
| 10670 |
for ret_Order in returnTransaction.returnOrders:
|
9790 |
for ret_Order in returnTransaction.returnOrders:
|
| 10671 |
ret_Order.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.CLOSED]
|
9791 |
ret_Order.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.CLOSED]
|
| 10672 |
__communicate_customer_for_closed_transaction(returnTransaction)
|
9792 |
__communicate_customer_for_closed_transaction(returnTransaction)
|
| 10673 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
9793 |
returnTransaction.status = ReturnTransactionStatus._VALUES_TO_NAMES[new_status]
|
| 10674 |
|
9794 |
|
| 10675 |
session.commit()
|
9795 |
session.commit()
|
| 10676 |
return True
|
9796 |
return True
|
| 10677 |
|
- |
|
| 10678 |
|
9797 |
|
| 10679 |
def create_return_pickup_request(returnOrderIds):
|
9798 |
def create_return_pickup_request(returnOrderIds, providerId):
|
| 10680 |
returnPickupRequest = ReturnPickupRequest()
|
9799 |
returnPickupRequest = ReturnPickupRequest()
|
| - |
|
9800 |
returnPickupRequest.logisticsProviderId = providerId
|
| 10681 |
returnPickupRequest.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PENDING]
|
9801 |
returnPickupRequest.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_REQUESTED]
|
| 10682 |
|
9802 |
|
| 10683 |
if len(returnOrderIds) > 0:
|
9803 |
if len(returnOrderIds) > 0:
|
| 10684 |
for returnOrderId in returnOrderIds:
|
9804 |
for returnOrderId in returnOrderIds:
|
| 10685 |
returnOrder = get_return_order_info(returnOrderId)
|
9805 |
returnOrder = get_return_order_info(returnOrderId)
|
| 10686 |
returnOrder.logisticsRequestId = returnPickupRequest.id
|
9806 |
returnOrder.logisticsRequestId = returnPickupRequest.id
|
| 10687 |
session.commit()
|
9807 |
session.commit()
|
| 10688 |
return returnPickupRequest.id
|
9808 |
return True
|
| 10689 |
|
9809 |
|
| 10690 |
return 0
|
9810 |
return False
|
| 10691 |
|
9811 |
|
| 10692 |
def update_return_pickup_request(returnPickupRequest):
|
9812 |
def update_return_pickup_request(returnPickupRequest):
|
| 10693 |
print returnPickupRequest
|
- |
|
| 10694 |
try:
|
9813 |
try:
|
| 10695 |
returnPickupReq = ReturnPickupRequest.get_by(id=returnPickupRequest.id)
|
9814 |
returnPickupReq = ReturnPickupRequest.get_by(id=returnPickupRequest.id)
|
| 10696 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_REQUESTED:
|
- |
|
| 10697 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
- |
|
| 10698 |
|
- |
|
| 10699 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_CONFIRMED:
|
9815 |
if returnPickupRequest.pickupRequestNo:
|
| 10700 |
returnPickupReq.logisticsProviderId = returnPickupRequest.logisticsProviderId
|
- |
|
| 10701 |
returnPickupReq.pickupRequestNo = returnPickupRequest.pickupRequestNo
|
9816 |
returnPickupReq.pickupRequestNo = returnPickupRequest.pickupRequestNo
|
| 10702 |
returnPickupReq.confirmedAt = datetime.datetime.now()
|
9817 |
returnPickupReq.confirmedAt = datetime.datetime.now()
|
| 10703 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
9818 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_CONFIRMED]
|
| 10704 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
9819 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
| 10705 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_REQUEST_RAISED]:
|
9820 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_REQUEST_RAISED]:
|
| 10706 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]
|
9821 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]
|
| 10707 |
else:
|
9822 |
else:
|
| 10708 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_CONFIRMED]
|
9823 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_CONFIRMED]
|
| 10709 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_SCHEDULED:
|
9824 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_SCHEDULED:
|
| 10710 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
9825 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[returnPickupRequest.pickupStatus]
|
| 10711 |
returnPickupReq.promised_pickup_timestamp = to_py_date(returnPickupRequest.promised_pickup_timestamp)
|
9826 |
returnPickupReq.promised_pickup_timestamp = datetime.datetime.now()+timedelta(days=2)
|
| 10712 |
returnOrdersMap = {}
|
9827 |
returnOrdersMap = {}
|
| 10713 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all()
|
9828 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all()
|
| 10714 |
for returnOrder in returnOrders:
|
9829 |
for returnOrder in returnOrders:
|
| 10715 |
returnTxn = returnOrders[0].returnTransaction
|
9830 |
returnTxn = returnOrders[0].returnTransaction
|
| 10716 |
if returnOrdersMap.has_key(returnTxn.address_id):
|
9831 |
if returnOrdersMap.has_key(returnTxn.address_id):
|
| Line 10724... |
Line 9839... |
| 10724 |
for returnOrdersList in returnOrdersMap.values():
|
9839 |
for returnOrdersList in returnOrdersMap.values():
|
| 10725 |
try:
|
9840 |
try:
|
| 10726 |
communicate_pickup_details_to_customer(returnPickupReq, returnOrdersList)
|
9841 |
communicate_pickup_details_to_customer(returnPickupReq, returnOrdersList)
|
| 10727 |
except:
|
9842 |
except:
|
| 10728 |
print "Customer Communication Failed for the pickup Information"
|
9843 |
print "Customer Communication Failed for the pickup Information"
|
| 10729 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_IN_TRANSIT:
|
9844 |
if returnPickupRequest.pickedUpAt:
|
| 10730 |
returnPickupReq.pickedUpAt = to_py_date(returnPickupRequest.pickedUpAt)
|
9845 |
returnPickupReq.pickedUpAt = to_py_date(returnPickupRequest.pickedUpAt)
|
| 10731 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_IN_TRANSIT]
|
9846 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_IN_TRANSIT]
|
| 10732 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
9847 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
| 10733 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]:
|
9848 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED]:
|
| 10734 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RETURN_IN_TRANSIT]
|
9849 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RETURN_IN_TRANSIT]
|
| 10735 |
else:
|
9850 |
else:
|
| 10736 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RETURN_IN_TRANSIT]
|
- |
|
| 10737 |
if returnPickupRequest.pickupStatus == ReturnTxnPickupStatus.PICKUP_RECEIVED:
|
- |
|
| 10738 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_RECEIVED]
|
- |
|
| 10739 |
for returnOrder in ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupRequest.id).all():
|
- |
|
| 10740 |
if returnOrder.returnStatus not in (OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_VALID], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_INVALID], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_LOST_IN_TRANSIT], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_DAMAGED],OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_VALID],OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_LOST_IN_TRANSIT], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_UNUSABLE], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_USABLE], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_DAMAGED]):
|
9851 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RETURN_IN_TRANSIT]
|
| 10741 |
return False
|
- |
|
| 10742 |
returnOrder.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.QUALITY_CHECK]
|
- |
|
| 10743 |
session.commit()
|
9852 |
session.commit()
|
| 10744 |
return True
|
9853 |
return True
|
| 10745 |
except:
|
9854 |
except:
|
| 10746 |
traceback.print_exc()
|
- |
|
| 10747 |
return False
|
9855 |
return False
|
| 10748 |
|
9856 |
|
| 10749 |
def receive_return_pickup(returnOrdersMap, req_id):
|
9857 |
def receive_return_pickup(returnOrdersMap, req_id):
|
| 10750 |
#returnPickupReq = ReturnPickupRequest.get_by(id=req_id)
|
9858 |
returnPickupReq = ReturnPickupRequest.get_by(id=req_id)
|
| 10751 |
#returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==req_id).all()
|
9859 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==req_id).all()
|
| 10752 |
#if len(returnOrders)!=len(returnOrdersMap.keys()):
|
9860 |
if len(returnOrders)!=len(returnOrdersMap.keys()):
|
| 10753 |
# raise TransactionServiceException(101, "All Returns Orders Information Missing. Please Fill All Orders Info")
|
9861 |
raise TransactionServiceException(101, "All Returns Orders Information Missing. Please Fill All Orders Info")
|
| 10754 |
|
- |
|
| 10755 |
for returnOrderId in returnOrdersMap.iterkeys():
|
9862 |
for returnOrder in returnOrders:
|
| 10756 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
- |
|
| 10757 |
if returnOrder is None:
|
- |
|
| 10758 |
raise TransactionServiceException(101, "Return order missing")
|
- |
|
| 10759 |
returnOrderDetails = returnOrdersMap.get(returnOrder.id)
|
9863 |
returnOrderDetails = returnOrdersMap.get(returnOrder.id)
|
| 10760 |
receiveCondition = ReceivedReturnType._NAMES_TO_VALUES[returnOrderDetails.get('ReceiveCondition')]
|
9864 |
receiveCondition = ReceivedReturnType._NAMES_TO_VALUES[returnOrderDetails.get('ReceiveCondition')]
|
| 10761 |
quantity = int(returnOrderDetails.get('Quantity'))
|
9865 |
quantity = int(returnOrderDetails.get('Quantity'))
|
| 10762 |
returnOrder.receivedReturnType = receiveCondition
|
- |
|
| 10763 |
returnOrder.receivedReturnType = receiveCondition
|
9866 |
|
| 10764 |
if returnOrder.returnStatus in [OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_CONFIRMED], OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RETURN_IN_TRANSIT]]:
|
9867 |
if returnOrder.returnStatus in [OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_PICKUP_CONFIRMED], OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_RETURN_IN_TRANSIT]]:
|
| 10765 |
if receiveCondition == ReceivedReturnType.PRESTINE:
|
9868 |
if receiveCondition == ReceivedReturnType.PRESTINE:
|
| 10766 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_PRESTINE]
|
9869 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_RECEIVED_PRESTINE]
|
| 10767 |
elif receiveCondition == ReceivedReturnType.DAMAGED:
|
9870 |
elif receiveCondition == ReceivedReturnType.DAMAGED:
|
| 10768 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_DAMAGED]
|
9871 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_RECEIVED_DAMAGED]
|
| 10769 |
elif receiveCondition == ReceivedReturnType.LOST_IN_TRANSIT:
|
9872 |
elif receiveCondition == ReceivedReturnType.LOST_IN_TRANSIT:
|
| 10770 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_LOST_IN_TRANSIT]
|
9873 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.DOA_LOST_IN_TRANSIT]
|
| 10771 |
returnOrder.receivedAt = datetime.datetime.now()
|
9874 |
returnOrder.receivedAt = datetime.datetime.now()
|
| 10772 |
returnOrder.receivedQuantity = quantity
|
9875 |
returnOrder.receivedQuantity = quantity
|
| 10773 |
elif returnOrder.returnStatus in [OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_CONFIRMED], OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RETURN_IN_TRANSIT]]:
|
9876 |
elif returnOrder.returnStatus in [OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_PICKUP_CONFIRMED], OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_RETURN_IN_TRANSIT]]:
|
| 10774 |
if receiveCondition == ReceivedReturnType.PRESTINE:
|
9877 |
if receiveCondition == ReceivedReturnType.PRESTINE:
|
| 10775 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_PRESTINE]
|
9878 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_RECEIVED_PRESTINE]
|
| 10776 |
elif receiveCondition == ReceivedReturnType.DAMAGED:
|
9879 |
elif receiveCondition == ReceivedReturnType.DAMAGED:
|
| 10777 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_DAMAGED]
|
9880 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_RECEIVED_DAMAGED]
|
| 10778 |
elif receiveCondition == ReceivedReturnType.LOST_IN_TRANSIT:
|
9881 |
elif receiveCondition == ReceivedReturnType.LOST_IN_TRANSIT:
|
| 10779 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_LOST_IN_TRANSIT]
|
9882 |
returnOrder.returnStatus = OrderStatus._NAMES_TO_VALUES[OrderStatus.RET_LOST_IN_TRANSIT]
|
| 10780 |
returnOrder.receivedAt = datetime.datetime.now()
|
9883 |
returnOrder.receivedAt = datetime.datetime.now()
|
| 10781 |
returnOrder.receivedQuantity = quantity
|
9884 |
returnOrder.receivedQuantity = quantity
|
| 10782 |
else:
|
9885 |
else:
|
| 10783 |
return False
|
9886 |
return False
|
| 10784 |
|
9887 |
|
| Line 10786... |
Line 9889... |
| 10786 |
"RET_RECEIVED_PRESTINE" : ScanType.SALE_RET,
|
9889 |
"RET_RECEIVED_PRESTINE" : ScanType.SALE_RET,
|
| 10787 |
"RET_RECEIVED_DAMAGED" : ScanType.SALE_RET_UNUSABLE,
|
9890 |
"RET_RECEIVED_DAMAGED" : ScanType.SALE_RET_UNUSABLE,
|
| 10788 |
"RET_LOST_IN_TRANSIT" : ScanType.LOST_IN_TRANSIT,
|
9891 |
"RET_LOST_IN_TRANSIT" : ScanType.LOST_IN_TRANSIT,
|
| 10789 |
"DOA_RECEIVED_PRESTINE" : ScanType.DOA_IN,
|
9892 |
"DOA_RECEIVED_PRESTINE" : ScanType.DOA_IN,
|
| 10790 |
"DOA_RECEIVED_DAMAGED" : ScanType.DOA_IN,
|
9893 |
"DOA_RECEIVED_DAMAGED" : ScanType.DOA_IN,
|
| 10791 |
"DOA_LOST_IN_TRANSIT" : ScanType.LOST_IN_TRANSIT
|
9894 |
"DOA_LOST_IN_TRANSI" : ScanType.LOST_IN_TRANSIT
|
| 10792 |
}
|
9895 |
}
|
| 10793 |
inventoryClient = InventoryClient().get_client()
|
9896 |
inventoryClient = InventoryClient().get_client()
|
| 10794 |
warehouse = inventoryClient.getWarehouse(returnOrder.warehouse_id)
|
9897 |
warehouse = inventoryClient.getWarehouse(returnOrders[0].warehouse_id)
|
| 10795 |
warehouseClient = WarehouseClient().get_client()
|
9898 |
warehouseClient = WarehouseClient().get_client()
|
| 10796 |
|
9899 |
|
| 10797 |
for returnOrderId in returnOrdersMap.iterkeys():
|
9900 |
for returnOrder in returnOrders:
|
| 10798 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
- |
|
| 10799 |
returnOrderDetails = returnOrdersMap.get(returnOrder.id)
|
9901 |
returnOrderDetails = returnOrdersMap.get(returnOrder.id)
|
| 10800 |
warehouse = inventoryClient.getWarehouse(returnOrder.warehouse_id)
|
9902 |
warehouse = None
|
| 10801 |
|
9903 |
|
| 10802 |
serialNumbers = []
|
9904 |
serialNumbers = []
|
| 10803 |
if returnOrderDetails.has_key('SerialNumbers'):
|
9905 |
if returnOrderDetails.has_key('SerialNumbers'):
|
| 10804 |
serialNumbersSplitted = returnOrderDetails.get('SerialNumbers').split(',')
|
9906 |
serialNumbers = returnOrderDetails.get('SerialNumbers').split(',')
|
| 10805 |
serialNumbers = []
|
- |
|
| 10806 |
for t in serialNumbersSplitted:
|
- |
|
| 10807 |
if t.strip() !="":
|
- |
|
| 10808 |
serialNumbers.append(t.strip())
|
- |
|
| 10809 |
|
9907 |
|
| 10810 |
scanFreebie = False
|
9908 |
scanFreebie = False
|
| 10811 |
if returnOrderDetails.has_key('ScanFreebie') and returnOrderDetails.get('ScanFreebie')=='yes':
|
9909 |
if returnOrderDetails.has_key('ScanFreebie') and returnOrderDetails.get('ScanFreebie')=='yes':
|
| 10812 |
scanFreebie = True
|
9910 |
scanFreebie = True
|
| 10813 |
quantity = int(returnOrderDetails.get('Quantity'))
|
9911 |
quantity = int(returnOrderDetails.get('Quantity'))
|
| 10814 |
|
9912 |
|
| Line 10850... |
Line 9948... |
| 10850 |
try:
|
9948 |
try:
|
| 10851 |
warehouseClient.scanfreebie(order.id, order.freebieItemId, 0, scanType)
|
9949 |
warehouseClient.scanfreebie(order.id, order.freebieItemId, 0, scanType)
|
| 10852 |
except:
|
9950 |
except:
|
| 10853 |
warehouseClient = WarehouseClient().get_client()
|
9951 |
warehouseClient = WarehouseClient().get_client()
|
| 10854 |
warehouseClient.scanfreebie(order.id, order.freebieItemId, 0, scanType)
|
9952 |
warehouseClient.scanfreebie(order.id, order.freebieItemId, 0, scanType)
|
| 10855 |
|
- |
|
| 10856 |
|
9953 |
|
| 10857 |
isValid = returnOrderDetails.get('productUsable')
|
- |
|
| 10858 |
if returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_RECEIVED_PRESTINE]:
|
9954 |
returnPickupReq.pickupStatus = ReturnTxnPickupStatus._VALUES_TO_NAMES[ReturnTxnPickupStatus.PICKUP_RECEIVED]
|
| 10859 |
if isValid == "true":
|
- |
|
| 10860 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_VALID]
|
- |
|
| 10861 |
else:
|
- |
|
| 10862 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_CERT_INVALID]
|
- |
|
| 10863 |
|
- |
|
| 10864 |
elif returnOrder.returnStatus == OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_RECEIVED_PRESTINE]:
|
- |
|
| 10865 |
if isValid == "true":
|
- |
|
| 10866 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_USABLE]
|
- |
|
| 10867 |
else:
|
- |
|
| 10868 |
returnOrder.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PRODUCT_UNUSABLE]
|
- |
|
| 10869 |
session.commit()
|
9955 |
session.commit()
|
| 10870 |
return True
|
9956 |
return True
|
| 10871 |
|
- |
|
| 10872 |
|
9957 |
|
| 10873 |
def validate_return_pickup(returnPickupId, returnOrdersMap):
|
9958 |
def validate_return_pickup(returnPickupId, returnOrdersMap):
|
| 10874 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupId).all()
|
9959 |
returnOrders = ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==returnPickupId).all()
|
| 10875 |
if len(returnOrders)!=len(returnOrdersMap.keys()):
|
9960 |
if len(returnOrders)!=len(returnOrdersMap.keys()):
|
| 10876 |
raise TransactionServiceException(101, "All Returns Orders Information Missing. Please Fill All Orders Info")
|
9961 |
raise TransactionServiceException(101, "All Returns Orders Information Missing. Please Fill All Orders Info")
|
| Line 10953... |
Line 10038... |
| 10953 |
if not overrideWarranty and itemCondition is not None:
|
10038 |
if not overrideWarranty and itemCondition is not None:
|
| 10954 |
if itemCondition == 'DAMAGED':
|
10039 |
if itemCondition == 'DAMAGED':
|
| 10955 |
query = query.filter(LineItem.damaged_expiry_timestamp > datetime.datetime.now())
|
10040 |
query = query.filter(LineItem.damaged_expiry_timestamp > datetime.datetime.now())
|
| 10956 |
elif itemCondition == 'DEFECTIVE':
|
10041 |
elif itemCondition == 'DEFECTIVE':
|
| 10957 |
query = query.filter(LineItem.warranty_expiry_timestamp > datetime.datetime.now())
|
10042 |
query = query.filter(LineItem.warranty_expiry_timestamp > datetime.datetime.now())
|
| 10958 |
|
10043 |
|
| 10959 |
orders = query.order_by(desc(Order.delivery_timestamp)).all()
|
10044 |
orders = query.order_by(desc(Order.delivery_timestamp)).all()
|
| 10960 |
return orders
|
10045 |
return orders
|
| 10961 |
|
10046 |
|
| 10962 |
def get_eligible_return_orders_for_pickup(customerId):
|
10047 |
def get_eligible_return_orders_for_pickup(customerId):
|
| 10963 |
return session.query(ReturnOrderInfo).join((ReturnTransaction,ReturnOrderInfo.returnTransaction_id==ReturnTransaction.id)).filter(ReturnTransaction.customer_id==customerId).filter(or_(ReturnOrderInfo.returnStatus==OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_REQUEST_RAISED], ReturnOrderInfo.returnStatus==OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_REQUEST_RAISED])).filter(ReturnOrderInfo.logisticsRequestId==None).all()
|
10048 |
return session.query(ReturnOrderInfo).join((ReturnTransaction,ReturnOrderInfo.returnTransaction_id==ReturnTransaction.id)).filter(ReturnTransaction.customer_id==customerId).filter(or_(ReturnOrderInfo.returnStatus==OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_PICKUP_REQUEST_RAISED], ReturnOrderInfo.returnStatus==OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_PICKUP_REQUEST_RAISED])).filter(ReturnOrderInfo.logisticsRequestId==None).all()
|
| 10964 |
|
10049 |
|
| 10965 |
def validate_return_transaction(customerId, returnOrdersMap, itemCondition, overrideWarranty):
|
10050 |
def validate_return_transaction(customerId, returnOrdersMap, itemCondition, overrideWarranty):
|
| 10966 |
eligibleOrders = get_eligible_orders_for_return(customerId, itemCondition, overrideWarranty)
|
10051 |
eligibleOrders = get_eligible_orders_for_return(customerId, itemCondition, overrideWarranty)
|
| 10967 |
|
10052 |
|
| 10968 |
ordersMap = {}
|
10053 |
ordersMap = {}
|
| 10969 |
for order in eligibleOrders:
|
10054 |
for order in eligibleOrders:
|
| 10970 |
ordersMap[order.id] = order.lineitems[0].quantity - order.lineitems[0].returnQty
|
10055 |
ordersMap[order.id] = order.lineitems[0].quantity - order.lineitems[0].returnQty
|
| 10971 |
|
10056 |
|
| 10972 |
for orderId, returnOrderQty in returnOrdersMap.items():
|
10057 |
for orderId, returnOrderQty in returnOrdersMap.items():
|
| 10973 |
if returnOrderQty > ordersMap.get(orderId):
|
10058 |
if returnOrderQty > ordersMap.get(orderId):
|
| 10974 |
return False
|
10059 |
return False
|
| 10975 |
return True
|
10060 |
return True
|
| 10976 |
|
10061 |
|
| 10977 |
def get_return_pickup_request(returnPickupId):
|
10062 |
def get_return_pickup_request(returnPickupId):
|
| 10978 |
return ReturnPickupRequest.get_by(id=returnPickupId)
|
10063 |
return ReturnPickupRequest.get_by(id=returnPickupId)
|
| 10979 |
|
10064 |
|
| 10980 |
def mark_return_not_required_orders_as_processed(t_returnOrderInfo):
|
- |
|
| 10981 |
returnOrderInfo = ReturnOrderInfo.get_by(id=t_returnOrderInfo.id)
|
- |
|
| 10982 |
if returnOrderInfo is None:
|
- |
|
| 10983 |
raise TransactionServiceException(101, "No Return Order Found")
|
- |
|
| 10984 |
|
- |
|
| 10985 |
if returnOrderInfo.returnPickupType == ReturnPickupType.NOT_REQUIRED:
|
- |
|
| 10986 |
if returnOrderInfo.returnAction == ReturnAction.REPLACEMENT or t_returnOrderInfo.refundType!= RefundType.WALLET:
|
- |
|
| 10987 |
raise TransactionServiceException(101, "Refund Type not Defined for return order:- "+str(returnOrderInfo.id))
|
- |
|
| 10988 |
|
- |
|
| 10989 |
detailsMap = {}
|
- |
|
| 10990 |
if returnOrderInfo.refundedAt :
|
- |
|
| 10991 |
raise TransactionServiceException(145, "Refund already in Process for this return order")
|
- |
|
| 10992 |
detailsMap['RefundReason'] = "As per Customer Request"
|
- |
|
| 10993 |
detailsMap['RefundType'] = t_returnOrderInfo.refundType
|
- |
|
| 10994 |
detailsMap['RefundedBy'] = t_returnOrderInfo.refundedBy
|
- |
|
| 10995 |
detailsMap['RefundAmount'] = t_returnOrderInfo.refundAmount
|
- |
|
| 10996 |
returnOrderInfo.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REFUND_IN_PROCESS]
|
- |
|
| 10997 |
if(not __process_return_order(returnOrderInfo, detailsMap)):
|
- |
|
| 10998 |
raise TransactionServiceException(145, "Issue in __process_return_order")
|
- |
|
| 10999 |
returnOrderInfo.processedAt = datetime.datetime.now()
|
- |
|
| 11000 |
returnOrderInfo.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.REFUND_DONE]
|
- |
|
| 11001 |
session.commit()
|
- |
|
| 11002 |
__markReturnTransactionAsProcessed(returnOrderInfo.returnTransaction_id)
|
- |
|
| 11003 |
return True
|
- |
|
| 11004 |
|
10065 |
|
| - |
|
10066 |
def mark_return_not_required_orders_as_processed(returnTransactionId):
|
| - |
|
10067 |
returnTransaction = ReturnTransaction.get_by(id=returnTransactionId)
|
| - |
|
10068 |
if returnTransaction is None:
|
| - |
|
10069 |
raise TransactionServiceException(101, "No Return Transaction Found")
|
| - |
|
10070 |
|
| - |
|
10071 |
eligibleOrders = []
|
| - |
|
10072 |
for returnOrder in returnTransaction.returnOrders:
|
| - |
|
10073 |
if returnOrder.returnPickupType == ReturnPickupType.NOT_REQUIRED:
|
| - |
|
10074 |
if returnOrder.returnAction and returnOrder.refundType == RefundType.INIT:
|
| - |
|
10075 |
raise TransactionServiceException(101, "Refund Type not Defined for return order:- "+str(returnOrder.id))
|
| - |
|
10076 |
eligibleOrders.append(returnOrder)
|
| - |
|
10077 |
|
| - |
|
10078 |
|
| - |
|
10079 |
returnOrdersAttrMap = {}
|
| - |
|
10080 |
returnOrderIds = []
|
| - |
|
10081 |
|
| - |
|
10082 |
for returnOrder in eligibleOrders:
|
| - |
|
10083 |
returnOrderIds.append(returnOrder.id)
|
| - |
|
10084 |
if returnOrder.returnAction:
|
| - |
|
10085 |
detailsMap = {}
|
| - |
|
10086 |
if returnOrder.refundedAt:
|
| - |
|
10087 |
raise TransactionServiceException(145, "Refund already in Process for this return order")
|
| - |
|
10088 |
detailsMap['RefundReason'] = "As per Customer Request"
|
| - |
|
10089 |
detailsMap['RefundType'] = returnOrder.refundType
|
| - |
|
10090 |
detailsMap['RefundedBy'] = "CRM Executive"
|
| - |
|
10091 |
detailsMap['RefundAmount'] = returnOrder.refundAmount
|
| - |
|
10092 |
returnOrdersAttrMap[returnOrder.id] = detailsMap
|
| - |
|
10093 |
|
| - |
|
10094 |
|
| - |
|
10095 |
return change_return_transaction_status(returnTransactionId, ReturnTransactionStatus.PROCESSED, returnOrderIds, returnOrdersAttrMap)
|
| 11005 |
|
10096 |
|
| 11006 |
def get_all_return_orders_for_return_pickup_request(logisticsRequestId):
|
10097 |
def get_all_return_orders_for_return_pickup_request(logisticsRequestId):
|
| 11007 |
return ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==logisticsRequestId).all()
|
10098 |
return ReturnOrderInfo.query.filter(ReturnOrderInfo.logisticsRequestId==logisticsRequestId).all()
|
| 11008 |
|
10099 |
|
| 11009 |
def __clone_return_order(returnOrder, splitOrderQty):
|
10100 |
def __clone_return_order(returnOrder, splitReturnOrderQty):
|
| 11010 |
if returnOrder.returnQuantity <= splitOrderQty or splitOrderQty<=0:
|
- |
|
| 11011 |
raise TransactionServiceException(101, "SplitQty canot be equal to or greater than parent return order returnQty")
|
- |
|
| 11012 |
returnOrder.returnQuantity = returnOrder.returnQuantity - splitOrderQty
|
- |
|
| 11013 |
new_return_order = ReturnOrderInfo()
|
10101 |
returnOrderInfo = ReturnOrderInfo()
|
| 11014 |
new_return_order.returnTransaction = returnOrder.returnTransaction
|
- |
|
| 11015 |
new_return_order.masterOrderId = returnOrder.masterOrderId
|
- |
|
| 11016 |
new_return_order.orderId = returnOrder.orderId
|
10102 |
returnOrderInfo.orderId = returnOrder.orderId
|
| 11017 |
new_return_order.lineItemId = returnOrder.lineItemId
|
10103 |
returnOrderInfo.lineItemId = returnOrder.lineItemId
|
| 11018 |
new_return_order.logisticsRequestId = returnOrder.logisticsRequestId
|
- |
|
| 11019 |
new_return_order.returnQuantity = splitOrderQty
|
10104 |
returnOrderInfo.returnQuantity = splitReturnOrderQty
|
| 11020 |
new_return_order.receivedQuantity = returnOrder.receivedQuantity
|
- |
|
| 11021 |
new_return_order.createdAt = returnOrder.createdAt
|
10105 |
returnOrderInfo.createdAt = datetime.datetime.now()
|
| 11022 |
new_return_order.processedAt = returnOrder.processedAt
|
10106 |
if itemCondition=="DAMAGED":
|
| 11023 |
new_return_order.returnStatus = returnOrder.returnStatus
|
10107 |
returnOrderInfo.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.RET_REQUEST_RECEIVED]
|
| 11024 |
new_return_order.reshippedAt = returnOrder.reshippedAt
|
10108 |
else:
|
| 11025 |
new_return_order.receivedAt = returnOrder.receivedAt
|
- |
|
| 11026 |
new_return_order.refundReason = returnOrder.refundReason
|
10109 |
returnOrderInfo.returnStatus = OrderStatus._VALUES_TO_NAMES[OrderStatus.DOA_REQUEST_RECEIVED]
|
| 11027 |
new_return_order.refundedBy = returnOrder.refundedBy
|
- |
|
| 11028 |
new_return_order.refundedAt = returnOrder.refundedAt
|
10110 |
returnOrderInfo.masterOrderId = order.logisticsTransactionId
|
| 11029 |
new_return_order.warehouse_id = returnOrder.warehouse_id
|
10111 |
returnOrderInfo.warehouse_id = order.warehouse_id
|
| 11030 |
new_return_order.refundAmount = returnOrder.refundAmount
|
- |
|
| 11031 |
new_return_order.refundType = returnOrder.refundType
|
- |
|
| 11032 |
new_return_order.refundDescription = returnOrder.refundDescription
|
10112 |
returnOrderInfo.returnAction = returnInfo.returnAction
|
| 11033 |
new_return_order.returnPickupType = returnOrder.returnPickupType
|
- |
|
| 11034 |
new_return_order.shippingType = returnOrder.shippingType
|
- |
|
| 11035 |
new_return_order.replacementOrderId = returnOrder.replacementOrderId
|
- |
|
| 11036 |
new_return_order.receivedReturnType = returnOrder.receivedReturnType
|
- |
|
| 11037 |
new_return_order.freebieItemId = returnOrder.freebieItemId
|
10113 |
returnOrderInfo.freebieItemId = order.freebieItemId
|
| 11038 |
new_return_order.returnAction = returnOrder.returnAction
|
- |
|
| 11039 |
new_return_order.returnTxnResolutionStatus = returnOrder.returnTxnResolutionStatus
|
10114 |
returnOrderInfo.returnTxnResolutionStatus = ReturnTxnResolutionStatus._VALUES_TO_NAMES[ReturnTxnResolutionStatus.PENDING]
|
| 11040 |
new_return_order.lineitem = returnOrder.lineitem
|
- |
|
| 11041 |
new_return_order.returnPickUpRequest = returnOrder.returnPickUpRequest
|
- |
|
| 11042 |
return new_return_order
|
- |
|
| 11043 |
|
- |
|
| 11044 |
|
10115 |
|
| 11045 |
def get_seller_info(sellerId):
|
10116 |
def get_seller_info(sellerId):
|
| 11046 |
sellerInfo = SellerInfo()
|
10117 |
sellerInfo = SellerInfo()
|
| 11047 |
seller = Seller.get_by(id=sellerId)
|
10118 |
seller = Seller.get_by(id=sellerId)
|
| 11048 |
if seller is None:
|
10119 |
if seller is None:
|
| Line 11063... |
Line 10134... |
| 11063 |
|
10134 |
|
| 11064 |
def get_warehouse_address(addressId):
|
10135 |
def get_warehouse_address(addressId):
|
| 11065 |
address = WarehouseAddressMaster.get_by(id=addressId)
|
10136 |
address = WarehouseAddressMaster.get_by(id=addressId)
|
| 11066 |
return to_t_warehouse_address(address)
|
10137 |
return to_t_warehouse_address(address)
|
| 11067 |
|
10138 |
|
| 11068 |
def split_return_order_info(returnOrderId, splitOrderQty):
|
10139 |
def split_return_order_info(returnOrderId, splitReturnOrderQty):
|
| 11069 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
10140 |
returnOrder = ReturnOrderInfo.get_by(id=returnOrderId)
|
| 11070 |
if returnOrder is None:
|
10141 |
if returnOrder is None:
|
| 11071 |
raise TransactionServiceException(101, "No Return Order is there with this Order Id")
|
10142 |
raise TransactionServiceException(101, "No Return Order is there with this Order Id")
|
| 11072 |
new_return_order = __clone_return_order(returnOrder, splitOrderQty)
|
- |
|
| 11073 |
session.commit()
|
- |
|
| 11074 |
return new_return_order
|
- |
|
| 11075 |
|
10143 |
|
| 11076 |
#Seller would be used to get tin number
|
10144 |
#Seller would be used to get tin number
|
| 11077 |
def __get_seller(warehouse_id):
|
10145 |
def __get_seller(warehouse_id):
|
| 11078 |
#As of now we have hardcoded the company and
|
10146 |
#As of now we have hardcoded the company and
|
| 11079 |
#seller would be returned on basis warehouse and company
|
10147 |
#seller would be returned on basis warehouse and company
|
| - |
|
10148 |
#Seller changed to HSSPL. Effective Aug-1-2016 - Amit Gupta
|
| 11080 |
orgId=2
|
10149 |
orgId=3
|
| 11081 |
(sellerId,) = session.query(Seller.id).join((SellerWarehouse, Seller.id==SellerWarehouse.seller_id)).filter(Seller.organisation_id==orgId).filter(SellerWarehouse.warehouse_id==warehouse_id).first()
|
10150 |
(sellerId,) = session.query(Seller.id).join((SellerWarehouse, Seller.id==SellerWarehouse.seller_id)).filter(Seller.organisation_id==orgId).filter(SellerWarehouse.warehouse_id==warehouse_id).first()
|
| 11082 |
return sellerId
|
10151 |
return sellerId
|
| 11083 |
|
10152 |
|
| 11084 |
def add_shipment_delay(shipmentDelayDetail):
|
10153 |
def add_shipment_delay(shipmentDelayDetail):
|
| 11085 |
returnList = []
|
10154 |
returnList = []
|
| 11086 |
for delayObj in shipmentDelayDetail:
|
10155 |
for delayObj in shipmentDelayDetail:
|
| - |
|
10156 |
print delayObj.orderId
|
| - |
|
10157 |
print delayObj.delayReason
|
| - |
|
10158 |
print delayObj.delayReasonText
|
| - |
|
10159 |
print delayObj.delay
|
| 11087 |
order = get_order(delayObj.orderId)
|
10160 |
order = get_order(delayObj.orderId)
|
| 11088 |
if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.ACCEPTED]:
|
10161 |
if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.ACCEPTED]:
|
| 11089 |
returnList.append(delayObj.orderId)
|
10162 |
returnList.append(delayObj.orderId)
|
| 11090 |
continue
|
10163 |
continue
|
| 11091 |
try:
|
10164 |
try:
|
| Line 11094... |
Line 10167... |
| 11094 |
returnList.append(delayObj.orderId)
|
10167 |
returnList.append(delayObj.orderId)
|
| 11095 |
continue
|
10168 |
continue
|
| 11096 |
if not result:
|
10169 |
if not result:
|
| 11097 |
returnList.append(delayObj.orderId)
|
10170 |
returnList.append(delayObj.orderId)
|
| 11098 |
return returnList
|
10171 |
return returnList
|
| - |
|
10172 |
|
| - |
|
10173 |
|
| 11099 |
|
10174 |
|
| 11100 |
#Buyer can be anyone based on logic
|
10175 |
#Buyer can be anyone based on logic
|
| 11101 |
def __get_buyer(warehouse_id):
|
10176 |
def __get_buyer(warehouse_id):
|
| 11102 |
#As of now we have hardcoded the company and
|
10177 |
#As of now we have hardcoded the company and
|
| 11103 |
#seller would be returned on basis warehouse and company
|
10178 |
#seller would be returned on basis warehouse and company
|