Hi,
I downloaded the code from gitHub and i'm trying to call this method "CreateSalesOrderInSingleChangeset"
Here's my code:
public static void CreateSalesOrderInSingleChangeset(Resources context)
{
try
{
SalesOrderHeader salesOrder = new SalesOrderHeader();
DataServiceCollection salesOrderCollection = new DataServiceCollection(context);
salesOrderCollection.Add(salesOrder);
//salesOrder.SalesOrderNumber = salesOrderNumber; // Change number sequence setting in AX to allow user to set values.
salesOrder.CurrencyCode = "GBP";
salesOrder.InvoiceCustomerAccountNumber = "Cust1";
salesOrder.OrderingCustomerAccountNumber = "Cust1";
salesOrder.LanguageId = "en-gb";
salesOrder.DataAreaId = "comp";
context.MergeOption = MergeOption.OverwriteChanges;
context.SaveChanges(SaveChangesOptions.PostOnlySetProperties | SaveChangesOptions.BatchWithIndependentOperations);
SalesOrderLine salesOrderLine = new SalesOrderLine();
DataServiceCollection salesOrderLineCollection = new DataServiceCollection(context);
salesOrderLineCollection.Add(salesOrderLine);
salesOrderLine.SalesOrderNumber = salesOrder.SalesOrderNumber;
salesOrderLine.ItemNumber = "item1";
salesOrderLine.OrderedSalesQuantity = 1;
salesOrderLine.ShippingSiteId = "0106";
salesOrderLine.ShippingWarehouseId = "Loc1";
salesOrderLine.DataAreaId = "comp";
context.SaveChanges(SaveChangesOptions.PostOnlySetProperties | SaveChangesOptions.BatchWithSingleChangeset); // Batch with Single Changeset ensure the saved changed runs in all-or-nothing mode.
Console.WriteLine(string.Format("Invoice {0} - Saved !", salesOrderNumber));
}
catch (Exception ex)
{
Console.WriteLine(ex.InnerException.Message);
}
}
1. It seems at the header i'm getting this error:
"insert not allowed for field 'CustomField'","type":"Microsoft.Dynamics.Platform.Integration.Services.OData.ODataSecurityException","stacktrace":
** this field is not mine, it's customized (other model)How to solve it?
2) Is using the following two lines for creating sales order header and line together and is correct? cause currently it seems i'm saving twice one for the header and one for line.
( i want to use standard number sequence for the sales order number in d365)
context.MergeOption = MergeOption.OverwriteChanges;
context.SaveChanges(SaveChangesOptions.PostOnlySetProperties | SaveChangesOptions.BatchWithIndependentOperations);