Skip to Content
0
Oct 10, 2017 at 09:12 PM

Create a Supplier Invoice in ByD via ABSL

1221 Views

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.

Attachments

000130.jpg (20.0 kB)
000131.jpg (5.8 kB)