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); }
public virtual void When(IMergePatchInventoryItem c) { Update(c, ar => ar.MergePatch(c)); }
void IInventoryItemApplicationService.When(IMergePatchInventoryItem c) { this.When((MergePatchInventoryItemDto)c); }
public virtual void MergePatch(IMergePatchInventoryItem c) { IInventoryItemStateMergePatched e = Map(c); Apply(e); }