Subversion Repositories SmartDukaan

Rev

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

Rev 4283 Rev 4285
Line 571... Line 571...
571
        return True
571
        return True
572
    else:
572
    else:
573
        logging.warning("Verify called for order no." + str(orderId) +" which is not in verification pending state");
573
        logging.warning("Verify called for order no." + str(orderId) +" which is not in verification pending state");
574
        return False
574
        return False
575
        
575
        
576
def accept_order(self, orderId):
576
def accept_order(orderId):
577
    logging.info("Accepting order no: " + str(orderId))
577
    logging.info("Accepting order no: " + str(orderId))
578
    order = get_order(orderId)
578
    order = get_order(orderId)
579
    if order.status in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW]:
579
    if order.status in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW]:
580
        if not order.cod:
580
        if not order.cod:
581
            if order.transaction.status == TransactionStatus.AUTHORIZED:
581
            if order.transaction.status == TransactionStatus.AUTHORIZED:
Line 598... Line 598...
598
        logging.info("Successfully captured payment for merchant txn:" + str(txnId))
598
        logging.info("Successfully captured payment for merchant txn:" + str(txnId))
599
        change_transaction_status(txnId, TransactionStatus.IN_PROCESS, "Payment received")
599
        change_transaction_status(txnId, TransactionStatus.IN_PROCESS, "Payment received")
600
    else:
600
    else:
601
        raise TransactionServiceException(115, "Payment capture failed.")
601
        raise TransactionServiceException(115, "Payment capture failed.")
602
 
602
 
603
def add_billing_details(self, orderId, jacket_number, imei_number, item_number, invoice_number, billed_by, billing_type, vendor_id):
603
def add_billing_details(orderId, invoice_number, imeiNumber, itemNumber, billedBy, jacketNumber, billingType, vendorId):
604
    if jacket_number is None or jacket_number <= 0:
604
    if jacketNumber is None or jacketNumber <= 0:
605
        raise TransactionServiceException(110, "Invalid jacket number")
605
        raise TransactionServiceException(110, "Invalid jacket number")
606
    
606
    
607
    if billed_by is None or billed_by.strip() == "":
607
    if billedBy is None or billedBy.strip() == "":
608
        raise TransactionServiceException(110, "Invalid Biller")
608
        raise TransactionServiceException(110, "Invalid Biller")
609
    
609
    
610
    order = Order.get_by(id=orderId)
610
    order = Order.get_by(id=orderId)
611
    if not order:
611
    if not order:
612
        raise TransactionServiceException(101, "No order found for the given order id" + str(orderId))
612
        raise TransactionServiceException(101, "No order found for the given order id" + str(orderId))
613
    
613
    
614
    if order.status == OrderStatus.ACCEPTED:
614
    if order.status == OrderStatus.ACCEPTED:
615
        order.jacket_number = jacket_number
615
        order.jacket_number = jacketNumber
616
        if billing_type == BillingType.OURS:
616
        if billingType == BillingType.OURS:
617
            if item_number is None or item_number.strip() == "":
617
            if itemNumber is None or itemNumber.strip() == "":
618
                raise TransactionServiceException(110, "Invalid item number")
618
                raise TransactionServiceException(110, "Invalid item number")
619
 
619
 
620
            order.invoice_number = get_next_invoice_number()
620
            order.invoice_number = get_next_invoice_number()
621
            lineitem = order.lineitems[0]
621
            lineitem = order.lineitems[0]
622
            if lineitem.productGroup == "Handsets" and imei_number <= 0:
622
            if lineitem.productGroup == "Handsets" and imeiNumber <= 0:
623
                raise TransactionServiceException(110, "No IMEI number supplied for a handset.")
623
                raise TransactionServiceException(110, "No IMEI number supplied for a handset.")
624
            lineitem.item_number = item_number
624
            lineitem.item_number = itemNumber
625
            if imei_number > 0:
625
            if imeiNumber > 0:
626
                lineitem.imei_number = str(imei_number)
626
                lineitem.imei_number = str(imeiNumber)
627
        else:
627
        else:
628
            order.invoice_number = invoice_number
628
            order.invoice_number = invoice_number
629
        
629
        
630
        order.status = OrderStatus.BILLED
630
        order.status = OrderStatus.BILLED
631
        order.statusDescription = "Order Billed"
631
        order.statusDescription = "Order Billed"
632
        order.billing_timestamp = datetime.datetime.now()
632
        order.billing_timestamp = datetime.datetime.now()
633
        order.billed_by = billed_by
633
        order.billed_by = billedBy
634
        lineitem = order.lineitems[0]
634
        lineitem = order.lineitems[0]
635
        item_id = lineitem.item_id
635
        item_id = lineitem.item_id
636
        catalog_client = CatalogClient().get_client()
636
        catalog_client = CatalogClient().get_client()
637
        '''catalog_client.reserveItemInWarehouse(item_id, logistics_info.warehouseId, order.lineitems[0].quantity)'''
-
 
638
        item_pricing = catalog_client.getItemPricing(item_id, vendor_id)
637
        item_pricing = catalog_client.getItemPricing(item_id, vendorId)
639
        order.vendorId = vendor_id
638
        order.vendorId = vendorId
640
        lineitems = order.lineitems
639
        lineitems = order.lineitems
641
        for lineitem in lineitems:
640
        for lineitem in lineitems:
642
            catalog_client.reduceReservationCount(item_id, order.warehouse_id, lineitem.quantity)
641
            catalog_client.reduceReservationCount(item_id, order.warehouse_id, lineitem.quantity)
643
        order.lineitems[0].transfer_price = item_pricing.transferPrice
642
        order.lineitems[0].transfer_price = item_pricing.transferPrice
644
        session.commit()
643
        session.commit()
Line 1587... Line 1586...
1587
    order = get_order(orderId)
1586
    order = get_order(orderId)
1588
    order.status = OrderStatus.CANCEL_REQUEST_CONFIRMED
1587
    order.status = OrderStatus.CANCEL_REQUEST_CONFIRMED
1589
    order.statusDescription = "Cancellation request confirmed"
1588
    order.statusDescription = "Cancellation request confirmed"
1590
    session.commit()
1589
    session.commit()
1591
    
1590
    
-
 
1591
def accept_orders_for_item_id(itemId, inventory):
-
 
1592
    """
-
 
1593
    Marks the orders as ACCEPTED for the given itemId and inventory. It also updates the accepted timestamp. If the
-
 
1594
    given order is not a COD order, it also captures the payment if the same has not been captured.
-
 
1595
    
-
 
1596
    Parameters:
-
 
1597
     - itemId
-
 
1598
     - inventory
-
 
1599
    """
-
 
1600
    orders = Order.query.filter(Order.status.in_(tuple([OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW]))).order_by(Order.expected_shipping_time).all()
-
 
1601
    for order in orders:
-
 
1602
        if inventory <= 0:
-
 
1603
            break
-
 
1604
        lineitem = order.lineitems[0]
-
 
1605
        if itemId == lineitem.item_id:
1592
            
1606
            try:
-
 
1607
                accept_order(order.id)
-
 
1608
                inventory = inventory - lineitem.quantity
-
 
1609
            except:
-
 
1610
                logging.info("Unable to accept the order")
-
 
1611
    return
-
 
1612
 
1593
def close_session():
1613
def close_session():
1594
    if session.is_active:
1614
    if session.is_active:
1595
        print "session is active. closing it."
1615
        print "session is active. closing it."
1596
        session.close()
1616
        session.close()
1597
 
1617