Thursday, 29 January 2015

Refresh AOT elements

We ran into an issue at a client site where even though I wrote a new ExchangeRateProvider class, it would not show up in the dropdown list.

It turns out we just needed to refresh the elements using this handy option in the AOT.  If you are ever not seeing your code updates reflecting in AX, this only takes a few seconds and could save you hours of headache.


Tuesday, 13 January 2015

Segments of ledger dimensions

static void SR_Extract_SegmentName_values(Args _args)
{
    #define.CostCenter("CostCenter")
    Query                                   query;
    QueryRun                                queryRun;
    QueryBuildDataSource                    qbds,qbdsDate;
    GeneralJournalAccountEntry              generalJournalAccountEntry;
    GeneralJournalEntry                     generalJournalEntry;
    container                               value = conNull();
    OMOperatingUnit                         omou;

    // Dimension
    DimensionStorage        dimensionStorage;

    // Segment
    int                     segmentCount, segmentIndex;
    DimensionStorageSegment segment;
    str 100                 segmentName, MainAccount, segmentValue;
    container               segments;
    query                   = new Query();
    qbds                    = query.addDataSource(tableNum(GeneralJournalAccountEntry));

    // Sum functional and transaction amounts

    qbds.addSelectionField(fieldNum(GeneralJournalAccountEntry, AccountingCurrencyAmount), SelectionField::Sum);
    qbds.addSelectionField(fieldNum(GeneralJournalAccountEntry, TransactionCurrencyAmount), SelectionField::Sum);
    qbds.addGroupByField(fieldNum(GeneralJournalAccountEntry, LedgerDimension));
    qbdsDate = qbds.addDataSource(tableNum(GeneralJournalEntry));
    qbdsDate.joinMode(JoinMode::InnerJoin);
    qbdsDate.fetchMode(QueryFetchMode::One2One);
    qbdsDate.addLink(fieldNum(GeneralJournalAccountEntry, GeneralJournalEntry), fieldNum(GeneralJournalEntry, RecId));
    queryRun = new QueryRun(query);

    while (queryRun.next())
    {
        generalJournalAccountEntry = queryRun.get(tableNum(generalJournalAccountEntry));
        // Get dimension storage
        dimensionStorage = DimensionStorage::findById(GeneralJournalAccountEntry.LedgerDimension);
        if (dimensionStorage == null)
        {
            throw error("@SYS83964");
        }
        // Add segments for all hierarchies
        segments = conNull();
        // Get segments
        segmentCount = dimensionStorage.segmentCountForHierarchy(1);
        for (segmentIndex = 1; segmentIndex <= segmentCount; segmentIndex++)
        {
            // Get segment
            segment = dimensionStorage.getSegmentForHierarchy(1, segmentIndex);
            if (segment.parmDimensionAttributeValueId() != 0)
            {
                // Get segment name
                segmentName = DimensionAttribute::find(DimensionAttributeValue::find(segment.parmDimensionAttributeValueId        ()).DimensionAttribute).Name;

                // Add segment value
                segmentValue = segment.parmDisplayValue();

                if (segmentIndex == 1)
                {
                    MainAccount = segmentValue;
                }

                if (segmentName == #CostCenter)
                {
                   info("Main account – " +  MainAccount);
                   info("Segment Name – " + segmentName);
                   info("Cost center – "  + segmentValue);
                   info(strFmt(‘Total TransactionCurrency amount – %1′,generalJournalAccountEntry.TransactionCurrencyAmount));
                   info(strFmt(‘Total AccountingCurrency amount – %1′, generalJournalAccountEntry.AccountingCurrencyAmount));
                   info("______________________________________");
                }
            }
        }
    }
}

Build Ledger Dimensions

RecId getDimension(str _ledgerAccount, str _businessUnit, str _costCentre, str _jurisdiction, str _subscriberType)  
 {  
   DimensionServiceProvider      DimensionServiceProvider = new DimensionServiceProvider();  
   LedgerAccountContract        LedgerAccountContract = new LedgerAccountContract();  
   DimensionAttributeValueContract   ValueContract;  
   List                ListValueContract = new List(Types::Class);  
   dimensionAttributeValueCombination dimensionAttributeValueCombination;  
   DimensionStorage          dimStorage;  
   if (_businessUnit)  
   {  
     ValueContract = new DimensionAttributeValueContract();  
     ValueContract.parmName('BusinessUnit') ;  
     ValueContract.parmValue(_businessUnit);  
     ListValueContract.addEnd(ValueContract);  
   }  
   if (_costCentre)  
   {  
     ValueContract = new DimensionAttributeValueContract();  
     ValueContract.parmName('CostCentre') ;  
     ValueContract.parmValue(_costCentre);  
     ListValueContract.addEnd(ValueContract);  
   }  
   if (_jurisdiction)  
   {  
     ValueContract = new DimensionAttributeValueContract();  
     ValueContract.parmName('Jurisdiction') ;  
     ValueContract.parmValue(_jurisdiction);  
   }  
   if (_subscriberType)  
   {  
     ValueContract = new DimensionAttributeValueContract();  
     ValueContract.parmName('SubscriberType') ;  
     ValueContract.parmValue(_subscriberType);  
     ListValueContract.addEnd(ValueContract);  
   }  
   LedgerAccountContract.parmMainAccount(_ledgerAccount);  
   LedgerAccountContract.parmValues(ListValueContract);  
   dimStorage = DimensionServiceProvider::buildDimensionStorageForLedgerAccount(LedgerAccountContract);  
   dimensionAttributeValueCombination = DimensionAttributeValueCombination::find(dimStorage.save());  
   return dimensionAttributeValueCombination.RecId;  
 } 

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.