コード例 #1
0
        protected virtual IInventoryItemStateMergePatched Map(IMergePatchInventoryItem c)
        {
            var stateEventId = new InventoryItemEventId(c.InventoryItemId, c.Version);
            IInventoryItemStateMergePatched e = NewInventoryItemStateMergePatched(stateEventId);


            e.CommandId = c.CommandId;


            e.CreatedBy = (string)c.RequesterId;
            e.CreatedAt = ApplicationContext.Current.TimestampService.Now <DateTime>();

            var version = c.Version;

            decimal onHandQuantity    = _state.OnHandQuantity;
            decimal inTransitQuantity = _state.InTransitQuantity;
            decimal reservedQuantity  = _state.ReservedQuantity;
            decimal occupiedQuantity  = _state.OccupiedQuantity;
            decimal virtualQuantity   = _state.VirtualQuantity;

            foreach (IInventoryItemEntryCommand innerCommand in c.InventoryItemEntryCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IInventoryItemEntryEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddInventoryItemEntryEvent(innerEvent);
                // ////////////////
                if (!(innerEvent is IInventoryItemEntryStateCreated))
                {
                    continue;
                }
                var entryCreated = (IInventoryItemEntryStateCreated)innerEvent;
                onHandQuantity    = onHandQuantity + (entryCreated.OnHandQuantity != null ? entryCreated.OnHandQuantity.GetValueOrDefault() : default(decimal));
                inTransitQuantity = inTransitQuantity + (entryCreated.InTransitQuantity != null ? entryCreated.InTransitQuantity.GetValueOrDefault() : default(decimal));
                reservedQuantity  = reservedQuantity + (entryCreated.ReservedQuantity != null ? entryCreated.ReservedQuantity.GetValueOrDefault() : default(decimal));
                occupiedQuantity  = occupiedQuantity + (entryCreated.OccupiedQuantity != null ? entryCreated.OccupiedQuantity.GetValueOrDefault() : default(decimal));
                virtualQuantity   = virtualQuantity + (entryCreated.VirtualQuantity != null ? entryCreated.VirtualQuantity.GetValueOrDefault() : default(decimal));
                // ////////////////
            }

            e.OnHandQuantity    = onHandQuantity;
            e.InTransitQuantity = inTransitQuantity;
            e.ReservedQuantity  = reservedQuantity;
            e.OccupiedQuantity  = occupiedQuantity;
            e.VirtualQuantity   = virtualQuantity;

            return(e);
        }
コード例 #2
0
 public virtual void When(IMergePatchInventoryItem c)
 {
     Update(c, ar => ar.MergePatch(c));
 }
コード例 #3
0
 void IInventoryItemApplicationService.When(IMergePatchInventoryItem c)
 {
     this.When((MergePatchInventoryItemDto)c);
 }
コード例 #4
0
        public virtual void MergePatch(IMergePatchInventoryItem c)
        {
            IInventoryItemStateMergePatched e = Map(c);

            Apply(e);
        }