Subversion Repositories SmartDukaan

Rev

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

Rev 5402 Rev 5411
Line 621... Line 621...
621
            session.commit()
621
            session.commit()
622
            raise TransactionServiceException(122, "Unable to capture payment due to connection issue.")
622
            raise TransactionServiceException(122, "Unable to capture payment due to connection issue.")
623
        else:
623
        else:
624
            raise TransactionServiceException(115, "Payment capture failed.")
624
            raise TransactionServiceException(115, "Payment capture failed.")
625
 
625
 
626
def add_billing_details(orderId, invoice_number, serialNumber, itemNumber, billedBy, jacketNumber, billingType, fulfilmentWarehouseId, authorize):
626
def add_billing_details(orderId, invoice_number, serialNumbers, itemNumbers, billedBy, jacketNumber, billingType, fulfilmentWarehouseId, authorize):
627
    if jacketNumber is None or jacketNumber <= 0:
627
    if jacketNumber is None or jacketNumber <= 0:
628
        raise TransactionServiceException(110, "Invalid jacket number")
628
        raise TransactionServiceException(110, "Invalid jacket number")
629
    
629
    
630
    if billedBy is None or billedBy.strip() == "":
630
    if billedBy is None or billedBy.strip() == "":
631
        raise TransactionServiceException(110, "Invalid Biller")
631
        raise TransactionServiceException(110, "Invalid Biller")
Line 639... Line 639...
639
    catalog_client = CatalogClient().get_client()
639
    catalog_client = CatalogClient().get_client()
640
    item = catalog_client.getItem(item_id)
640
    item = catalog_client.getItem(item_id)
641
    if order.status == OrderStatus.ACCEPTED:
641
    if order.status == OrderStatus.ACCEPTED:
642
        order.jacket_number = jacketNumber
642
        order.jacket_number = jacketNumber
643
        if billingType == BillingType.OURS:
643
        if billingType == BillingType.OURS:
644
            if itemNumber is None or itemNumber.strip() == "":
644
            if itemNumbers:
645
                raise TransactionServiceException(110, "Invalid item number")
645
                lineitem.item_number = itemNumbers[0]    
646
 
646
 
647
            order.invoice_number = get_next_invoice_number()
-
 
648
            if ItemType.SERIALIZED == item.type and not serialNumber:
647
            if ItemType.SERIALIZED == item.type and not (serialNumbers and serialNumbers[0]):
649
                raise TransactionServiceException(110, "No Serial Number supplied")
648
                raise TransactionServiceException(110, "No Serial Number supplied")
-
 
649
            if serialNumbers:
650
            lineitem.item_number = itemNumber
650
                lineitem.serial_number = serialNumbers[0]
651
            if serialNumber:
651
                
652
                lineitem.serial_number = serialNumber
652
            order.invoice_number = get_next_invoice_number()
653
        else:
653
        else:
654
            order.invoice_number = invoice_number
654
            order.invoice_number = invoice_number
655
            # In case of hotspot billing, we should try to verify that color billed in ETP is same as color in order.
655
            # In case of hotspot billing, we should try to verify that color billed in ETP is same as color in order.
656
            if billedOrdersColorMap.has_key(orderId):
656
            if billedOrdersColorMap.has_key(orderId):
657
                etpColor = billedOrdersColorMap.get(orderId)
657
                etpColor = billedOrdersColorMap.get(orderId)
Line 679... Line 679...
679
            print e.message
679
            print e.message
680
            raise TransactionServiceException(110, 'Transfer price missing for itemId: ' + str(item_id) + ' and vendor: ' + str(warehouse.vendor.id))
680
            raise TransactionServiceException(110, 'Transfer price missing for itemId: ' + str(item_id) + ' and vendor: ' + str(warehouse.vendor.id))
681
 
681
 
682
        # For OUR warehouse, we need to scan out items for every billed order
682
        # For OUR warehouse, we need to scan out items for every billed order
683
        if billingType == BillingType.OURS:
683
        if billingType == BillingType.OURS:
-
 
684
            for serialNumber in serialNumbers:
684
            try:
685
                try:
685
                warehouse_client = WarehouseClient().get_client()
686
                    warehouse_client = WarehouseClient().get_client()
686
                if ItemType.SERIALIZED == item.type:
687
                    if ItemType.SERIALIZED == item.type:
687
                    inventoryItem = warehouse_client.getInventoryItem(serialNumber)
688
                        inventoryItem = warehouse_client.getInventoryItem(serialNumber)
688
                else:
689
                    else:
689
                    inventoryItem = warehouse_client.getNonSeralizedInventoryItem(item_id, order.fulfilmentWarehouseId)
690
                        inventoryItem = warehouse_client.getNonSeralizedInventoryItem(item_id, order.fulfilmentWarehouseId)
690
 
691
    
691
                if (inventoryItem.itemId != item_id):
692
                    if (inventoryItem.itemId != item_id):
-
 
693
                        catalog_client = CatalogClient().get_client()
-
 
694
                        item = catalog_client.getItem(inventoryItem.itemId)
-
 
695
                        scanItemString = " ".join([str(item.brand), str(item.modelName), str(item.modelNumber), str(item.color)])
-
 
696
                        lineItemString = " ".join([str(lineitem.brand), str(lineitem.model_name), str(lineitem.model_number), str(lineitem.color)])
-
 
697
                        raise TransactionServiceException(110, 'Trying to scan ' + scanItemString + ' instead of ' + lineItemString)
-
 
698
    
-
 
699
                    if ItemType.SERIALIZED == item.type:
-
 
700
                        inventoryItem = warehouse_client.scanSerializedItemForOrder(serialNumber, ScanType.SALE, orderId, order.fulfilmentWarehouseId, 1, order.warehouse_id)
-
 
701
                    else:
-
 
702
                        inventoryItem = warehouse_client.scanForOrder(inventoryItem, ScanType.SALE, 1, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
-
 
703
    
-
 
704
                    lineitem.transfer_price = inventoryItem.unitPrice
-
 
705
                    order.vendorId = inventoryItem.supplierId
692
                    catalog_client = CatalogClient().get_client()
706
                    catalog_client = CatalogClient().get_client()
693
                    item = catalog_client.getItem(inventoryItem.itemId)
-
 
694
                    scanItemString = " ".join([str(item.brand), str(item.modelName), str(item.modelNumber), str(item.color)])
-
 
695
                    lineItemString = " ".join([str(lineitem.brand), str(lineitem.model_name), str(lineitem.model_number), str(lineitem.color)])
-
 
696
                    raise TransactionServiceException(110, 'Trying to scan ' + scanItemString + ' instead of ' + lineItemString)
-
 
697
 
-
 
698
                if ItemType.SERIALIZED == item.type:
-
 
699
                    inventoryItem = warehouse_client.scanSerializedItemForOrder(serialNumber, ScanType.SALE, orderId, order.fulfilmentWarehouseId, lineitem.quantity, order.warehouse_id)
-
 
700
                else:
-
 
701
                    inventoryItem = warehouse_client.scanForOrder(inventoryItem, ScanType.SALE, lineitem.quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
-
 
702
 
-
 
703
                lineitem.transfer_price = inventoryItem.unitPrice
-
 
704
                order.vendorId = inventoryItem.supplierId
-
 
705
                catalog_client = CatalogClient().get_client()
-
 
706
                warehouse = catalog_client.getWarehouse(order.fulfilmentWarehouseId)
707
                    warehouse = catalog_client.getWarehouse(order.fulfilmentWarehouseId)
707
                # Fetching GOOD w/h corresponding to the virtual one here
708
                    # Fetching GOOD w/h corresponding to the virtual one here
708
                if warehouse.billingWarehouseId is None:
709
                    if warehouse.billingWarehouseId is None:
709
                    warehouse = catalog_client.getWarehouses(None, InventoryType.GOOD, warehouse.vendor.id, order.warehouse_id, 0)[0]
710
                        warehouse = catalog_client.getWarehouses(None, InventoryType.GOOD, warehouse.vendor.id, order.warehouse_id, 0)[0]
710
                    order.fulfilmentWarehouseId = warehouse.id
711
                        order.fulfilmentWarehouseId = warehouse.id
711
            except WarehouseServiceException as e:
712
                except WarehouseServiceException as e:
712
                print sys.exc_info()[0]
713
                    print sys.exc_info()[0]
713
                print 'Could not scan out orders due to: ' + e.message
714
                    print 'Could not scan out orders due to: ' + e.message
714
                raise TransactionServiceException(110, e.message)
715
                    raise TransactionServiceException(110, e.message)
715
        else:
716
        else:
716
            if not warehouse.isAvailabilityMonitored:
717
            if not warehouse.isAvailabilityMonitored:
717
                catalog_client = CatalogClient().get_client()
718
                catalog_client = CatalogClient().get_client()
718
                catalog_client.addInventory(item.id, warehouse.id, -1 * lineitem.quantity)
719
                catalog_client.addInventory(item.id, warehouse.id, -1 * lineitem.quantity)
719
 
720