In one of my projects, there was a requirement for bulk renaming the released products and the product master. Luckily, the numbers for both released and master were kept the same for me to filter on the PKs conveniently. Used the code below to achieve that.
static void
RenameInvenTableProdsPK(Args _args)
{
InventTable inventTable;
str
oldDisplayNumber,newDisplayNumber;
int
iCount;
CommaIo file;
;
file = new
CommaIo(@"\\XXXXX\file.csv","W");
While
select ItemId from InventTable where
inventTable.ItemId like 'B4*'
{
try
{
oldDisplayNumber =
inventTable.ItemId;
newdisplayNumber = "O_"+inventTable.ItemId;
inventTable.ItemId =
newdisplayNumber;
inventTable.renamePrimaryKey(); //old method of product renaming
//using
the service to rename product master
EcoResProductNumberRenameService::newFromProduct(
EcoResProduct::findByProductNumber(oldDisplayNumber).RecId,
oldDisplayNumber,
newdisplayNumber,NoYes::Yes).rename(); //one
of the attributes allows us to include product variants in the renaming process
iCount++;
}
catch{
file.write(oldDisplayNumber);
continue;
}
}
info(strFmt("Done - %1",iCount));
}