예제 #1
0
        public IEnumerable <Nomenclature> GetDiscrepancyNomenclatures(IUnitOfWork uow, int warehouseId)
        {
            if (uow == null)
            {
                throw new ArgumentNullException(nameof(uow));
            }

            Nomenclature         nomenclatureAlias         = null;
            MovementDocument     movementDocumentAlias     = null;
            MovementDocumentItem movementDocumentItemAlias = null;

            return(uow.Session.QueryOver(() => movementDocumentItemAlias)
                   .Left.JoinAlias(() => movementDocumentItemAlias.Nomenclature, () => nomenclatureAlias)
                   .Left.JoinAlias(() => movementDocumentItemAlias.Document, () => movementDocumentAlias)
                   .Where(() => movementDocumentAlias.Status == MovementDocumentStatus.Discrepancy)
                   .Where(() => movementDocumentAlias.FromWarehouse.Id == warehouseId)
                   .Where(() => movementDocumentItemAlias.SendedAmount != movementDocumentItemAlias.ReceivedAmount)
                   .Select(Projections.Entity(() => nomenclatureAlias))
                   .List <Nomenclature>());
        }
예제 #2
0
        public static IList <MovementWagon> UsedWagonsByPeriod(IUnitOfWork uow, DateTime start, DateTime end, Warehouse warehouse)
        {
            WarehouseMovementOperation shipOpAlias    = null;
            WarehouseMovementOperation deliverOpAlias = null;
            MovementDocumentItem       itemAlias      = null;
            MovementDocument           docAlias       = null;
            MovementWagon wagonAlias = null;

            end = end.Date.AddDays(1);

            var docSubqery = QueryOver.Of <MovementDocument>(() => docAlias)
                             .JoinAlias(d => d.Items, () => itemAlias)
                             .JoinAlias(() => itemAlias.WarehouseWriteoffOperation, () => shipOpAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
                             .JoinAlias(() => itemAlias.WarehouseIncomeOperation, () => deliverOpAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
                             .Where(d => d.MovementWagon.Id == wagonAlias.Id)
                             .Where(() => ((shipOpAlias.IncomingWarehouse == warehouse || shipOpAlias.WriteoffWarehouse == warehouse) &&
                                           shipOpAlias.OperationTime >= start && shipOpAlias.OperationTime < end) ||
                                    ((deliverOpAlias.IncomingWarehouse == warehouse || deliverOpAlias.WriteoffWarehouse == warehouse) &&
                                     deliverOpAlias.OperationTime >= start && deliverOpAlias.OperationTime < end))
                             .Select(d => d.Id);

            return(uow.Session.QueryOver <MovementWagon>(() => wagonAlias)
                   .WithSubquery.WhereExists(docSubqery).List());
        }