Tuesday, August 26, 2008

How to print a different Sales Invoice per company in AX

If you want to print a different Sales Invoice per every company you have, you must change the method printJournal in the table CustInvoiceJour and the form CustInvoiceJournal (MenuButton "SalesInvoiceShow" -> Copy, Original and Original print):

Modified method printJournal for the table CustInvoiceJour:

server void  printJournal(SalesFormLetter      salesFormLetter = null,
                          RecordSortedList     journalList     = null,
                          NoYes                copy            = NoYes::No)
{
    Args                parameters = new Args();
    MenuFunction        salesInvoiceMenu;
    ;

    // Show the correct report for the every company
    switch (strupr(curExt()))
    {
        case "OPP":
            salesInvoiceMenu = new MenuFunction(menuitemoutputstr(OPPSalesInvoice),MenuItemType::Output);
            break;
        
        default:
            salesInvoiceMenu = new MenuFunction(menuitemoutputstr(SalesInvoice),MenuItemType::Output);
    }
    // End

    parameters.caller(salesFormLetter);

    if (journalList)
        parameters.object(journalList);
    else
        parameters.record(this);

    salesInvoiceMenu.run(parameters);
}


For every MenuItemButton below the SalesInvoiceShow, you must override the clicked method as follows:
void clicked()
{
    Args                parameters = new Args();
    MenuFunction        salesInvoiceMenu;
    ;

    // Let the menuItemButton as this, with original parameters but
    // don't call super, to avoid call directly the report SalesInvoice
    //super();

    switch (strupr(curExt()))
    {
        case "OPP":
            salesInvoiceMenu = new MenuFunction(menuitemoutputstr(OPPSalesInvoiceCopy),MenuItemType::Output);
            break;

        default:
            salesInvoiceMenu = new MenuFunction(menuitemoutputstr(SalesInvoiceCopy),MenuItemType::Output);
    }

    parameters.caller(this);
    parameters.record(CustInvoiceJour);

    salesInvoiceMenu.run(parameters);
    // End
}


NOTE: You must use SalesInvoiceCopy, SalesInvoiceOriginal and SalesInvoice por Copy, Original and Original print respectively.

2 comments:

Mohammed Rasheed said...

Hi Oscar,

This is a really good blog..thank you for posting it online.

i did a similar enhancement once, but i had to take a different approach. if i remember right, the problem was with Batch posting of invoices (Sales Leger (AR) > Periodic > Sales Update >Invoice). i was wondering if you had the chance to test your code via this path.

i look forward to hearing from you.

kind regards,
Mohammed Rasheed

Denise said...

Great! Thanks to you and your blog to share it the code online. It would really be a big help for us. Thanks for the post! Hoping for more helpful posts from you. Regards!

Denise

small business invoice software


View My Stats