Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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]));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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());
        }
Exemplo n.º 6
0
        /// <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);
        }