Subversion Repositories SmartDukaan

Rev

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

Rev 6782 Rev 6786
Line 1249... Line 1249...
1249
                    print sys.exc_info()[0]
1249
                    print sys.exc_info()[0]
1250
                    print 'Could not scan out orders due to: ' + e.message
1250
                    print 'Could not scan out orders due to: ' + e.message
1251
                    raise TransactionServiceException(110, e.message)
1251
                    raise TransactionServiceException(110, e.message)
1252
        elif billingType == BillingType.OURS_EXTERNAL:
1252
        elif billingType == BillingType.OURS_EXTERNAL:
1253
            try:
1253
            try:
-
 
1254
                if ItemType.SERIALIZED == item.type:
1254
                serialNumber = serialNumbers[0]
1255
                    serialNumber = serialNumbers[0]
-
 
1256
                else:
-
 
1257
                    serialNumber = ""
1255
                warehouse_client = WarehouseClient().get_client()
1258
                warehouse_client = WarehouseClient().get_client()
1256
                inventoryItem = warehouse_client.scanForOursExternalSale(lineitem.item_id, serialNumber, lineitem.item_number, invoice_number, order.fulfilmentWarehouseId, lineitem.transfer_price, order.id)
1259
                inventoryItem = warehouse_client.scanForOursExternalSale(lineitem.item_id, serialNumber, lineitem.item_number, invoice_number, order.fulfilmentWarehouseId, lineitem.transfer_price, order.id)
1257
                lineitem.transfer_price = inventoryItem.unitPrice
1260
                lineitem.transfer_price = inventoryItem.unitPrice
1258
                order.vendorId = inventoryItem.supplierId
1261
                order.vendorId = inventoryItem.supplierId
1259
            except WarehouseServiceException as e:
1262
            except WarehouseServiceException as e:
Line 2147... Line 2150...
2147
    session.commit()
2150
    session.commit()
2148
 
2151
 
2149
    # For OUR warehouses, we need to scan in items for every return
2152
    # For OUR warehouses, we need to scan in items for every return
2150
    inventoryClient = InventoryClient().get_client()
2153
    inventoryClient = InventoryClient().get_client()
2151
    warehouse = inventoryClient.getWarehouse(order.warehouse_id)
2154
    warehouse = inventoryClient.getWarehouse(order.warehouse_id)
2152
    if warehouse.billingType == BillingType.OURS:
2155
    if warehouse.billingType == BillingType.OURS or warehouse.billingType == BillingType.OURS_EXTERNAL:
2153
        lineitem = order.lineitems[0]
2156
        lineitem = order.lineitems[0]
2154
        catalogClient = CatalogClient().get_client()
2157
        catalogClient = CatalogClient().get_client()
2155
        item = catalogClient.getItem(lineitem.item_id)
2158
        item = catalogClient.getItem(lineitem.item_id)
2156
        warehouse_client = WarehouseClient().get_client()
2159
        warehouse_client = WarehouseClient().get_client()
-
 
2160
        if warehouse.billingType == BillingType.OURS or scanType != ScanType.SALE_RET:
2157
        if item.type == ItemType.SERIALIZED:
2161
            if item.type == ItemType.SERIALIZED:
2158
            warehouse_client.scanSerializedItemForOrder(lineitem.serial_number, scanType, order.id, order.fulfilmentWarehouseId, lineitem.quantity, order.warehouse_id)
2162
                warehouse_client.scanSerializedItemForOrder(lineitem.serial_number, scanType, order.id, order.fulfilmentWarehouseId, lineitem.quantity, order.warehouse_id)
2159
        else:
2163
            else:
2160
            warehouse_client.scanForOrder(None, scanType, lineitem.quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
2164
                warehouse_client.scanForOrder(None, scanType, lineitem.quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
-
 
2165
        if scanType == ScanType.SALE_RET and warehouse.billingType == BillingType.OURS_EXTERNAL:
-
 
2166
            warehouse_client.scanForOursExternalSaleReturn(order.id, lineitem.transfer_price)        
2161
    return True
2167
    return True
2162
 
2168
 
2163
def reship_order(order_id):
2169
def reship_order(order_id):
2164
    """
2170
    """
2165
    If the order is in RTO_RECEIVED_PRESTINE or DOA_CERT_INVALID state, it does the following:
2171
    If the order is in RTO_RECEIVED_PRESTINE or DOA_CERT_INVALID state, it does the following:
Line 2417... Line 2423...
2417
 
2423
 
2418
    # For orders that are cancelled after being billed, we need to scan in the scanned out
2424
    # For orders that are cancelled after being billed, we need to scan in the scanned out
2419
    # inventory item and change availability accordingly
2425
    # inventory item and change availability accordingly
2420
    inventoryClient = InventoryClient().get_client()
2426
    inventoryClient = InventoryClient().get_client()
2421
    warehouse = inventoryClient.getWarehouse(order.warehouse_id)
2427
    warehouse = inventoryClient.getWarehouse(order.warehouse_id)
2422
    if warehouse.billingType == BillingType.OURS:
2428
    if warehouse.billingType == BillingType.OURS or warehouse.billingType == BillingType.OURS_EXTERNAL:
2423
        if order.status in [OrderStatus.BILLED, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_FROM_WH] or (order.status == OrderStatus.CANCEL_REQUEST_CONFIRMED and order.previousStatus in [OrderStatus.BILLED, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_FROM_WH]):
2429
        if order.status in [OrderStatus.BILLED, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_FROM_WH] or (order.status == OrderStatus.CANCEL_REQUEST_CONFIRMED and order.previousStatus in [OrderStatus.BILLED, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_FROM_WH]):
2424
            lineitem = order.lineitems[0]
2430
            lineitem = order.lineitems[0]
2425
            catalogClient = CatalogClient().get_client()
2431
            catalogClient = CatalogClient().get_client()
2426
            item = catalogClient.getItem(lineitem.item_id)
2432
            item = catalogClient.getItem(lineitem.item_id)
2427
            warehouseClient = WarehouseClient().get_client()
2433
            warehouseClient = WarehouseClient().get_client()
-
 
2434
            if warehouse.billingType == BillingType.OURS:
2428
            if ItemType.SERIALIZED == item.type:
2435
                if ItemType.SERIALIZED == item.type:
2429
                warehouseClient.scanSerializedItemForOrder(lineitem.serial_number, ScanType.SALE_RET, order.id, order.fulfilmentWarehouseId, lineitem.quantity, order.warehouse_id)
2436
                    warehouseClient.scanSerializedItemForOrder(lineitem.serial_number, ScanType.SALE_RET, order.id, order.fulfilmentWarehouseId, lineitem.quantity, order.warehouse_id)
2430
            else:
2437
                else:
2431
                warehouseClient.scanForOrder(None, ScanType.SALE_RET, lineitem.quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
2438
                    warehouseClient.scanForOrder(None, ScanType.SALE_RET, lineitem.quantity, order.id, order.fulfilmentWarehouseId, order.warehouse_id)
-
 
2439
            if warehouse.billingType == BillingType.OURS_EXTERNAL:
-
 
2440
                warehouseClient.scanForOursExternalSaleReturn(order.id, lineitem.transfer_price)            
2432
 
2441
 
2433
    order.status = status_transition[order.status]
2442
    order.status = status_transition[order.status]
2434
    order.refund_timestamp = datetime.datetime.now()
2443
    order.refund_timestamp = datetime.datetime.now()
2435
    order.refunded_by = refunded_by
2444
    order.refunded_by = refunded_by
2436
    order.refund_reason = reason
2445
    order.refund_reason = reason