public override void When(MovementCommands.DocumentAction c) { if (c.Value == DocumentAction.Complete) { var mov = AssertDocumentStatus(c.DocumentNumber, DocumentStatusIds.Drafted); var inventoryItemEntries = CompleteMovementCreateInventoryItemEntries(mov); CreateOrUpdateInventoryItems(inventoryItemEntries); if (mov.IsInTransit) { var movConfirm = CreateMovementConfirmation(mov); MovementConfirmationApplicationService.When(movConfirm); } base.When(c); } else if (c.Value == DocumentAction.Confirm) { throw new NotSupportedException("Need to confirm MovementConfirmation."); } else if (c.Value == DocumentAction.Reverse) { var srcMov = AssertDocumentStatus(c.DocumentNumber, DocumentStatusIds.Completed); var reversalMovInfo = CreateReversalMovementAndCompleteAndClose(c, srcMov); ReverseUpdateSourceMovement(c, reversalMovInfo); //base.When(c); } else { base.When(c); } }
private void ReverseUpdateSourceMovement(MovementCommands.DocumentAction c, ICreateMovement reversalMovInfo) { //源单据前向关联到反转单据: var reversalDocumentNumber = reversalMovInfo.DocumentNumber; var description = "(" + reversalMovInfo.DocumentNumber + "<-)";//(1000016<-) Update(c, ar => ((MovementAggregate)ar).Reverse(reversalDocumentNumber, description, c.Version, c.CommandId, c.RequesterId)); }
private string TestCreateAndCompleteAndReverseMovement_1() { var documentNumber = Guid.NewGuid().ToString(); CreateMovement movement = new CreateMovement(); movement.DocumentNumber = documentNumber; movement.CommandId = Guid.NewGuid().ToString(); movement.WarehouseIdFrom = "1"; movement.WarehouseIdTo = "2"; movement.MovementDate = DateTime.Now; movement.IsInTransit = false;//movement.IsInTransit = true; var line_1 = movement.NewCreateMovementLine(); line_1.LineNumber = DateTime.Now.Ticks.ToString();//todo line_1.ProductId = "TEST_" + DateTime.Now.Ticks.ToString(); line_1.LocatorIdFrom = "1_TEST_F_" + DateTime.Now.Ticks.ToString(); line_1.LocatorIdTo = "2_TEST_T_" + DateTime.Now.Ticks.ToString(); line_1.AttributeSetInstanceId = "EMPTY"; line_1.MovementQuantity = 123; movement.MovementLines.Add(line_1); movementApplicationService.When(movement); var complete = new MovementCommands.DocumentAction(); complete.Value = DocumentAction.Complete; complete.DocumentNumber = documentNumber; complete.Version = 1; complete.CommandId = Guid.NewGuid().ToString(); movementApplicationService.When(complete); var reverse = new MovementCommands.DocumentAction(); reverse.Value = DocumentAction.Reverse; reverse.DocumentNumber = documentNumber; reverse.Version = 2; reverse.CommandId = Guid.NewGuid().ToString(); movementApplicationService.When(reverse); return(documentNumber); }
private string CreateAndCompleteTestMovement(bool isInTransit) { var documentNumber = Guid.NewGuid().ToString(); CreateMovement movement = new CreateMovement(); movement.DocumentNumber = documentNumber; movement.CommandId = Guid.NewGuid().ToString(); movement.WarehouseIdFrom = "1"; movement.WarehouseIdTo = "2"; //movement.DocumentAction = DocumentAction.Draft;// 不能这样写:movement.DocumentStatus = DocumentStatus.Drafted //movement.ChargeAmount = new Money(10000, "CNY"); //movement.FreightAmount = new Money(400, "CNY"); //movement.MovementTypeId = DocumentTypeIds.Movement; movement.MovementDate = DateTime.Now; ////////////////// movement.IsInTransit = isInTransit; ////////////////// var line_1 = movement.NewCreateMovementLine(); line_1.LineNumber = DateTime.Now.Ticks.ToString();//todo line_1.ProductId = "TEST_" + DateTime.Now.Ticks.ToString(); line_1.LocatorIdFrom = "1_TEST_F_" + DateTime.Now.Ticks.ToString(); line_1.LocatorIdTo = "2_TEST_T_" + DateTime.Now.Ticks.ToString(); line_1.AttributeSetInstanceId = "EMPTY"; line_1.MovementQuantity = 123; movement.MovementLines.Add(line_1); movementApplicationService.When(movement); var complete = new MovementCommands.DocumentAction(); complete.Value = DocumentAction.Complete; complete.DocumentNumber = documentNumber; complete.Version = 1; complete.CommandId = Guid.NewGuid().ToString(); movementApplicationService.When(complete); return(documentNumber); }
///// <summary> ///// Confirm all movement line quantities. ///// </summary> //internal IList<ICreateInventoryItemEntry> ConfirmMovementCreateInventoryItemEntries(IMovementState movement) //{ // Func<IMovementLineState, decimal> getConfirmedQty = d => d.MovementQuantity; // var invItemEntries = ConfirmMovementCreateInventoryItemEntries(movement, getConfirmedQty); // return invItemEntries; //} private ICreateMovement CreateReversalMovementAndCompleteAndClose(MovementCommands.DocumentAction c, IMovementState movement) { var createReversalMovement = CreateReversalMovement(movement); When(createReversalMovement); When(new MovementCommands.DocumentAction { Value = DocumentAction.Complete, DocumentNumber = createReversalMovement.DocumentNumber, Version = 1, CommandId = c.CommandId, RequesterId = c.RequesterId, }); When(new MovementCommands.DocumentAction { Value = DocumentAction.Close, DocumentNumber = createReversalMovement.DocumentNumber, Version = 2, CommandId = c.CommandId, RequesterId = c.RequesterId, }); return(createReversalMovement); }
public void When(MovementCommands.DocumentAction c) { throw new NotImplementedException();//todo }
internal void ConfirmUpdateMovement(MovementCommands.DocumentAction c) { Update(c, ar => ((MovementAggregate)ar).DocumentAction(DocumentAction.Confirm, c.Version, c.CommandId, c.RequesterId)); }