public RouteListClosingDocumentsController( IStandartNomenclatures standartNomenclaturesParameters, IEmployeeRepository employeeRepository, IRouteListRepository routeListRepository, ITerminalNomenclatureProvider terminalNomenclatureProvider) { this.standartNomenclaturesParameters = standartNomenclaturesParameters ?? throw new ArgumentNullException(nameof(standartNomenclaturesParameters)); this.employeeRepository = employeeRepository ?? throw new ArgumentNullException(nameof(employeeRepository)); this.routeListRepository = routeListRepository ?? throw new ArgumentNullException(nameof(routeListRepository)); this.terminalNomenclatureProvider = terminalNomenclatureProvider ?? throw new ArgumentNullException(nameof(terminalNomenclatureProvider)); }
public FastPaymentManager( IFastPaymentParametersProvider fastPaymentParametersProvider, IOrderParametersProvider orderParametersProvider, IStandartNomenclatures standartNomenclatures, IRouteListItemRepository routeListItemRepository, ISelfDeliveryRepository selfDeliveryRepository, ICashRepository cashRepository) { _fastPaymentParametersProvider = fastPaymentParametersProvider ?? throw new ArgumentNullException(nameof(fastPaymentParametersProvider)); _orderParametersProvider = orderParametersProvider ?? throw new ArgumentNullException(nameof(orderParametersProvider)); _standartNomenclatures = standartNomenclatures ?? throw new ArgumentNullException(nameof(standartNomenclatures)); _routeListItemRepository = routeListItemRepository ?? throw new ArgumentNullException(nameof(routeListItemRepository)); _selfDeliveryRepository = selfDeliveryRepository ?? throw new ArgumentNullException(nameof(selfDeliveryRepository)); _cashRepository = cashRepository ?? throw new ArgumentNullException(nameof(cashRepository)); }
public abstract bool IsValidForOrder(Order order, IStandartNomenclatures standartNomenclatures);
public override bool IsValidForOrder(Order order, IStandartNomenclatures standartNomenclatures) { if (!IsForZeroDebt) { return(true); } var forfeitId = standartNomenclatures.GetForfeitId(); BottlesRepository bottlesRepository = new BottlesRepository(); BottlesMovementOperation bottlesMovementAlias = null; Order orderAlias = null; //Долг клиента var counterpartyDebtQuery = order.UoW.Session.QueryOver <BottlesMovementOperation>(() => bottlesMovementAlias) .Where(() => bottlesMovementAlias.DeliveryPoint == null) .Where(() => bottlesMovementAlias.Counterparty.Id == order.Client.Id) .Select( Projections.SqlFunction(new SQLFunctionTemplate(NHibernateUtil.Int32, "( ?2 - ?1 )"), NHibernateUtil.Int32, new IProjection[] { Projections.Sum(() => bottlesMovementAlias.Returned), Projections.Sum(() => bottlesMovementAlias.Delivered) } )).SingleOrDefault <int>(); if (counterpartyDebtQuery != 0) { return(false); } //Долг по точкам доставки foreach (var deliveryPoint in order.Client.DeliveryPoints) { if (bottlesRepository.GetBottlesDebtAtDeliveryPoint(order.UoW, deliveryPoint) != 0) { return(false); } } //Возврат бутылей и(ничего или возврат залога или неустойка) var orders1 = order.UoW.Session.QueryOver(() => orderAlias) .Where(() => orderAlias.Client.Id == order.Client.Id) .Where(() => orderAlias.OrderStatus == OrderStatus.Closed) .Where(() => orderAlias.BottlesReturn != 0) .List <Order>(); if (orders1.Count == 0) { return(false); } var orders2 = new List <Order>(); foreach (var o in orders1) { if (o.OrderDepositItems != null && o.OrderItems == null) { orders2.Add(o); } if (o.OrderItems.All(i => i.Nomenclature.Id == forfeitId)) { orders2.Add(o); } if (o.OrderItems == null) { orders2.Add(o); } } if (orders2.Count == 0) { return(false); } //Ввод остатков foreach (var o in orders2) { if (o.DeliveryPoint == null) { continue; } if (o.DeliveryPoint.HaveResidue.HasValue) { if (!o.DeliveryPoint.HaveResidue.Value) { return(false); } } } return(true); }