Thursday, July 10, 2025

Create and post Free text invoice for customer through code X++

 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:-



No comments:

Post a Comment

Get salestax amount of each individual purchline

 Scenario:- In this post we see how we can get salestax amount of a purchline from purchase order code:- PurchTable purchTable =PurchTable::...