How do i set for example:
cartContext.Cart.Order.ShippingInfo.FirstOrDefault().ExpectedDeliveryDate = deliveryTime
I get this error NotSupportedException: Collection is read-only. But I can’t figure out how to make it writeable, and save it after.
Litium version: 8.3
Ericsj11:
ExpectedDeliveryDate
If you look at the SalesOrderFixture in the IntegrationTest project, they set it when the Shipment is created.
Could you do that instead? Set that date when you create the shipment?
From Litiums Integration Test project
public Sales.Shipment CreateShipment()
{
var shipment = new Sales.Shipment()
{
Id = this.UniqueString(),
TrackingReference = this.UniqueString(),
TrackingUrl = this.UniqueString(),
DeliveryInstructions = this.UniqueString(),
ShipmentDocuments = new Dictionary<string, string> { { "key", "value" } },
ExpectedDeliveryDate = DateTimeOffset.Now,
ReceiverAddress = new Litium.Sales.Address()
{
FirstName = this.UniqueString(),
LastName = this.UniqueString(),
Address1 = "Receiver Address"
},
DeliveryCarrierId = this.UniqueString(),
CurrencyCode = this.UniqueString(),
AdditionalInfo = new Dictionary<string, object> { { "key", "value" } },
ContentDescription = this.UniqueString(),
DeliveryCarrierServiceCode = this.UniqueString(),
ReceiverReference = this.UniqueString(),
SenderReference = this.UniqueString(),
ShippingMethod = ShippingMethod.RegisteredPost,
TmsShippingOptionReferenceId = this.UniqueString(),
VatSummary = new Dictionary<decimal, decimal> { { 1, 1 } }
};
return shipment;
}
Thanks, but the shipment is never created in any code I can access in a standard project and I need to update the value on a refresh of the checkout.
If you instead use additionalInfo to store the date you have the option to use cartContext.SelectShippingOptionAsync(selectShippingOptionArgs);
Could work , but would like to know how to work with the existing properties.
Here is some code sample on how to update the property.
await _cartContextSessionService.UpdateAsync(cartContext.Cart.SystemId, (cartContextSession) =>
{
var shippingInfo = cartContextSession.Cart.Order.ShippingInfo.FirstOrDefault();
if(shippingInfo is null)
{
cartContextSession.Cart.Order.ShippingInfo.Add(new ShippingInfo { ExpectedDeliveryDate = DateTimeOffset.Now });
}
else
{
shippingInfo.ExpectedDeliveryDate = DateTimeOffset.Now;
}
return Task.FromResult(true);
});
1 Like
Just a note: Keep in mind that this code does not use our public API but internal classes that may change without notice in newer releases.
So there is no offical way to set these properties released yet?
Not for the moment but put a comment on your code in case something changes in future so it would be easier to find the issue.
1 Like
system
Closed
June 10, 2022, 1:37pm
10
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.