Tuesday, April 21, 2015

Update Vendor Contact Information - In Ax 2012

Hello Guys ..!

Here i'm sharing code to update vendor contact details (phone, fax, email) in  ax 2012.

Note :
-> create temp table (VendorImportTmp ) with VendorId,phone,fax,email fields
-> Use CSV file

static void Vendor_Contactsupdate(Args _args)
{
    CommaIO                             csvFile;
    container                           readCon;
    counter                             icount,inserted;
    container                           line;
    Dialog                              dialog;
    DialogField                         dfFileName;
    FileName                            fileName;
    VendAccount                         vendNum;
    DirOrganization                     dirOrganization;
    LogisticsLocation                   logisticsLocation;
    LogisticsPostalAddress              logisticsPostalAddress;
    LogisticsElectronicAddress          logisticsElectronicAddressPhone, logisticsElectronicAddressfax, LogisticsElectronicAddressEmail;
    VendTable                           vendTable;
    VendorImportTmp                     vendorImportTmp;
    DirPartyTable                       dirPartyTable, dirPartyTableLocal;
 

    inserted=0;
    #File
    dialog = new Dialog("Select File to Import");
    dfFileName = dialog.addField(extendedTypeStr(FileNameOpen));
    dialog.filenameLookupFilter(["All files", #AllFiles]);
    vendNum ="";
    if (dialog.run())
    {
    filename =  dfFileName.value();
    }
    csvFile = new CommaIO(filename, 'r');
       if (csvFile)
        {
            ttsBegin;
            while (csvFile.status() == IO_Status::OK)
            {
                readCon = csvFile.read();
                    if (readCon)
                    {
                            vendorImportTmp.clear();
                            vendorImportTmp.RecId =0;
                            vendorImportTmp.AccountNum            = conPeek(readCon,1);
                            vendorImportTmp.LocaterPhone           = conPeek(readCon,2);
                            vendorImportTmp.LocaterFax             = conPeek(readCon,3);
                            vendorImportTmp.LocaterEmail          = conPeek(readCon,4);
                            vendorImportTmp.ContactDescription = conPeek(readCon,5);
                            dirPartyTable = DirPartyTable::findRec(VendTable::find(vendorImportTmp.AccountNum).Party);
                            dirOrganization = dirPartyTable;
                                vendorImportTmp.Name = VendTable::find(vendorImportTmp.AccountNum).name();
                                            logisticsLocation = LogisticsLocation::create(vendorImportTmp.Name, NoYes::Yes);
                                        //Party location
                                        DirParty::addLocation(dirOrganization.RecId, logisticsLocation.RecId, true, true, false, [LogisticsLocationRole::findBytype(LogisticsLocationRoleType::Business).RecId]);

                                        //Location
                                        logisticsLocation = LogisticsLocation::create('Electronic address', NoYes::Yes);

                                        //Party location
                                        DirParty::addLocation(dirOrganization.RecId, logisticsLocation.RecId, false, true, false);

                                        if(vendorImportTmp.LocaterPhone)
                                        {
                                            logisticsElectronicAddressPhone.clear();
                                            logisticsElectronicAddressPhone.initValue();
                                            logisticsElectronicAddressPhone.Location = logisticsLocation.RecId;
                                            logisticsElectronicAddressPhone.Type = LogisticsElectronicAddressMethodType::Phone;
                                            logisticsElectronicAddressPhone.Locator = vendorImportTmp.LocaterPhone;
                                            if(vendorImportTmp.ContactDescription == "")
                                            {
                                                vendorImportTmp.ContactDescription = "Phone";
                                            }
                                            logisticsElectronicAddressPhone.Description = vendorImportTmp.ContactDescription;
                                            logisticsElectronicAddressPhone.IsPrimary = NoYes::Yes;

                                            if (logisticsElectronicAddressPhone.validateWrite())
                                            {
                                                logisticsElectronicAddressPhone.insert();
                                            }
                                        if(vendorImportTmp.LocaterFax)
                                        {
                                            logisticsElectronicAddressfax.clear();
                                            logisticsElectronicAddressfax.initValue();
                                            logisticsElectronicAddressfax.Location = logisticsLocation.RecId;
                                            logisticsElectronicAddressfax.Type = LogisticsElectronicAddressMethodType::Fax;
                                            logisticsElectronicAddressfax.Locator = vendorImportTmp.LocaterFax;
                                             if(vendorImportTmp.ContactDescription == "")
                                            {
                                                vendorImportTmp.ContactDescription = "fax";
                                            }
                                            logisticsElectronicAddressfax.Description = vendorImportTmp.ContactDescription;
                                            logisticsElectronicAddressfax.IsPrimary = NoYes::Yes;
                                            if (logisticsElectronicAddressfax.validateWrite())
                                            {
                                                logisticsElectronicAddressfax.insert();
                                            }
                                        }
                                        if(vendorImportTmp.LocaterEmail)
                                        {
                                            LogisticsElectronicAddressEmail.clear();
                                            LogisticsElectronicAddressEmail.initValue();
                                            LogisticsElectronicAddressEmail.Location = logisticsLocation.RecId;
                                            LogisticsElectronicAddressEmail.Type = LogisticsElectronicAddressMethodType::Email;
                                            LogisticsElectronicAddressEmail.Locator = vendorImportTmp.LocaterEmail;
                                            LogisticsElectronicAddressEmail.Description = vendorImportTmp.ContactDescription;
                                            if (LogisticsElectronicAddressEmail.validateWrite())
                                            {
                                               LogisticsElectronicAddressEmail.insert();
                                            }
                                        select forUpdate dirPartyTableLocal where dirPartyTableLocal.RecId == dirPartyTable.RecId;
                                        if(dirPartyTableLocal)
                                        {
                                            dirPartyTableLocal.PrimaryContactPhone = logisticsElectronicAddressPhone.RecId;
                                            dirPartyTableLocal.PrimaryContactFax = logisticsElectronicAddressfax.RecId;
                                            dirPartyTableLocal.PrimaryContactEmail = LogisticsElectronicAddressEmail.RecId;
                                            dirPartyTableLocal.update();
                                        }
                                         
                                            inserted++;
                                        }
                        }

                    }
            }

    }
    info(strFmt("%1 Records inserted Succesfully",inserted));
    ttsCommit;
}


@Rahul Talasila

No comments:

Post a Comment

Why do users often get confused about Dynamics 365 Customer Engagement (D365 CE), Dataverse, and the Power Platform?

  The Microsoft ecosystem for business applications can sometimes be difficult to navigate, especially when discussing Dynamics 365 Customer...