Ejemplo n.º 1
0
        public static QueryOver <Equipment> GetEquipmentAtDeliveryPointQuery(Counterparty client, DeliveryPoint deliveryPoint)
        {
            Equipment equipmentAlias = null;
            CounterpartyMovementOperation operationAlias           = null;
            CounterpartyMovementOperation subsequentOperationAlias = null;

            var subsequentOperationsSubquery = QueryOver.Of <CounterpartyMovementOperation>(() => subsequentOperationAlias)
                                               .Where(() => operationAlias.Id < subsequentOperationAlias.Id && operationAlias.Equipment == subsequentOperationAlias.Equipment)
                                               .Select(op => op.Id);

            var availableEquipmentIDsSubquery = QueryOver.Of <CounterpartyMovementOperation>(() => operationAlias)
                                                .WithSubquery.WhereNotExists(subsequentOperationsSubquery)
                                                .Where(() => operationAlias.IncomingCounterparty.Id == client.Id);

            if (deliveryPoint != null)
            {
                availableEquipmentIDsSubquery
                .Where(() => operationAlias.IncomingDeliveryPoint.Id == deliveryPoint.Id);
            }
            availableEquipmentIDsSubquery
            .Select(op => op.Equipment.Id);
            return(QueryOver.Of <Equipment>(() => equipmentAlias).WithSubquery.WhereProperty(() => equipmentAlias.Id).In(availableEquipmentIDsSubquery));
        }
 public virtual void CreateOperation(Counterparty counterpartySrc, DeliveryPoint pointSrc, Counterparty counterpartyDst, DeliveryPoint pointDst, DateTime time)
 {
     WarehouseMovementOperation = null;
     CounterpartyMovementOperation = new CounterpartyMovementOperation
         {
             IncomingCounterparty = counterpartyDst,
             IncomingDeliveryPoint = pointDst,
             WriteoffCounterparty = counterpartySrc,
             WriteoffDeliveryPoint = pointSrc,
             Amount = Amount,
             OperationTime = time,
             Nomenclature = Nomenclature,
             Equipment = Equipment
         };
 }
Ejemplo n.º 3
0
        public override void UpdateNodes()
        {
            Nomenclature nomenclatureAlias                         = null;
            ClientEquipmentBalanceVMNode resultAlias               = null;
            Counterparty  counterpartyAlias                        = null;
            DeliveryPoint deliveryPointAlias                       = null;
            Equipment     equipmentAlias                           = null;
            CounterpartyMovementOperation operationAlias           = null;
            CounterpartyMovementOperation subsequentOperationAlias = null;

            var lastCouterpartyOp = UoW.Session.QueryOver <CounterpartyMovementOperation>(() => operationAlias)
                                    .JoinAlias(o => o.Equipment, () => equipmentAlias)
                                    .Where(o => o.Equipment != null);

            if (Filter.RestrictIncludeSold == false)
            {
                lastCouterpartyOp.Where(x => x.ForRent == true);
            }

            if (Filter.RestrictDeliveryPoint == null)
            {
                if (Filter.RestrictCounterparty != null)
                {
                    lastCouterpartyOp.Where(x => x.IncomingCounterparty == Filter.RestrictCounterparty);
                }
                else
                {
                    lastCouterpartyOp.Where(x => x.IncomingCounterparty != null);
                }
            }
            else
            {
                lastCouterpartyOp.Where(x => x.IncomingDeliveryPoint == Filter.RestrictDeliveryPoint);
            }

            if (Filter.RestrictNomenclature != null)
            {
                lastCouterpartyOp.Where(() => equipmentAlias.Nomenclature.Id == Filter.RestrictNomenclature.Id);
            }

            var subsequentOperationsSubquery = QueryOver.Of <CounterpartyMovementOperation> (() => subsequentOperationAlias)
                                               .Where(() => operationAlias.OperationTime < subsequentOperationAlias.OperationTime && operationAlias.Equipment == subsequentOperationAlias.Equipment)
                                               .Select(op => op.Id);

            lastCouterpartyOp.WithSubquery.WhereNotExists(subsequentOperationsSubquery);

            var resultList = lastCouterpartyOp
                             .JoinAlias(o => o.IncomingCounterparty, () => counterpartyAlias)
                             .JoinAlias(o => o.IncomingDeliveryPoint, () => deliveryPointAlias)
                             .JoinAlias(() => equipmentAlias.Nomenclature, () => nomenclatureAlias)
                             .SelectList(list => list
                                         .Select(() => equipmentAlias.Id).WithAlias(() => resultAlias.Id)
                                         .Select(() => nomenclatureAlias.Name).WithAlias(() => resultAlias.NomenclatureName)
                                         .Select(() => counterpartyAlias.FullName).WithAlias(() => resultAlias.Client)
                                         .Select(() => deliveryPointAlias.CompiledAddress).WithAlias(() => resultAlias.Address)
                                         .Select(() => operationAlias.ForRent).WithAlias(() => resultAlias.IsOur)
                                         .Select(() => equipmentAlias.Id).WithAlias(() => resultAlias.SerialNumberInt)
                                         )
                             .OrderBy(x => x.OperationTime).Desc
                             .TransformUsing(Transformers.AliasToBean <ClientEquipmentBalanceVMNode> ())
                             .List <ClientEquipmentBalanceVMNode> ();

            SetItemsSource(resultList);
        }
Ejemplo n.º 4
0
        public virtual CounterpartyMovementOperation UpdateCounterpartyOperation()
        {
            var amount = Confirmed ? 1 : 0;

            if(amount == 0)
            {
                //FIXME Проверить может нужно удалять.
                CounterpartyMovementOperation = null;
                return null;
            }

            if (CounterpartyMovementOperation == null)
            {
                CounterpartyMovementOperation = new CounterpartyMovementOperation();
            }

            CounterpartyMovementOperation.OperationTime = Order.DeliveryDate.Value.Date.AddHours(23).AddMinutes(59);
            CounterpartyMovementOperation.Amount = amount;
            CounterpartyMovementOperation.Nomenclature = Equipment.Nomenclature;
            CounterpartyMovementOperation.Equipment = Equipment;
            CounterpartyMovementOperation.ForRent = (Reason != Reason.Sale);
            if (Direction == Direction.Deliver)
            {
                CounterpartyMovementOperation.IncomingCounterparty = Order.Client;
                CounterpartyMovementOperation.IncomingDeliveryPoint = Order.DeliveryPoint;
                CounterpartyMovementOperation.WriteoffCounterparty = null;
                CounterpartyMovementOperation.WriteoffDeliveryPoint = null;
            }
            else
            {
                CounterpartyMovementOperation.WriteoffCounterparty = Order.Client;
                CounterpartyMovementOperation.WriteoffDeliveryPoint = Order.DeliveryPoint;
                CounterpartyMovementOperation.IncomingCounterparty = null;
                CounterpartyMovementOperation.IncomingDeliveryPoint = null;
            }

            return CounterpartyMovementOperation;
        }