Thursday, 3 July 2014

Creating number sequence

http://swathidynamicsax.blogspot.ca/2012/07/simple-steps-to-create-number-sequence.html

Wednesday, 11 June 2014

A custom export to excel function with custom filters.




public void ExpotToExcel()
{
   

    CustInvoiceJour localcustInvoiceJour;
    CustInvoiceTrans localcustInvoiceTrans;
    SalesTable localsalesTable;
    SalesLine localsalesLine;
    InventDim localinventDim;
    ProdTable localprodTable;
    CustTable localcustTable;

    container line;
    CommaIo   file;

    FormRun     formrun;
    Args        args;
    ARG_InvoiceExportFilters invoiceExportFilters;

    FilePath filename = WinAPI::getSaveFileName(0, ["Comma Sperated Value .csv", "*.csv"], "", "Specify Path", "", "InvoiceInquiry"+ curUserId() + date2str(systemDateGet(), 321, 2, DateSeparator::None, 2, DateSeparator::None, 4) + ".csv");

    args = new Args(formStr(ARG_InvoiceExportFilters));


    formRun = new FormRun(args);
    formRun.init();
    formRun.run();
    formRun.wait();

    select invoiceExportFilters;

    file = new CommaIo(filename, 'W');
    if( !file || file.status() != IO_Status::Ok)
    {
        throw error("File Cannot be opened");
    }

    line = ["Invoice", "Date", "Item Id", "Main Account", "Sales Order", "Delivery Name", "Sales District", "Sales Taker", "Production Order",
            "Location", "Size", "Resource Group", "Prod Line", "Shipped", "Booking", "Extended Cost", "Commission", "Profit %",
            "Actual Item Costs", "Actual Process Costs", "Actual Service Costs", "Actual Indirect Rate Costs", "Actual Costs Total",
            "Estimated Item Costs", "Estimated Process Costs", "Estimated Service Costs", "Estimated Indirect Rate Costs", "Estimated Costs Total",
            "Standard Costs"];
    file.writeExp(line);

    if(subStr(invoiceExportFilters.InvoiceDate, 0, 1) == "<"){

        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.InvoiceDate < str2Date(subStr(invoiceExportFilters.InvoiceDate, 2, strLen(invoiceExportFilters.InvoiceDate)-1), 123)
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                        file.writeExp(line);
                }
        }
    }
    else if(subStr(invoiceExportFilters.InvoiceDate, 0, 1) == ">"){


        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.InvoiceDate > str2Date(subStr(invoiceExportFilters.InvoiceDate, 2, strLen(invoiceExportFilters.InvoiceDate)-1), 123)
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                       file.writeExp(line);
                }
        }
    }

    else if(invoiceExportFilters.InvoiceDate == "*"){
        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                        file.writeExp(line);
                }
        }
    }
    else if(strContains(invoiceExportFilters.InvoiceDate, "..")){
        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.InvoiceDate >= str2Date(subStr(invoiceExportFilters.InvoiceDate, 1, 10), 123)
                                             && localcustInvoiceJour.InvoiceDate <= str2Date(subStr(invoiceExportFilters.InvoiceDate, 13, strLen(invoiceExportFilters.InvoiceDate)-1), 123)
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                        file.writeExp(line);
                }
        }
    }

    else{

        while select localCustInvoiceJour where localcustInvoiceJour.InvoiceId like (invoiceExportFilters.InvoiceId ? invoiceExportFilters.InvoiceId : "*")
                                             && localcustInvoiceJour.InvoiceDate == str2Date(invoiceExportFilters.InvoiceDate, 123)
                                             && localcustInvoiceJour.SalesId like (invoiceExportFilters.SalesId ? invoiceExportFilters.SalesId : "*")
            outer join
            localcustInvoiceTrans where localcustInvoiceTrans.SalesId == localcustInvoiceJour.SalesId
                                        && localcustInvoiceTrans.InvoiceId == localcustInvoiceJour.InvoiceId
                                        && localcustInvoiceTrans.InvoiceDate == localcustInvoiceJour.InvoiceDate
                                        && localcustInvoiceTrans.numberSequenceGroup == localcustInvoiceJour.numberSequenceGroup
                                        && localcustInvoiceTrans.ItemId like (invoiceExportFilters.itemId ? invoiceExportFilters.ItemId : "*")
            {


                localsalesTable = localcustInvoiceJour.salesTable();

                localSalesLine = localcustInvoiceTrans.salesLine();

                select localinventDim where localinventDim.inventDimId == localSalesLine.InventDimId;

                select localprodTable where localprodTable.ProdId == localSalesLine.InventRefId && localprodTable.ProdId like (invoiceExportFilters.ProdId ? invoiceExportFilters.ProdId : "*" );

                select localcustTable where localcustTable.AccountNum == localsalesTable.InvoiceAccount;

                if(((localsalesLine.showProdLine() like (invoiceExportFilters.ProdLine ? invoiceExportFilters.ProdLine : "*" ))||(localsalesLine.showProdLine() == "" && invoiceExportFilters.ProdLine == "*"))&&
                   ((localsalesLine.showLocation() like (invoiceExportFilters.Location ? invoiceExportFilters.Location : "*" ))||(localsalesLine.showLocation() == "" && invoiceExportFilters.Location == "*"))&&
                   ((localsalesLine.showSize() like (invoiceExportFilters.Size ? invoiceExportFilters.Size : "*" ))||(localsalesLine.showSize() == "" && invoiceExportFilters.Size == "*"))&&
                   ((localsalesLine.showResGrp() like (invoiceExportFilters.ResourceGroup ? invoiceExportFilters.ResourceGroup : "*"))||(localsalesLine.showResGrp() == "" && invoiceExportFilters.ResourceGroup == "*"))){
                        line = [localcustInvoiceJour.InvoiceId, localcustInvoiceJour.InvoiceDate, localcustInvoiceTrans.ItemId, localcustInvoiceTrans.LedgerDimension,
                        localcustInvoiceTrans.SalesId, localsalesTable.DeliveryName, localcustTable.SalesDistrictId, HcmWorker::find(localsalesTable.WorkerSalesTaker).name(),
                        localprodTable.ProdId, localcustInvoiceTrans.showLocation(localcustInvoiceTrans), localcustInvoiceTrans.showSize(localcustInvoiceTrans), localcustInvoiceTrans.showResGrp(localcustInvoiceTrans),
                        localcustInvoiceTrans.showProdLine(localcustInvoiceTrans), localcustInvoiceTrans.showShipped(localcustInvoiceTrans), localcustInvoiceTrans.showBooking(localcustInvoiceTrans), localcustInvoiceTrans.showExtendedCost(localcustInvoiceTrans),
                        " ", localcustInvoiceTrans.showProfit(localcustInvoiceTrans),
                        localProdTable.showActualCostItem(), localProdTable.showActualCostProcess(), localProdTable.showActualCostService(), localProdTable.showActualCostIndirectRate(), localProdTable.showActualCostTotal(),
                        localProdTable.showEstimatedCostItem(), localProdTable.showEstimatedCostProcess(), localProdTable.showEstimatedCostService(), localProdTable.showEstimatedCostIndirect(), localProdTable.showEstimatedCostTotal(),
                       localProdTable.showStandardCostTotal()];
                        file.writeExp(line);
                }
        }
    }

    info("Data exported to file: " + filename);


}

Friday, 21 March 2014

Refresh vs Reread vs Research

https://community.dynamics.com/ax/b/mafsarkhan/archive/2010/05/26/refresh-reread-research-executequery-which-one-to-use.aspx


Thursday, 27 February 2014

Creating a new SSRS report

When creating a new SSRS report, there are some things you need to keep in mind:

  • Security, you will need to set up a privilege that not only has the menu items you will be using, but also the TMP tables that the report uses.  The error you get when you leave off the TMP tables looks similar to a Management Reporter security issue so you might end up running in circles when the answer is right in front of you.
  • When editing a report in Visual Studio, the checkbox in the Table properties to repeat headers on a new page does nothing.  You will need to use the advanced view on the groups list to see the static headers, click on the and set RepeatOnNewPage to True.