| 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 |
|