Tag: Vendor

Creating Vendors thru X++ in AX 2012

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                       = contactPerson.Party;

lDirPartyContactInfoView.IsPrimary                   = NoYes::Yes;

lDirParty.createOrUpdateContactInfo(lDirPartyContactInfoView);

}

}