Having all the relations of GAB structure changed, it became mandatory to write a script to import vendor data into Ax 2012. I will create a DirParty record and then associate it to vendor fields. The addresses can be attached to the vendor's PartyRecId. The use of views to record all the address fields help to initialize the linked tables.
static void importVendor(Args _args)
{
CommaIO csvFile;
container readCon;
counter icount,inserted;
Dialog dialog;
DialogField dfFileName;
DirPartyRecId partyRecId,contactPartyRecid;
Name name,contactName;
VendTable vendtable;
FileName fileName;
str contactperson;
DirPartyPostalAddressView addressView;
DirPartyContactInfoView contactView;
ContactPerson contactpersonTable;
LogisticsElectronicAddressMethodType enumType;
DirParty dirParty;
LogisticsPostalAddress address;
LogisticsElectronicAddress logisticsElectronicAddress;
BinData binData;
str stringImage;
inserted =0;
#File
dialog = new Dialog("Pick the file");
dfFileName = dialog.addField(extendedTypeStr(FileNameOpen));
dialog.filenameLookupFilter(["All files", #AllFiles]);
if (dialog.run())
{
filename = dfFileName.value();
}
csvFile = new CommaIO(filename, 'r');
if (csvFile)
{
readCon = csvFile.read();
ttsbegin;
while (csvFile.status() == IO_Status::OK)
{
readCon = csvFile.read();
icount++;
if (readCon)
{
name = conPeek(readCon,2);
partyRecId = DirPartyTable::createNew( DirPartyType::Organization, name).RecId;
vendtable.clear();
vendtable.initValue();
vendtable.Party = partyRecId;
vendtable.AccountNum = conPeek(readCon,1);
vendtable.VendGroup = conPeek(readCon,5);
vendtable.Currency = conPeek(readCon,6);
//vendtable.Blocked =
vendtable.DlvMode = conPeek(readCon,8);
vendtable.PaymMode = conPeek(readCon,9);
ContactPerson = conPeek(readCon,12);
if(contactperson != '')
{
contactname = conPeek(readCon,12);
ContactPerson::findOrCreateNameParty(partyRecId,contactname);
}
vendtable.insert();
address.CountryRegionId = strLRTrim(conPeek(readCon,14));
//addressView.State = strLRTrim(conPeek(readCon,16));
address.ZipCode = strLRTrim(conPeek(readCon,15));
address.Street = strLRTrim(conPeek(readCon,19));
// address.county = strLRTrim(conPeek(readCon,17));
address.City = strLRTrim(conPeek(readCon,18));
addressView.LocationName = name;
addressView.IsPrimary = NoYes::Yes;
addressView.Party = partyRecId;
addressview.initFromPostalAddress(address);
DirParty = DirParty::constructFromPartyRecId(addressView.Party );
DirParty.createOrUpdatePostalAddress(addressView);
contactView.LocationName = "Delivery email";
contactView.Locator = strLRTrim(conPeek(readCon,10));
contactView.Type = LogisticsElectronicAddressMethodType::Email;
contactView.Party = partyRecId;
contactView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(contactView);
contactView.LocationName = "Delivery Cellular Phone";
contactView.Locator = strLRTrim(conPeek(readCon,11));
contactView.Type = LogisticsElectronicAddressMethodType::Phone;
contactView.Party = partyRecId;
contactView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(contactView);
contactView.LocationName = "Delivery Phone";
contactView.Locator = strLRTrim(conPeek(readCon,3));
contactView.Type = LogisticsElectronicAddressMethodType::Phone;
contactView.Party = partyRecId;
contactView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(contactView);
contactView.LocationName = "Delivery Fax";
contactView.Locator = strLRTrim(conPeek(readCon,4));
contactView.Type = LogisticsElectronicAddressMethodType::Fax;
contactView.Party = partyRecId;
contactView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(contactView);
inserted++;
}
}
ttsCommit;
}
info(strfmt("%1 records inserted out of %2",inserted,icount));
}
static void importVendor(Args _args)
{
CommaIO csvFile;
container readCon;
counter icount,inserted;
Dialog dialog;
DialogField dfFileName;
DirPartyRecId partyRecId,contactPartyRecid;
Name name,contactName;
VendTable vendtable;
FileName fileName;
str contactperson;
DirPartyPostalAddressView addressView;
DirPartyContactInfoView contactView;
ContactPerson contactpersonTable;
LogisticsElectronicAddressMethodType enumType;
DirParty dirParty;
LogisticsPostalAddress address;
LogisticsElectronicAddress logisticsElectronicAddress;
BinData binData;
str stringImage;
inserted =0;
#File
dialog = new Dialog("Pick the file");
dfFileName = dialog.addField(extendedTypeStr(FileNameOpen));
dialog.filenameLookupFilter(["All files", #AllFiles]);
if (dialog.run())
{
filename = dfFileName.value();
}
csvFile = new CommaIO(filename, 'r');
if (csvFile)
{
readCon = csvFile.read();
ttsbegin;
while (csvFile.status() == IO_Status::OK)
{
readCon = csvFile.read();
icount++;
if (readCon)
{
name = conPeek(readCon,2);
partyRecId = DirPartyTable::createNew( DirPartyType::Organization, name).RecId;
vendtable.clear();
vendtable.initValue();
vendtable.Party = partyRecId;
vendtable.AccountNum = conPeek(readCon,1);
vendtable.VendGroup = conPeek(readCon,5);
vendtable.Currency = conPeek(readCon,6);
//vendtable.Blocked =
vendtable.DlvMode = conPeek(readCon,8);
vendtable.PaymMode = conPeek(readCon,9);
ContactPerson = conPeek(readCon,12);
if(contactperson != '')
{
contactname = conPeek(readCon,12);
ContactPerson::findOrCreateNameParty(partyRecId,contactname);
}
vendtable.insert();
address.CountryRegionId = strLRTrim(conPeek(readCon,14));
//addressView.State = strLRTrim(conPeek(readCon,16));
address.ZipCode = strLRTrim(conPeek(readCon,15));
address.Street = strLRTrim(conPeek(readCon,19));
// address.county = strLRTrim(conPeek(readCon,17));
address.City = strLRTrim(conPeek(readCon,18));
addressView.LocationName = name;
addressView.IsPrimary = NoYes::Yes;
addressView.Party = partyRecId;
addressview.initFromPostalAddress(address);
DirParty = DirParty::constructFromPartyRecId(addressView.Party );
DirParty.createOrUpdatePostalAddress(addressView);
contactView.LocationName = "Delivery email";
contactView.Locator = strLRTrim(conPeek(readCon,10));
contactView.Type = LogisticsElectronicAddressMethodType::Email;
contactView.Party = partyRecId;
contactView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(contactView);
contactView.LocationName = "Delivery Cellular Phone";
contactView.Locator = strLRTrim(conPeek(readCon,11));
contactView.Type = LogisticsElectronicAddressMethodType::Phone;
contactView.Party = partyRecId;
contactView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(contactView);
contactView.LocationName = "Delivery Phone";
contactView.Locator = strLRTrim(conPeek(readCon,3));
contactView.Type = LogisticsElectronicAddressMethodType::Phone;
contactView.Party = partyRecId;
contactView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(contactView);
contactView.LocationName = "Delivery Fax";
contactView.Locator = strLRTrim(conPeek(readCon,4));
contactView.Type = LogisticsElectronicAddressMethodType::Fax;
contactView.Party = partyRecId;
contactView.IsPrimary = NoYes::Yes;
dirParty.createOrUpdateContactInfo(contactView);
inserted++;
}
}
ttsCommit;
}
info(strfmt("%1 records inserted out of %2",inserted,icount));
}