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>()); }
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()); }