This code introduces how to use a helper class to create vendor master, address book and contact information with the related vendor.
private void CreateVendor ()
{
ACT_VendorMasterStaging vendorMaster;
VendTable curVendTable;
DirPartyTable curDirPartyTable;
LogisticsLocation curLogisticsLocation;
LogisticsPostalAddress curLogisticsPostalAddress;
Query q;
Queryrun qr;
QueryBuildDataSource qbds;
QueryBuildRange qbr;
DirParty dirParty;
DirPartyPostalAddressView dirPartyPostalAddressView;
DirPartyContactInfoView dirPartyContactInfo;
DirOrganization dirOrganization;
;
q = new query();
qbds = q.addDataSource(tableNum(ACT_VendorMasterStaging));
qbr = qbds.addRange(fieldNum(ACT_VendorMasterStaging, import_status));
qbr.value(enum2str(ACT_StagingImportStatus::Pending));
qr = new QueryRun(q);
while(qr.next())
{
try
{
ttsBegin;
vendorMaster = qr.get(tableNum(ACT_VendorMasterStaging));
dirOrganization.clear();
dirOrganization.initValue();
dirOrganization.Name = vendorMaster.VENDOR_NAME;
dirOrganization.insert();
if (dirOrganization)
{
curVendTable.clear();
curVendTable.initValue();
curVendTable.AccountNum = vendorMaster.VENDOR_CODE;
curVendTable.VendGroup = "External";
curvendTable.Party = dirOrganization.RecId;
if (curvendTable.validateWrite())
{
curvendTable.insert();
}
/* Creates a new instance of the DirParty class from an address book entity
that is represented by the prospect parameter. */
dirParty = DirParty::constructFromCommon(curVendTable);
dirParty.parmName(vendorMaster.VENDOR_NAME);
dirParty.parmNameAlias(vendorMaster.VENDOR_NAME);
dirPartyPostalAddressView.clear();
dirPartyPostalAddressView.LocationName = vendorMaster.VENDOR_NAME;
dirPartyPostalAddressView.City = vendorMaster.ADDRESS4;
dirPartyPostalAddressView.Street = vendorMaster.ADDRESS1 + "---" + vendorMaster.ADDRESS2 + "---" + vendorMaster.ADDRESS3;
dirPartyPostalAddressView.CountryRegionId = vendorMaster.Import_Remarks;
dirPartyPostalAddressView.ZipCode = vendorMaster.POSTAL_CODE;
dirPartyPostalAddressView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdatePostalAddress(dirPartyPostalAddressView);
// Fill Contacts
dirPartyContactInfo.clear();
if(vendorMaster.TEL1)
{
dirPartyContactInfo.LocationName = "TEL1";
dirPartyContactInfo.Locator = vendorMaster.TEL1_COUNTRY +"-" + vendorMaster.TEL1_AREA + "-" + vendorMaster.TEL1;
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Phone;
dirPartyContactInfo.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
}
// Fill Contacts
if(vendorMaster.TEL2)
{
dirPartyContactInfo.LocationName = "TEL2";
dirPartyContactInfo.Locator = vendorMaster.TEL2_COUNTRY +"-" + vendorMaster.TEL2_AREA + "-" + vendorMaster.TEL2;
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Phone;
dirPartyContactInfo.IsPrimary = NoYes::No;
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
}
// Fill Contacts
if(vendorMaster.FAX1)
{
dirPartyContactInfo.LocationName = "FAX1";
dirPartyContactInfo.Locator = vendorMaster.FAX1_COUNTRY +"-" + vendorMaster.FAX1_AREA + "-" + vendorMaster.FAX1;
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Fax;
dirPartyContactInfo.IsPrimary = NoYes::No;
// Fill Contacts
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
}
if(vendorMaster.FAX2)
{
dirPartyContactInfo.LocationName = "FAX2";
dirPartyContactInfo.Locator = vendorMaster.FAX2_COUNTRY +"-" + vendorMaster.FAX2_AREA + "-" + vendorMaster.FAX2;
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Fax;
dirPartyContactInfo.IsPrimary = NoYes::No;
// Fill Contacts
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
}
if(vendorMaster.Email1)
{
dirPartyContactInfo.LocationName = "Email1";
dirPartyContactInfo.Locator = vendorMaster.Email1;
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Email;
dirPartyContactInfo.IsPrimary = NoYes::No;
// Fill Contacts
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
}
if(vendorMaster.Email2)
{
dirPartyContactInfo.LocationName = "Email2";
dirPartyContactInfo.Locator = vendorMaster.Email2;
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Email;
dirPartyContactInfo.IsPrimary = NoYes::No;
// Fill Contacts
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
}
if(vendorMaster.CONTACT)
{
dirPartyContactInfo.LocationName = "Contact Person";
dirPartyContactInfo.Locator = vendorMaster.CONTACT_TITLE + "//" + vendorMaster.CONTACT;
dirPartyContactInfo.Type = LogisticsElectronicAddressMethodType::Telex;
dirPartyContactInfo.IsPrimary = NoYes::No;
// Fill Contacts
dirParty.createOrUpdateContactInfo(dirPartyContactInfo);
}
vendorMaster.Import_Status = ACT_StagingImportStatus::Pending;
vendorMaster.selectForUpdate(true);
vendorMaster.update();
}
// Marks the end of transaction.
ttsCommit;
}
catch(Exception::Error)
{
ttsBegin;
vendorMaster.Import_Status = ACT_StagingImportStatus::Error;
vendorMaster.selectForUpdate(true);
vendorMaster.update();
ttsCommit;
ttsAbort;
}
}
info("Done");
}