private WorkEffort CreateWorkEffort(Organisation takenBy, Party customer, Person contact, SalesOrderItem salesOrderItem) => new WorkTaskBuilder(this.Session) .WithName("Task") .WithTakenBy(takenBy) .WithFacility(new Facilities(this.Session).Extent().First) .WithCustomer(customer) .WithContactPerson(contact) .WithWorkEffortPurpose(new WorkEffortPurposes(this.Session).Maintenance) .WithOrderItemFulfillment(salesOrderItem) .WithSpecialTerms("Net 45 Days") .Build();
public void BaseOnDeriveQuantityDecreased(ShipmentItem shipmentItem, SalesOrderItem orderItem, decimal correction) { var remainingCorrection = correction; var inventoryAssignment = orderItem.SalesOrderItemInventoryAssignments.FirstOrDefault(); if (inventoryAssignment != null) { inventoryAssignment.Quantity = orderItem.QuantityCommittedOut - correction; } foreach (OrderShipment orderShipment in shipmentItem.OrderShipmentsWhereShipmentItem) { if (orderShipment.OrderItem.Equals(orderItem) && remainingCorrection > 0) { decimal quantity; if (orderShipment.Quantity < remainingCorrection) { quantity = orderShipment.Quantity; remainingCorrection -= quantity; } else { quantity = remainingCorrection; remainingCorrection = 0; } shipmentItem.Quantity -= quantity; var itemIssuanceCorrection = quantity; foreach (ItemIssuance itemIssuance in shipmentItem.ItemIssuancesWhereShipmentItem) { decimal subQuantity; if (itemIssuance.Quantity < itemIssuanceCorrection) { subQuantity = itemIssuance.Quantity; itemIssuanceCorrection -= quantity; } else { subQuantity = itemIssuanceCorrection; itemIssuanceCorrection = 0; } itemIssuance.Quantity -= subQuantity; if (itemIssuanceCorrection == 0) { break; } } } } if (shipmentItem.Quantity == 0) { foreach (OrderShipment orderShipment in shipmentItem.OrderShipmentsWhereShipmentItem) { foreach (ItemIssuance itemIssuance in orderShipment.ShipmentItem.ItemIssuancesWhereShipmentItem) { if (!itemIssuance.PickListItem.PickListWherePickListItem.ExistPicker && itemIssuance.Quantity == 0) { itemIssuance.Delete(); } } orderShipment.Delete(); } shipmentItem.Delete(); } if (!this.ExistShipmentItems) { this.Cancel(); if (this.PendingPickList != null) { this.PendingPickList.Cancel(); } } }
private void CreateNegativePickList(IDerivation derivation, CustomerShipment shipment, SalesOrderItem orderItem, decimal quantity) { if (this.ExistShipToParty) { var pickList = new PickListBuilder(this.Strategy.Session) .WithCustomerShipmentCorrection(shipment) .WithShipToParty(this.ShipToParty) .WithStore(this.Store) .Build(); pickList.AddPickListItem(new PickListItemBuilder(this.Strategy.Session) .WithInventoryItem(orderItem.ReservedFromNonSerialisedInventoryItem) .WithRequestedQuantity(0 - quantity) .Build()); } }
public void AppsOnDeriveQuantityDecreased(IDerivation derivation, ShipmentItem shipmentItem, SalesOrderItem orderItem, decimal correction) { var remainingCorrection = correction; foreach (OrderShipment orderShipment in shipmentItem.OrderShipmentsWhereShipmentItem) { if (orderShipment.OrderItem.Equals(orderItem) && remainingCorrection > 0) { decimal quantity; if (orderShipment.Quantity < remainingCorrection) { quantity = orderShipment.Quantity; remainingCorrection -= quantity; } else { quantity = remainingCorrection; remainingCorrection = 0; } orderShipment.Quantity -= quantity; shipmentItem.Quantity -= quantity; var itemIssuanceCorrection = quantity; foreach (ItemIssuance itemIssuance in shipmentItem.ItemIssuancesWhereShipmentItem) { if (!itemIssuance.PickListItem.PickListWherePickListItem.ExistPicker) { decimal subQuantity; if (itemIssuance.Quantity < itemIssuanceCorrection) { subQuantity = itemIssuance.Quantity; itemIssuanceCorrection -= quantity; } else { subQuantity = itemIssuanceCorrection; itemIssuanceCorrection = 0; } itemIssuance.Quantity -= subQuantity; if (itemIssuanceCorrection == 0) { break; } } } if (orderShipment.Quantity == 0) { foreach (ItemIssuance itemIssuance in orderShipment.ShipmentItem.ItemIssuancesWhereShipmentItem) { if (!itemIssuance.PickListItem.PickListWherePickListItem.ExistPicker) { itemIssuance.Delete(); } } orderShipment.Delete(); } } } if (this.PendingPickList == null) { var shipment = (CustomerShipment)shipmentItem.ShipmentWhereShipmentItem; this.CreateNegativePickList(derivation, shipment, orderItem, correction); } if (shipmentItem.Quantity == 0) { shipmentItem.Delete(); } if (!this.ExistShipmentItems) { this.Cancel(); if (this.PendingPickList != null) { this.PendingPickList.Cancel(); } } }
public SalesOrderItemInventoryAssignmentTests() { this.reasons = new InventoryTransactionReasons(this.Session); var customer = new PersonBuilder(this.Session).WithFirstName("Koen").Build(); var internalOrganisation = this.InternalOrganisation; new CustomerRelationshipBuilder(this.Session).WithFromDate(this.Session.Now()).WithCustomer(customer).WithInternalOrganisation(internalOrganisation).Build(); var mechelen = new CityBuilder(this.Session).WithName("Mechelen").Build(); this.part = new NonUnifiedPartBuilder(this.Session) .WithProductIdentification(new PartNumberBuilder(this.Session) .WithIdentification("1") .WithProductIdentificationType(new ProductIdentificationTypes(this.Session).Part).Build()) .WithInventoryItemKind(new InventoryItemKinds(this.Session).NonSerialised) .Build(); var good = new NonUnifiedGoodBuilder(this.Session) .WithProductIdentification(new ProductNumberBuilder(this.Session) .WithIdentification("10101") .WithProductIdentificationType(new ProductIdentificationTypes(this.Session).Good).Build()) .WithName("good") .WithPart(this.part) .WithUnitOfMeasure(new UnitsOfMeasure(this.Session).Piece) .WithVatRegime(new VatRegimes(this.Session).BelgiumStandard) .Build(); this.Session.Derive(); new InventoryItemTransactionBuilder(this.Session) .WithPart(this.part) .WithReason(new InventoryTransactionReasons(this.Session).IncomingShipment) .WithQuantity(11) .Build(); this.Session.Derive(); var salesOrder = new SalesOrderBuilder(this.Session) .WithTakenBy(this.InternalOrganisation) .WithShipToCustomer(customer) .WithAssignedShipToAddress(new PostalAddressBuilder(this.Session).WithPostalAddressBoundary(mechelen).WithAddress1("Haverwerf 15").Build()) .WithAssignedBillToContactMechanism(new PostalAddressBuilder(this.Session).WithPostalAddressBoundary(mechelen).WithAddress1("Haverwerf 15").Build()) .Build(); this.salesOrderItem = new SalesOrderItemBuilder(this.Session) .WithProduct(good) .WithQuantityOrdered(3) .WithAssignedUnitPrice(5) .Build(); salesOrder.AddSalesOrderItem(this.salesOrderItem); this.Session.Derive(); salesOrder.SetReadyForPosting(); this.Session.Derive(); salesOrder.Post(); this.Session.Derive(); salesOrder.Accept(); this.Session.Derive(); this.Session.Commit(); }