Showing posts with label Integration. Show all posts
Showing posts with label Integration. Show all posts

Thursday, April 9, 2020

Duplicate address record entry through Data entity in Dynamics 365 Finance and Operations

Introduction:
In this blog, we will see how to allow system for accepting duplicate addresses of customer, vendor or any other, through doing bit change in Data Entity 

Solution:
For allowing duplicate entries we will create one field in LogisticsPostalAddress. Here field name is as IsCreateFromEntity. Field-IsCreateFromEntity will be used as flag, type of boolean / NoYesId (EDT).

[ExtensionOf(tableStr(LogisticsPostalAddressBaseEntity))]
final class LogisticsPostalAddressBaseEntityCFSJSTable_Extension
{
    public static LogisticsLocationId resolveRemittanceAddressLocationId(LogisticsPostalAddressBaseEntity _postalAddressEntity, DirPartyNumber _partyNumber)
    {
        LogisticsLocationId locationId, locationIdCreateNew;

        locationId = next resolveRemittanceAddressLocationId(_postalAddressEntity, _partyNumber);

        if(_postalAddressEntity.IsCreateFromEntity)
        {
            locationId = locationIdCreateNew;
        }

        return locationId;
    }
}

Aforementioned code would replace the standard locationId variable with new locationIdCreateNew which will be null always. Once new variable locationIdCreateNew is replaced with standard code,  system will generate the new locationId in the LogisticsLocation(Table) and create the same duplicate address along with state, city, country, zipcode and all other respective fields.

Moreover, we will just need to pass YES value to the newly created field ISCreateFromEntity while creating the new address and run the execution. How easy it is!!!

Thanks for reading !!!

Rest API GET call in JSON format in Dynamics 365 Finance and Operations

Introduction:
In this blog, we will see how to get response from Rest Api through GET call


Solution: 
Consisting of basic authentication, we will pass username and password in byteStr and for the endpoint we will put it in url in below code.
class CFSJSTestRestAPI
{
    public static void main(Args _args)
    {
        int                                find;
        str                                url,aosUri,activeDirectoryTenant;
        str                                activeDirectoryClientAppId;
        str                                activeDirectoryClientAppSecret;
        str                                postData,activeDirectoryResource;
        str                                aadClientAppSecret,oAuthHeader;
        str                                returnValue,jsonString,jsondszstr;
        System.Net.HttpWebRequest          request;
        System.Net.HttpWebResponse         response;
        System.Byte[]                      byteArray;
        System.IO.Stream                   dataStream;
        System.IO.StreamReader             streamRead;
        System.IO.StreamWriter             streamWrite;
        System.Net.ServicePoint            servicePoint;
        System.Net.ServicePointManager     servicePointmgr;
        System.Net.HttpVersion             version;
        CLRObject                          clrObj;
        Newtonsoft.Json.JsonReader         reader;
        System.Text.Encoding               utf8;
        Counter                            countCounter;
        Object                             obj;
        Map                                data;
        System.Byte[]                      byteArraynew;
        System.Net.WebHeaderCollection     headers = new System.Net.WebHeaderCollection();
     
        new InteropPermission(InteropKind::ClrInterop).assert();
  
        str  byteStr = strfmt('%1:%2', "USERNAME", "PASSWORD");
        
        headers  = new System.Net.WebHeaderCollection();
        url      = "http://dummy.restapiexample.com/api/v1/employees";
        clrObj   = System.Net.WebRequest::Create(url);
        request  = clrObj;
        request.set_Method("GET");
        request.set_KeepAlive(true);
        request.set_ContentType("application/json");
        utf8            = System.Text.Encoding::get_UTF8();
        byteArraynew    = utf8.GetBytes(byteStr);
        byteStr         = System.Convert::ToBase64String(byteArraynew);

        headers.Add("Authorization", 'Basic ' + byteStr);
        request.set_Headers(headers);

        servicePoint = request.get_ServicePoint();

        System.Net.ServicePointManager::set_Expect100Continue(false);
        System.Net.ServicePointManager::set_SecurityProtocol(System.Net.SecurityProtocolType::Tls12);

        response    = request.GetResponse();
        dataStream  = response.GetResponseStream();
        streamRead  = new System.IO.StreamReader(dataStream);
        jsonString  = streamRead.ReadToEnd();

        info(strFmt("RESPONSE: %1",jsonString));

        dataStream.Close();
        response.Close();
    }
}

Thanks for reading !!!