Friday, October 18, 2024

SQL code to upate one Legal entity banner to all the legal entity in D365

 Hi,


update companyimage
set 

companyimage.Image  = companyimageA.Image 

from

 ( select Image from companyimage where dataAreaid = 'USFM' and imagetype = 1) as companyimageA 
where

 dataAreaid != 'USFM' and imagetype = 1

 

Regards

SQL _ Update statement using selection of same table or different table

 Hi,

update TableA

set TableA.Image  = TableB.Image from ( select Image from TableA where dataAreaid = 'USMF' and imagetype = 1) as TableB
where dataAreaid = 'USF1' and imagetype = 1

Regards,

 

X++ code to submit the pending vendor invoices

 Hi,


VendInvoiceHeaderWorkflow::submitToWorkflow(VendInvoiceInfoTable::find(541879755462212), "Submitted by Integration");


Regards,

Tuesday, July 30, 2024

Group By and Max(Date) in SQL / disticnt (GROUP BY with MAX(DATE) [duplicate] )

 Hi,


Train    Dest      Time

1        HK        10:00

1        SH        12:00

1        SZ        14:00

2        HK        13:00

2        SH        09:00

2        SZ        07:00


Expected output

Train    Dest     Time

1            SZ      14:00 

2           HK      13:00


Distinct ( max(AccountingDate) and group by (SubLedgerVoucherDataAreaID) from GeneralJournalEntry )

 distinct (GROUP BY with MAX(DATE) [duplicate] )

/**************************/

SELECT GJE.SubLedgerVoucherDataAreaID, MAX(GJE.AccountingDate) as MaxDate

FROM GENERALJOURNALENTRY GJE

GROUP BY GJE.SubLedgerVoucherDataAreaID


Thanks,


Thursday, July 18, 2024

Iterate the container in D365 / AX 2012

 Hi,

static void HandlingContainerJob(Args _args)
{
    container contain;
    int i;
    str containstr;
    ;
    contain = ["DataAt1stPosition","DataAt2ndPosition"]; //Data will be inserted at position 1 and 2
    contain = Conins(contain,3,"DataAt3rdtPosition","DataAt4thPosition"); // from 3rd position onward
    contain = conins(contain,5,"DataAt5thPosition"); // now the data inserted in 5th position
    //or use this technique
 
    info (strFmt("Length of the container: %1", conLen(contain)));
    for (i=1; i <= conLen(contain); i++)
    {
        info (strFmt("container value %1 is %2", i, conPeek(contain, i)));
    }

}

Friday, May 10, 2024

How to invoke and iterate List as Contract methods in AX 2012/ D365

Hi,

Public void performContractIterate(ClassContainsListAsContract    _ListCarryClass)
{
List contractFieldList = new List(Types::Class);
ResResourceCategoryDataContract    resourceCategoryDataContract =  new ResResourceCategoryDataContract();
contractFieldList = _ListCarryClass.parmCustomFields();
/*
// List Iterator are not recorded for mutiTier data flow example integrations with other Apps like PowerApps or APIs
ListIterator        literator = new ListIterator(contractFieldList );
while (literator.more())
{
resourceCategoryDataContract= literator.value();
if(resourceCategoryDataContract.parmId() == 1 )
{
resourceCategoryId = resourceCategoryDataContract.parmValue();
}
literator.next();
}
*/
//Traverse the same _ListCarryClass using an enumerator
ListEnumerator   enumerator = contractFieldList .getEnumerator();
while(enumerator.moveNext())
{
resourceCategoryDataContract= enumerator.current();
switch (resourceCategoryDataContract.parmId())
{
case 1:
resourceCategoryId = resourceCategoryDataContract.parmValue();
break;
}
}
//<Perform your action based on the iterator value fetched>
}
_________________________________________________________________________________

Similar example.

DimensionValueService service = new DimensionValueService();
DimensionContract dimensionContract = new DimensionContract();
DimensionValueContract dimensionValueContract;
DimensionValue dimensionValue;
List dimensionValueContractList;
ListIterator contractorIterator;
 
;
  
dimensionContract.parmDimensionName(#DimName);
dimensionValueContractList = service.getDimensionValues(dimensionContract);
contractorIterator = new ListIterator(dimensionValueContractList);
ListEnumerator contractorEnumerator = dimensionValueContractList.getEnumerator();
    
    while(contractorEnumerator.moveNext())
    {
        dimensionValueContract = contractorEnumerator.current();
        dimensionValue = dimensionValueContract.parmValue();
        {
            info(strFmt("%1", dimensionValue));
        }
    }

Regards,

Wednesday, April 24, 2024

How find size of recordsortedlist in D365/AX 2012

Hi,


This is the continuity of the previous article where we are now getting the size of recordsortedlist .


if(recordsortedlist.len() >1)
{
    print("Given recordsortedlist is bigger than 1");
}

Thanks,

How find size of List in D365/AX 2012

Hi,

public int listLengthCounter(List list)
{
Enumerator enumerator;
int length = 0;
;
enumerator = list.getEnumerator();
while(enumerator.moveNext())
{
length++;
}
return length;
}

But List has such a direct funtion


 if (list.elements() > 1) 
    { 
        print "It has has more than 1 elements"; 
    } 

Thanks

Monday, April 8, 2024

FileNameSplit() to slip the Directory, file name and extension in D365 FnO

 Hi,


    /// <summary>
    /// Validate the Fileformat
    /// </summary>
    /// <param name = "filepath">FilePath</param>
    /// <returns>Boolean</returns>
    public boolean validateFileExtension(str filepath)
    {
        str         actualFileName, fileExtension, actualFilePath;
        boolean     ok = true;
 
        [actualFilePath,actualFileName, fileExtension] = fileNameSplit(filePath);
 
        ok = strScan(actualFileName,allowedFileNameFormat,1,strLen(actualFileName));
        if(!ok)
        {
            Error("@SUNR:FileDoesntExisit");
        }
 
        return ok;
    }


Regards,


Wednesday, February 28, 2024

Dimension Lookup for both standard and Custom dimension in D365

Hi,


 /// <summary>

    /// Provides the look-up interaction for the individual dimension value lookup controls.

    /// </summary>

    /// <param name="_dimensionValueControl">

    /// The <c>FormStringControl</c> enumeration value that triggers this event.

    /// </param>

    /// <param name="_localizedName">

    /// The localized dimension attribute name

    /// </param>

    /// <param name="_promptErrorMessage">

    /// Whether prompt the error message if the dimension type is empty.

    /// </param>

    public static void dimensionValueLookup(

        FormStringControl   _dimensionValueControl,

        Name                _localizedName,

        boolean             _promptErrorMessage = false)

    {

        Query                   query = new Query();

        SysTableLookup          sysTableLookup;

        QueryBuildDataSource    qbds;


        DimensionAttribute      dimensionAttribute;

        RecId                   dimensionAttributeId;

        DataAreaId              dataAreaId = curext();


        if (_localizedName)

        {

            dimensionAttribute      = DimensionAttribute::findByLocalizedName(_localizedName, false, currentUserLanguage());

            dimensionAttributeId    = dimensionAttribute.RecId;

        }


        if (dimensionAttributeId)

        {

            sysTableLookup = SysTableLookup::newParameters(DimensionCache::instance().dimensionAttributeBackingTable(dimensionAttributeId), _dimensionValueControl);


            sysTableLookup.addLookupfield(dimensionAttribute.ValueAttribute);

            LedgerDimensionTranslationLookupHelper::addLookupTranslation(sysTableLookup, dimensionAttributeId);

            sysTableLookup.addSelectionField(dimensionAttribute.NameAttribute);


            changeCompany(dataAreaId)

            {

                qbds = query.addDataSource(DimensionCache::instance().dimensionAttributeBackingTable(dimensionAttributeId));

                qbds.addOrderByField(DimensionCache::instance().dimensionAttributeValueField(dimensionAttributeId));

                DimensionAttribute::restrictQueryToCategorizedValues(qbds, dimensionAttributeId);

            }


            sysTableLookup.parmQuery(query);

            sysTableLookup.performFormLookup();

        }

        else if (_promptErrorMessage)

        {

            //Please choose a value for "Dimension type" first!

            checkFailed("@GLS100015");

        }

    }


Regards


Tuesday, February 27, 2024

How to get enumValue from enumID in D365 (using SQl)

 Hi,


SELECT ENUMVALUETABLE.ENUMID, ENUMVALUETABLE.ENUMVALUE, ENUMVALUETABLE.NAME 

FROM ENUMVALUETABLE

INNER JOIN ENUMIDTABLE ON ENUMIDTABLE.ID = ENUMVALUETABLE.ENUMID

where ENUMIDTABLE.NAME = 'ProjOrigin'


Regards,

Saturday, February 17, 2024