Bojensen Blogs

Mukesh Hirwani – Dynamics Ax: Creating Vendors thru X++ in AX 2012

Here are come methods for all steps of creating new vendors in Ax2012 from dirparty to logistic and electronic addresses.

1. Create party for the vendor

public void createParty(VendorRequestCreate          _vendorRequestCreate)

{

    ;

if(_vendorRequestCreate.DirPartyType        == DirPartyBaseType::Person)

    {

        dirPerson.Name                          = _vendorRequestCreate.VendorName;

        dirPerson.NameAlias                     = _vendorRequestCreate.FirstName;

        dirPerson.NameSequence                  = dirNameSequence::find(‘First Last’).RecId;

        dirPerson.insert();

        dirPersonName.FirstName                 = _vendorRequestCreate.FirstName;

        dirPersonName.MiddleName                = _vendorRequestCreate.MiddleName;

        dirPersonName.LastName                  = _vendorRequestCreate.LastName;

        dirPersonName.ValidFrom                 = DateTimeUtil::newDateTime(systemDateGet(),str2time (’00:00:00′),DateTimeUtil::getUserPreferredTimeZone());

        dirPersonName.ValidTo                   = DateTimeUtil::maxValue();

        dirPersonName.Person                    = dirPerson.RecId;

        dirPersonName.insert();

        dirParty                                = new DirParty(dirPerson);

    }

else

    {

        dirOrganisation.Name                    = _vendorRequestCreate.VendorName;

        dirOrganisation.NameAlias               = _vendorRequestCreate.FirstName;

        dirOrganisation.LanguageId              = ‘EN-US’;

        dirOrganisation.KnownAs                 = _vendorRequestCreate.VendorName;

        dirOrganisation.PhoneticName            = _vendorRequestCreate.VendorName;

        dirOrganisation.insert();

        dirParty                                = new DirParty(dirOrganisation);

    }

}

2. Create vendor and associate with vendor

public void convertToVendor(VendorRequestCreate          _vendorRequestCreate)

{

    VendorRequestCreate                  vendorRequestCreate = VendorRequestCreate::find(_vendorRequestCreate.VendorNo,true);

    ;

if(_vendorRequestCreate.DirPartyType    == DirPartyBaseType::Person)

        vendTable.Party         = dirPerson.RecId;

else

        vendTable.Party         = dirOrganisation.RecId;

ttsBegin;

    vendTable.AccountNum    = NumberSeq::newGetNum(VendParameters::numRefVendAccount()).num();

ttsCommit;

if(vendTable.AccountNum == ”)

        vendTable.AccountNum= int2str(_vendorRequestCreate.VendorNo);

    vendTable.Currency      = _vendorRequestCreate.CurrencyCode;

    vendTable.VendGroup     = _vendorRequestCreate.VendGroupId;

    vendTable.PaymTermId    = _vendorRequestCreate.PaymTermId;

    vendTable.DefaultDimension = _vendorRequestCreate.DefaultDimension;

    vendTable.OneTimeVendor = _vendorRequestCreate.OneTimeSupplier;

    vendTable.PaymMode      = _vendorRequestCreate.PaymMode;

    vendTable.BankAccount   = _vendorRequestCreate.BankAccount;

    vendTable.WI_Remarks    = _vendorRequestCreate.Remarks;

    vendTable.WI_DepartmentEmail = _vendorRequestCreate.DepartmentEmail;

    vendTable.insert();

    this.createPostalAddress(_vendorRequestCreate);

    this.createCommAddress(_vendorRequestCreate);

    this.createBankDetails(_vendorRequestCreate,vendTable.AccountNum);

    this.createContact(_vendorRequestCreate,vendTable.Party);

if(vendTable.RecId)

    {

        vendorRequestCreate.VendAccount = vendTable.AccountNum;

        vendorRequestCreate.update();

        info(strFmt(‘Vendor %1 has been successfully created’,vendTable.AccountNum));

    }

}

3. Create postal address

public void createPostalAddress(VendorRequestCreate          _vendorRequestCreate)

{

    VendorRequestAddress             vendorRequestAddress;

    DirPartyPostalAddressView           dirPartyPostalAddressView;

    ;

select Addressing, LogisticsAddressCity, LogisticsAddressCountryRegionId, LogisticsAddressStateId,

            LogisticsAddressZipCodeId from vendorRequestAddress

where vendorRequestAddress.WI_VendorRequestCreate       == _vendorRequestCreate.RecId;

// Create postal address

if(dirPerson.RecId || dirOrganisation.RecId)

    {

        dirPartyPostalAddressView.LocationName                  = ‘Primary business’;

       
dirPartyPostalAddressView.Address                       = vendorRequestAddress.Addressing;

        dirPartyPostalAddressView.City                          = vendorRequestAddress.LogisticsAddressCity;

        dirPartyPostalAddressView.ZipCode                       = vendorRequestAddress.LogisticsAddressZipCodeId;

        dirPartyPostalAddressView.State                         = vendorRequestAddress.LogisticsAddressStateId;

        dirPartyPostalAddressView.Street                        = vendorRequestAddress.Addressing;

//dirPartyPostalAddressView.Street                        = ‘Dover Street’;

//dirPartyPostalAddressView.StreetNumber                  = ‘123’;

        dirPartyPostalAddressView.CountryRegionId               = vendorRequestAddress.LogisticsAddressCountryRegionId;

        dirParty.createOrUpdatePostalAddress(dirPartyPostalAddressView);

    }

}

4. Create communication details

public void createCommAddress(VendorRequestCreate          _vendorRequestCreate)

{

    VendorRequestCommunication       vendorRequestCommunication;

    ;

select Phone1, Phone2, Email, Fax from vendorRequestCommunication

where vendorRequestCommunication.WI_VendorRequestCreate == _vendorRequestCreate.RecId;

//Phone 1

if(vendorRequestCommunication.Phone1 != ” && vendTable.Party != 0)

    {

        logisticsLocation.clear();

        logisticsLocation   = LogisticsLocation::create(‘Phone’, NoYes::No);

        dirPartyContactInfoView.LocationName                = ‘Primay Phone 1’;

        dirPartyContactInfoView.Locator                     = vendorRequestCommunication.Phone1;

        dirPartyContactInfoView.Type                        = LogisticsElectronicAddressMethodType::Phone;

        dirPartyContactInfoView.Party                       = vendTable.Party;

        dirPartyContactInfoView.IsPrimary                   = NoYes::Yes;

        dirParty.createOrUpdateContactInfo(dirPartyContactInfoView);

    }

//Phone 2

if(vendorRequestCommunication.Phone2 != ” && vendTable.Party != 0)

    {

        logisticsLocation.clear();

        logisticsLocation   = LogisticsLocation::create(‘Phone’, NoYes::No);

        dirPartyContactInfoView.LocationName                = ‘Primay Phone 2’;

        dirPartyContactInfoView.Locator                     = vendorRequestCommunication.Phone2;

        dirPartyContactInfoView.Type                        = LogisticsElectronicAddressMethodType::Phone;

        dirPartyContactInfoView.Party                       = vendTable.Party;

        dirPartyContactInfoView.IsPrimary                   = NoYes::No;

        dirParty.createOrUpdateContactInfo(dirPartyContactInfoView);

    }

//Email

if(vendorRequestCommunication.Email != ” && vendTable.Party != 0)

    {

        logisticsLocation.clear();

        logisticsLocation   = LogisticsLocation::create(‘Phone’, NoYes::No);

        dirPartyContactInfoView.LocationName                = ‘Primay Email’;

        dirPartyContactInfoView.Locator                     = vendorRequestCommunication.Email;

        dirPartyContactInfoView.Type                        = LogisticsElectronicAddressMethodType::Email;

        dirPartyContactInfoView.Party                       = vendTable.Party;

        dirPartyContactInfoView.IsPrimary                   = NoYes::Yes;

        dirParty.createOrUpdateContactInfo(dirPartyContactInfoView);

    }

//Fax

if(vendorRequestCommunication.Fax != ” && vendTable.Party != 0)

    {

        logisticsLocation.clear();

        logisticsLocation   = LogisticsLocation::create(‘Phone’, NoYes::No);

        dirPartyContactInfoView.LocationName                = ‘Primay Fax’;

        dirPartyContactInfoView.Locator                     = vendorRequestCommunication.Fax;

        dirPartyContactInfoView.Type                        = LogisticsElectronicAddressMethodType::Fax;

      
  dirPartyContactInfoView.Party                       = vendTable.Party;

        dirPartyContactInfoView.IsPrimary                   = NoYes::Yes;

        dirParty.createOrUpdateContactInfo(dirPartyContactInfoView);

    }

}

5. Create bank details for the vendor

private void createBankDetails(WI_VendorRequestCreate          _vendorRequestCreate,

                               VendAccount                     _vendAcc)

{

    VendBankAccount         vendBankAccount;

    LogisticsLocation       lLogisticsLocation;

    LogisticsPostalAddress  logisticsPostalAddress;

    ;

ttsBegin;

    lLogisticsLocation.Description      = _vendorRequestCreate.FirstName;

    lLogisticsLocation.insert();

    logisticsPostalAddress.Street       = _vendorRequestCreate.VendBankAddress;

    logisticsPostalAddress.Address      = _vendorRequestCreate.VendBankAddress;

    logisticsPostalAddress.Location     = lLogisticsLocation.RecId;

    logisticsPostalAddress.insert();

    vendBankAccount.AccountID           = subStr(_vendorRequestCreate.BankAccount,1,10);

    vendBankAccount.Name                = _vendorRequestCreate.BankAccount;

    vendBankAccount.AccountNum          = _vendorRequestCreate.BankAccountNum;

    vendBankAccount.VendAccount         = _vendAcc;

    vendBankAccount.CurrencyCode        = _vendorRequestCreate.CurrencyCode;

    vendBankAccount.BankGroupID         = BankAccountTable::find(vendBankAccount.AccountID).BankGroupId;

    vendBankAccount.Location            = lLogisticsLocation.RecId;

    vendBankAccount.WI_BeneficiaryName  = _vendorRequestCreate.BeneficiaryName;

    vendBankAccount.initFromBankGroup(BankGroup::find(vendBankAccount.BankGroupID));

    vendBankAccount.insert();

ttsCommit;

}

6. Create contact for the vendor

private void createContact(VendorRequestCreate       _vendorRequestCreate,

                           RefRecId                     _partyId)

{

    ContactPerson           contactPerson;

    DirPersonName           lDirPersonName;

    DirPerson               lDirPerson;

    DirParty                lDirParty;

    LogisticsLocation       lLogisticsLocation;

    DirPartyContactInfoView             lDirPartyContactInfoView;

    ;

//Create party for Contact

    lDirPerson.Name                          = _vendorRequestCreate.ContactPersonName;

    lDirPerson.NameAlias                     = _vendorRequestCreate.ContactPersonName;

    lDirPerson.NameSequence                  = dirNameSequence::find(‘First Last’).RecId;

    lDirPerson.insert();

    lDirPersonName.FirstName                 = _vendorRequestCreate.ContactPersonName;

//lDirPersonName.MiddleName                = _vendorRequestCreate.ContactPersonName;

//lDirPersonName.LastName                  = _vendorRequestCreate.LastName;

    lDirPersonName.ValidFrom                 = DateTimeUtil::newDateTime(systemDateGet(),str2time (’00:00:00′),DateTimeUtil::getUserPreferredTimeZone());

    lDirPersonName.ValidTo                   = DateTimeUtil::maxValue();

    lDirPersonName.Person                    = lDirPerson.RecId;

    lDirPersonName.insert();

    lDirParty                                = new DirParty(lDirPerson);

//Create contact and associate with party

    contactPerson.ContactForParty           = vendTable.Party;

    contactPerson.Party                     = lDirPerson.RecId;

    contactPerson.insert();

//Create contact number

if(_vendorRequestCreate.ContactPersonNo != ”)

    {

        lLogisticsLocation.clear();

        lLogisticsLocation                  = LogisticsLocation::create(‘Phone’, NoYes::No);

        lDirPartyContactInfoView.LocationName                = ‘Primay Phone’;

        lDirPartyContactInfoView.Locator                     = _vendorRequestCreate.ContactPersonNo;

        lDirPartyContactInfoView.Type                        = LogisticsElectronicAddressMethodType::Phone;

        lDirPartyContactInfoView.Party  &nb
sp;                    = contactPerson.Party;

        lDirPartyContactInfoView.IsPrimary                   = NoYes::Yes;

        lDirParty.createOrUpdateContactInfo(lDirPartyContactInfoView);

    }

}

Mukesh Hirwani – Dynamics Ax: Creating Vendors thru X++ in AX 2012

Comments are closed.