Last active
June 5, 2021 23:35
-
-
Save chrismckelt/da45843a40b0b3ab7cfd3520ea06bdba to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[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