internal final class TestFreeTextInvoices
{
/// <summary>
/// Class entry point. The system will call this method when a designated menu
/// is selected or when execution starts and this class is set as the startup class.
/// </summary>
/// <param name = "_args">The specified arguments.</param>
public static CustInvoiceTable custInvoiceTable;
public static CustInvoiceLine custInvoiceLine;
public static void main(Args _args)
{
TestFreeTextInvoices caption = new TestFreeTextInvoices();
caption.createCustInvoiceHeader(systemDateGet(),(systemDateGet()+10),'US-001','10');
if(custInvoiceTable)
{
caption.createCustInvoiceLine(custInvoiceTable,'test description','ALL','CA',1,1,'110110');
if(custInvoiceLine)
{
caption.postCustInvoice(custInvoiceTable);
}
}
}
public CustInvoiceTable createCustInvoiceHeader(TransDate _invoiceDate , DueDate _dueDate, CustAccount _custAccount = '', CustGroupId _custGroup = '')
{
CustTable custTable;
custTable = CustTable::find(_custAccount);
custInvoiceTable.initFromCustTable(custTable);
custInvoiceTable.CustGroup = _custGroup;
custInvoiceTable.OrderAccount = _custAccount;
custInvoiceTable.InvoiceAccount = _custAccount;
custInvoiceTable.modifiedField(fieldNum(CustInvoiceTable, OrderAccount));
custInvoiceTable.InvoiceDate = _invoiceDate;
custInvoiceTable.DueDate = _dueDate;
if(custInvoiceTable.validateWrite())
{
custInvoiceTable.insert();
}
return custInvoiceTable;
}
public void createCustInvoiceLine(CustInvoiceTable _custInvoiceTable, TransactionTextLarge _description = '', TaxItemGroup _taxItemGroup = '', TaxGroup _taxGroup = '', InvoiceQuantity _qty = 1, InvoiceUnitPrice _unitPrice = 1, str MainAccount ='')
{
LineNum lineNum;
custInvoiceLine.initValue();
custInvoiceLine.initFromCustInvoiceTable(_custInvoiceTable);
custInvoiceLine.Description = _description;
custInvoiceLine.TaxItemGroup = _taxItemGroup;
custInvoiceLine.TaxGroup = _taxGroup;
custInvoiceLine.ParentRecId = _custInvoiceTable.RecId;
custInvoiceLine.Quantity = _qty;
custInvoiceLine.modifiedField(fieldNum(CustInvoiceLine, Quantity));
custInvoiceLine.UnitPrice = _unitPrice;
custInvoiceLine.modifiedField(fieldNum(CustInvoiceLine, UnitPrice));
custInvoiceLine.AmountCur = custInvoiceLine.Quantity * custInvoiceLine.UnitPrice;
custInvoiceLine.LedgerDimension = TestFreeTextInvoices::findLedgerDimensionByMainAccount(MainAccount);
if(custInvoiceLine.validateWrite())
{
custInvoiceLine.insert();
}
}
public static RecId findLedgerDimensionByMainAccount(str MainAccount)
{
MainAccount mainAccounttest = MainAccount::findByMainAccountId(MainAccount, true);
DimensionAttributeValueCombination dimensionAttributeValueCombination;
select firstOnly dimensionAttributeValueCombination
where dimensionAttributeValueCombination.MainAccount == mainAccounttest.RecId && dimensionAttributeValueCombination.LedgerDimensionType==LedgerDimensionType::DefaultAccount;
return dimensionAttributeValueCombination.RecId;
}
public void postCustInvoice(CustInvoiceTable _custInvoiceTable)
{
CustPostInvoice custPostInvoice;
custPostInvoice = new CustPostInvoice(_custInvoiceTable);
ttsbegin;
custPostInvoice.run();
ttscommit;
}
}
OutPut:-