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); } }