About this question
I had the following exception thrown at me when trying to process more than one selected record via a custom button in the list view.
Class Code
global class MerchandiseInventoryClass {
webservice static void ConverttoInventory(String[] merchandise_id)
{
//Convert Merchandise collection into Inventory Collection...
Merchandise__c[] merchandise_collection = [SELECT ID,Author__c,Book_Title__c,Edition__c,Publisher__c,Total_Merchandise_QtyTotal_Qty__c,Status__c FROM Merchandise__c WHERE ID = :merchandise_id];
Inventory__c i = new Inventory__c(); //Line 1
ListnewInventory = new List for(Merchandise__c m : merchandise_collection )();
{
if(m.Status__c !='Fully Converted')
{
i.Author__c = m.Author__c ;
i.Book_Title__c = m.Book_Title__c;
i.Edition__c = m.Edition__c;
i.Publisher__c = m.Publisher__c;
i.Qty_Available__c = m.Total_Merchandise_QtyTotal_Qty__c;
i.Merchandise__c = m.Id;
m.Uninventoried_Qty__c = 0;
m.Status__c = 'Fully Converted';
newInventory.add(i);
}
}
insert newInventory;
update merchandise_collection;
}
}
By moving the Line 1 to within the for loop solved the issue for me. Thanks to this post (refer the Best Answer in that post)
https://developer.salesforce.com/forums/ForumsMain?id=906F00000008vFjIAIWhat puzzles me is WHY I have to instantiate "i" for every iteration within the loop.
Why is the list collection ("newInventory") complaining that there are duplicate elements and why should it even be confused in the first place when I am performing an "insert" event ?