public static IList <Equipment> GetEquipmentUnloadedTo(IUnitOfWork uow, RouteList routeList) { CarUnloadDocumentItem unloadItemAlias = null; WarehouseMovementOperation operationAlias = null; Equipment equipmentAlias = null; var unloadedEquipmentIdsQuery = QueryOver.Of <CarUnloadDocument>().Where(doc => doc.RouteList.Id == routeList.Id) .JoinAlias(doc => doc.Items, () => unloadItemAlias) .JoinAlias(() => unloadItemAlias.WarehouseMovementOperation, () => operationAlias) .JoinAlias(() => operationAlias.Equipment, () => equipmentAlias) .Select(op => equipmentAlias.Id); return(uow.Session.QueryOver <Equipment>(() => equipmentAlias).WithSubquery.WhereProperty(() => equipmentAlias.Id).In(unloadedEquipmentIdsQuery).List()); }
public decimal UnloadedTerminalAmount(IUnitOfWork uow, int routelistId, int terminalId) { CarUnloadDocument docAlias = null; CarUnloadDocumentItem docItemsAlias = null; WarehouseMovementOperation warehouseMovementOperationAlias = null; var query = uow.Session.QueryOver(() => docAlias) .JoinAlias(d => d.Items, () => docItemsAlias) .JoinAlias(() => docItemsAlias.WarehouseMovementOperation, () => warehouseMovementOperationAlias) .Where(() => docAlias.RouteList.Id == routelistId) .And(() => warehouseMovementOperationAlias.Nomenclature.Id == terminalId) .Select(Projections.Sum(() => warehouseMovementOperationAlias.Amount)) .SingleOrDefault <decimal>(); return(query); }
public Dictionary <int, decimal> NomenclatureUnloaded(IUnitOfWork UoW, RouteList routeList, Warehouse warehouse, CarUnloadDocument excludeDoc) { CarUnloadDocument docAlias = null; CarUnloadDocumentItem docItemsAlias = null; WarehouseMovementOperation movementOperationAlias = null; var unloadedlist = UoW.Session.QueryOver <CarUnloadDocument>(() => docAlias) .Where(d => d.RouteList.Id == routeList.Id) .Where(d => d.Warehouse.Id == warehouse.Id) .Where(d => d.Id != excludeDoc.Id) .JoinAlias(d => d.Items, () => docItemsAlias) .JoinAlias(() => docItemsAlias.WarehouseMovementOperation, () => movementOperationAlias) .SelectList(list => list .SelectGroup(() => movementOperationAlias.Nomenclature.Id) .SelectSum(() => movementOperationAlias.Amount) ).List <object[]>(); return(unloadedlist.ToDictionary(r => (int)r[0], r => (decimal)r[1])); }
public QueryOver <CarUnloadDocument> OrderItemsReturnedToAllWarehouses(IUnitOfWork uow, int routeListId, params int[] nomenclatureIds) { List <ReturnsNode> result = new List <ReturnsNode>(); Nomenclature nomenclatureAlias = null; CarUnloadDocumentItem carUnloadItemsAlias = null; WarehouseMovementOperation movementOperationAlias = null; CarUnloadDocument carUnloadAlias = null; var returnableQuery = QueryOver.Of <CarUnloadDocument>() .Where(doc => doc.RouteList.Id == routeListId) .JoinAlias(doc => doc.Items, () => carUnloadItemsAlias) .JoinAlias(() => carUnloadItemsAlias.WarehouseMovementOperation, () => movementOperationAlias) .Where(Restrictions.IsNotNull(Projections.Property(() => movementOperationAlias.IncomingWarehouse))) .JoinAlias(() => movementOperationAlias.Nomenclature, () => nomenclatureAlias) .Where(() => !nomenclatureAlias.IsSerial) .Where(() => nomenclatureAlias.Id.IsIn(nomenclatureIds)); return(returnableQuery); }
public List <ReturnsNode> GetReturnsToWarehouse(IUnitOfWork uow, int routeListId, NomenclatureCategory[] categories = null, int[] excludeNomenclatureIds = null) { Nomenclature nomenclatureAlias = null; ReturnsNode resultAlias = null; CarUnloadDocumentItem carUnloadItemsAlias = null; WarehouseMovementOperation movementOperationAlias = null; var returnableQuery = uow.Session.QueryOver <CarUnloadDocument>().Where(doc => doc.RouteList.Id == routeListId) .JoinAlias(doc => doc.Items, () => carUnloadItemsAlias) .JoinAlias(() => carUnloadItemsAlias.WarehouseMovementOperation, () => movementOperationAlias) .Where(Restrictions.IsNotNull(Projections.Property(() => movementOperationAlias.IncomingWarehouse))) .JoinAlias(() => movementOperationAlias.Nomenclature, () => nomenclatureAlias) .Where(() => !nomenclatureAlias.IsSerial); if (categories != null) { returnableQuery.Where(() => nomenclatureAlias.Category.IsIn(categories)); } if (excludeNomenclatureIds != null) { returnableQuery.Where(() => !nomenclatureAlias.Id.IsIn(excludeNomenclatureIds)); } var result = returnableQuery.SelectList(list => list .SelectGroup(() => nomenclatureAlias.Id).WithAlias(() => resultAlias.NomenclatureId) .Select(() => nomenclatureAlias.Name).WithAlias(() => resultAlias.Name) .Select(() => false).WithAlias(() => resultAlias.Trackable) .Select(() => nomenclatureAlias.Category).WithAlias(() => resultAlias.NomenclatureCategory) .SelectSum(() => movementOperationAlias.Amount).WithAlias(() => resultAlias.Amount)) .TransformUsing(Transformers.AliasToBean <ReturnsNode>()) .List <ReturnsNode>(); DomainHelper.FillPropertyByEntity <ReturnsNode, Nomenclature>(uow, result, x => x.NomenclatureId, (node, nom) => node.Nomenclature = nom); return(result.ToList()); }
/// <summary> /// Возвращает список товаров возвращенного на склад по номенклатурам /// </summary> public List <ReturnsNode> GetReturnsToWarehouse(IUnitOfWork uow, int routeListId, params int[] nomenclatureIds) { List <ReturnsNode> result = new List <ReturnsNode>(); Nomenclature nomenclatureAlias = null; ReturnsNode resultAlias = null; Equipment equipmentAlias = null; CarUnloadDocument carUnloadAlias = null; CarUnloadDocumentItem carUnloadItemsAlias = null; WarehouseMovementOperation movementOperationAlias = null; var returnableQuery = QueryOver.Of <CarUnloadDocument>(() => carUnloadAlias) .JoinAlias(() => carUnloadAlias.Items, () => carUnloadItemsAlias) .JoinAlias(() => carUnloadItemsAlias.WarehouseMovementOperation, () => movementOperationAlias) .JoinAlias(() => movementOperationAlias.Nomenclature, () => nomenclatureAlias) .Where(Restrictions.IsNotNull(Projections.Property(() => movementOperationAlias.IncomingWarehouse))) .Where(() => !nomenclatureAlias.IsSerial) .Where(() => carUnloadAlias.RouteList.Id == routeListId) .Where(() => nomenclatureAlias.Id.IsIn(nomenclatureIds)) .GetExecutableQueryOver(uow.Session); var returnableItems = returnableQuery.SelectList ( list => list.SelectGroup(() => nomenclatureAlias.Id).WithAlias(() => resultAlias.NomenclatureId) .Select(() => nomenclatureAlias.Name).WithAlias(() => resultAlias.Name) .Select(() => false).WithAlias(() => resultAlias.Trackable) .Select(() => nomenclatureAlias.Category).WithAlias(() => resultAlias.NomenclatureCategory) .Select(() => carUnloadItemsAlias.DefectSource).WithAlias(() => resultAlias.DefectSource) .SelectSum(() => movementOperationAlias.Amount).WithAlias(() => resultAlias.Amount) ) .TransformUsing(Transformers.AliasToBean <ReturnsNode>()) .List <ReturnsNode>(); var returnableQueryEquipment = uow.Session.QueryOver <CarUnloadDocument>(() => carUnloadAlias) .JoinAlias(() => carUnloadAlias.Items, () => carUnloadItemsAlias) .JoinAlias(() => carUnloadItemsAlias.WarehouseMovementOperation, () => movementOperationAlias) .JoinAlias(() => movementOperationAlias.Equipment, () => equipmentAlias) .JoinAlias(() => equipmentAlias.Nomenclature, () => nomenclatureAlias) .Where(Restrictions.IsNotNull(Projections.Property(() => movementOperationAlias.IncomingWarehouse))) .Where(() => carUnloadAlias.RouteList.Id == routeListId) .Where(() => nomenclatureAlias.Id.IsIn(nomenclatureIds)) ; var returnableEquipment = returnableQueryEquipment.SelectList(list => list .Select(() => equipmentAlias.Id).WithAlias(() => resultAlias.Id) .SelectGroup(() => nomenclatureAlias.Id).WithAlias(() => resultAlias.NomenclatureId) .Select(() => nomenclatureAlias.Name).WithAlias(() => resultAlias.Name) .Select(() => nomenclatureAlias.IsSerial).WithAlias(() => resultAlias.Trackable) .Select(() => nomenclatureAlias.Category).WithAlias(() => resultAlias.NomenclatureCategory) .SelectSum(() => movementOperationAlias.Amount).WithAlias(() => resultAlias.Amount) .Select(() => nomenclatureAlias.Type).WithAlias(() => resultAlias.EquipmentType) .Select(() => carUnloadItemsAlias.DefectSource).WithAlias(() => resultAlias.DefectSource) ) .TransformUsing(Transformers.AliasToBean <ReturnsNode>()) .List <ReturnsNode>(); result.AddRange(returnableItems); result.AddRange(returnableEquipment); DomainHelper.FillPropertyByEntity <ReturnsNode, Nomenclature>(uow, result, x => x.NomenclatureId, (node, nom) => node.Nomenclature = nom); return(result); }