Skip to content

Instantly share code, notes, and snippets.

@chrismckelt
Last active June 5, 2021 23:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrismckelt/da45843a40b0b3ab7cfd3520ea06bdba to your computer and use it in GitHub Desktop.
Save chrismckelt/da45843a40b0b3ab7cfd3520ea06bdba to your computer and use it in GitHub Desktop.
[Fact]
public async Task Will_create_sales_order_in_single_changeset()
{
string d365FoServiceUrl = Environment.GetEnvironmentVariable("D365FO.ServiceUrl", EnvironmentVariableTarget.User);
string clientId = Environment.GetEnvironmentVariable("D365FO.AppClientId", EnvironmentVariableTarget.User);
string username = Environment.GetEnvironmentVariable("D365FO.Username", EnvironmentVariableTarget.User);
string password = Environment.GetEnvironmentVariable("D365FO.Password", EnvironmentVariableTarget.User);
string tenantId = Environment.GetEnvironmentVariable("TenantId", EnvironmentVariableTarget.User);
var token = Authenticator.GetAuthTokenForAadNativeApp(username, password, tenantId, d365FoServiceUrl, clientId);
var proxy = new foProxy.D365FoProxy(token);
proxy.CreateContext();
string salesOrderNumber = await FindNextSequence();
try
{
SalesOrderHeaderV2 header = new SalesOrderHeaderV2();
DataServiceCollection<SalesOrderHeaderV2> salesOrderCollection = new DataServiceCollection<SalesOrderHeaderV2>(proxy.Context);
salesOrderCollection.Add(header);
header.SalesOrderNumber = salesOrderNumber; // Change number sequence setting in AX to allow user to set values.
header.CurrencyCode = @"AUD";
header.InvoiceCustomerAccountNumber = "CAPL-000011";
header.OrderingCustomerAccountNumber = "CAPL-000011";
header.LanguageId = "en-us";
header.DataAreaId = "CAPL";
//custom properties
header.CustomProperty1 = "999999";
header.CustomProperty2 = "JOB123";
SalesOrderLine salesOrderLine = new SalesOrderLine();
DataServiceCollection<SalesOrderLine> salesOrderLineCollection = new DataServiceCollection<SalesOrderLine>(proxy.Context);
salesOrderLineCollection.Add(salesOrderLine);
salesOrderLine.SalesOrderNumber = header.SalesOrderNumber;
salesOrderLine.ItemNumber = "2135";
salesOrderLine.OrderedSalesQuantity = 1;
salesOrderLine.ShippingSiteId = "VIC";
salesOrderLine.ShippingWarehouseId = "W1";
salesOrderLine.DataAreaId = "ABCD";
await proxy.Context.SaveChangesAsync(SaveChangesOptions.PostOnlySetProperties | SaveChangesOptions.BatchWithSingleChangeset); // Batch with Single Changeset ensure the saved changed runs in all-or-nothing mode.
_testOutputHelper.WriteLine(string.Format("Invoice {0} - Saved !", salesOrderNumber));
}
catch (Exception e)
{
_testOutputHelper.WriteLine(string.Format("Invoice {0} - Save Failed !", salesOrderNumber));
_testOutputHelper.WriteLine(e.ToString());
Assert.False(true, e.ToString());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment