Subversion Repositories SmartDukaan

Rev

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

Rev 23496 Rev 23514
Line 4851... Line 4851...
4851
    pendingOrders = ""
4851
    pendingOrders = ""
4852
    orders = Order.query.filter(Order.status.in_(tuple([OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW, OrderStatus.LOW_INV_PO_RAISED, OrderStatus.LOW_INV_REVERSAL_IN_PROCESS]))).order_by(Order.promised_shipping_time).all()
4852
    orders = Order.query.filter(Order.status.in_(tuple([OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW, OrderStatus.LOW_INV_PO_RAISED, OrderStatus.LOW_INV_REVERSAL_IN_PROCESS]))).order_by(Order.promised_shipping_time).all()
4853
    inventoryClient = InventoryClient().get_client()
4853
    inventoryClient = InventoryClient().get_client()
4854
    userClient = UserClient().get_client()
4854
    userClient = UserClient().get_client()
4855
 
4855
 
4856
    #warehouses = inventoryClient.getWarehouses(None, None, None, None, None)
4856
    warehouses = inventoryClient.getWarehouses(WarehouseType.OURS, InventoryType.GOOD, None, None, None)
-
 
4857
    warehousesMap = {}
-
 
4858
    for warehouse in warehouses:
-
 
4859
        warehousesMap[warehouse.id] = warehouses
4857
    for order in orders:
4860
    for order in orders:
4858
        stateMaster = fetchStateMaster()
4861
        stateMaster = fetchStateMaster()
4859
        stateId = -1
4862
        stateId = -1
4860
        userClient, isFofo = __is_Fofo(userClient, order.customer_id)
4863
        userClient, isFofo = __is_Fofo(userClient, order.customer_id)
4861
        if isFofo:
4864
        if isFofo:
4862
            for k, v in stateMaster.iteritems():
4865
            for k, v in stateMaster.iteritems():
4863
                if v.stateName == order.customer_state:
4866
                if v.stateName == order.customer_state:
4864
                    stateId = k
4867
                    stateId = k
4865
                    break
4868
                    break
4866
        lineitem = order.lineitems[0]
4869
        lineitem = order.lineitems[0]
-
 
4870
        fulFilmentWarehouse = warehousesMap.get(order.fulfilmentWarehouseId)
-
 
4871
        if fulFilmentWarehouse.warehouseType==WarehouseType.OURS and fulFilmentWarehouse.inventoryType==InventoryType.GOOD:
-
 
4872
            continue  
4867
        try:
4873
        try:
4868
            try:
-
 
4869
                if not inventoryClient.isAlive():
-
 
4870
                    raise
-
 
4871
            except:
-
 
4872
                inventoryClient = InventoryClient().get_client()
4874
            itemInventory = inventoryClient.getItemInventoryByItemId(lineitem.item_id)
4873
            fulfilmentWarehouseId = inventoryClient.getItemAvailabilityAtLocation(lineitem.item_id, sourceId, stateId)[0]
-
 
4874
            if order.fulfilmentWarehouseId != fulfilmentWarehouseId:
-
 
4875
                netavailability = inventoryClient.getItemAvailibilityAtWarehouse(fulfilmentWarehouseId, lineitem.item_id)
-
 
4876
                if netavailability >= lineitem.quantity:
-
 
4877
                    try:
-
 
4878
                        print "++++" + str(order.id) + "=" + str(order.fulfilmentWarehouseId) + "->"+ str(fulfilmentWarehouseId)
-
 
4879
                        change_warehouse(order.id, fulfilmentWarehouseId)
-
 
4880
                        completedOrders.append(order.id)
-
 
4881
                    except:
-
 
4882
                        traceback.print_exc()
-
 
4883
                        print "++++" + str(order.id)
-
 
4884
                        pendingOrders = pendingOrders + str(order.id) + "|"
-
 
4885
        except:
4875
        except:
-
 
4876
            inventoryClient = InventoryClient().get_client()
-
 
4877
            itemInventory = inventoryClient.getItemInventoryByItemId(lineitem.item_id)
-
 
4878
        for warehouseId, availability in itemInventory.availability.iteritems():
-
 
4879
            warehouse = warehouses.get(warehouseId)
-
 
4880
            if warehouse.warehouseType==WarehouseType.THIRD_PARTY:
-
 
4881
                continue
-
 
4882
            if availability - itemInventory.reserved[warehouseId] >= order.quantity and warehouse.stateId==fulFilmentWarehouse.stateId: 
-
 
4883
                try:
-
 
4884
                    print "++++" + str(order.id) + "=" + str(order.fulfilmentWarehouseId) + "->"+ str(warehouseId)
-
 
4885
                    change_warehouse(order.id, warehouseId)
-
 
4886
                    completedOrders.append(order.id)
-
 
4887
                except:
4886
            traceback.print_exc()
4888
                    traceback.print_exc()
4887
            print "++++" + str(order.id)
4889
                    print "++++" + str(order.id)
4888
            pendingOrders = pendingOrders + str(order.id) + "|"
4890
                    pendingOrders = pendingOrders + str(order.id) + "|"
-
 
4891
                break
-
 
4892
            
4889
                
4893
                
4890
    if len(completedOrders)==0 and len(pendingOrders)==0:
4894
    if len(completedOrders)==0 and len(pendingOrders)==0:
4891
        return "No Order To Move"
4895
        return "No Order To Move"
4892
    elif len(completedOrders)>0 and len(completedOrders) == len(orders):
4896
    elif len(completedOrders)>0 and len(completedOrders) == len(orders):
4893
        return "Completed"
4897
        return "Completed"