Dear Colleagues,
I tried creating the simplest Supplier Invoice programmatically.
Unfortunately, I am stuck on the following code:
import ABSL;
import AP.SupplierInvoicing.Global;
import AP.FO.Product.Global;
import AP.FO.Party.Global;
var date = Date.Create( 2015, 10, 5 );
// Supplier Invoice
var supplierInvoiceData : elementsof SupplierInvoice;
supplierInvoiceData.TypeCode = "004"; // Invoice
supplierInvoiceData.Date = date;
supplierInvoiceData.DocumentItemsGrossAmountIndicator = false;
supplierInvoiceData.ReceiptDate = date;
supplierInvoiceData.TransactionDate = date;
//supplierInvoiceData.GrossAmount.content = 264;
supplierInvoiceData.GrossAmount.currencyCode = "GBP";
var supplierInvoice = SupplierInvoice.Create ( supplierInvoiceData );
// External Document ID
var businessTransactionDocumentReference : elementsof SupplierInvoice.BusinessTransactionDocumentReference;
businessTransactionDocumentReference.BusinessTransactionDocumentRelationshipRoleCode = "7";
businessTransactionDocumentReference.BusinessTransactionDocumentReference.ID.content = "EXT1236";
businessTransactionDocumentReference.BusinessTransactionDocumentReference.TypeCode = "28";
supplierInvoice.BusinessTransactionDocumentReference.Create ( businessTransactionDocumentReference );
// Set Seller Party
var partyData : elementsof SupplierInvoice.Party;
partyData.PartyKey.PartyID.content = "S100200";
supplierInvoice.SellerParty.Create ( partyData );
// Set Buyer Party
partyData.PartyKey.PartyID.content = "1000";
partyData.PartyKey.PartyID.content = partyData.PartyKey.PartyID.content.AddLeadingZeros();
supplierInvoice.BuyerParty.Create ( partyData );
var item1 = supplierInvoice.Item.Create();
item1.ItemProduct.ProductKey.ProductID.content = "P100109";
item1.Quantity.content = 1;
item1.NetUnitPrice.Amount.content = 220;
item1.TaxCalculationItem.TaxationCharacteristicsCode.content = "2";
foreach ( var accountingCodingBlockAssignment in item1.ItemAccountingCodingBlockDistribution.AccountingCodingBlockAssignment ) {
accountingCodingBlockAssignment.GeneralLedgerAccountAliasCode.content = "A-7460";
}
supplierInvoice.CalculateGrossAmount();
supplierInvoice.FinishDataEntryProcessing();
return;
On saving I get error messages:


There are at least two error messages I can hardly understand:
- Account assignment data missing for item 1.1
- The balance is not equal zero
I can see in the debugger that all the mentioned fields are filled with correct values and BalanceAmount = 0.
Besides that, I successfully created some supplier invoices with the same data manually (via Work Center)
Please, could you tell me what is not correct in my code?
Thank you.