You need to sign in to do that
Don't have an account?
mnz123
ERROR: Error:
Insert failed. First exception on row 2; first error: INACTIVE_OWNER_OR_USER, owner or user is inactive.: []
How would I get to clone only active users?
public without sharing class vf_OpptyClone extends vc_ControllerBase { public Opportunity oppor{get;set;} {oppor=new Opportunity();} public List<String> filters{get;set;} public static boolean isOpptyClone = false; public Boolean flag{get;set;} public String pgeMsg{get;set;} public Boolean display{get;set;} public Boolean selected{get;set;} public Boolean interim{get;set;} private static Savepoint sp; private static Savepoint spoppty; public list<ChildRecordSelection> childRecords{get;set;} private Set<String> selectedRecords; public Map<String,String> records; private static list<OpportunityTeamMember> opporTeam= new list<OpportunityTeamMember>(); Map<String,String> oppTeam = new Map<String,String>();//added mnz private set<string> users = new set<string>(); private Boolean rolledBack; public vf_OpptyClone(ApexPages.StandardController controller) { oppor = (Opportunity)controller.getRecord(); oppor.RecordTypeId=System.Label.myversion13SLS16; oppor.OpportunitySource__c=System.Label.myversion13SLS04; system.debug('opportunity'+oppor); filters = new List<String>(); display=true; interim=false; if(oppor.OpptyType__c!=null) { filters.add(oppor.OpptyType__c); } } //Establish component controller communication // public VCC05_DisplaySearchFields searchController // { // set; // get // { // if(getcomponentControllerMap()!=null) // { // VCC05_DisplaySearchFields displaySearchFields; // displaySearchFields = (VCC05_DisplaySearchFields)getcomponentControllerMap().get('searchComponent'); // system.debug('--------displaySearchFields-------'+displaySearchFields ); // if(displaySearchFields!= null) // return displaySearchFields; // } // return new VCC05_DisplaySearchFields(); // } // } //checks if the logged in user has access to clone the record public pageReference cloneOpportunity() { flag = true; // Boolean to flag if the current user can create an opportunity System.debug('>>>>>cloneOpportunity got called'); // Retrieve the Describe sObject Result for Opportunity Schema.DescribeSObjectResult opportunitySobject = Opportunity.SObjectType.getDescribe(); // If the current user cannot create opportunities if(!opportunitySobject.isCreateable()) { flag = false; ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Error,label.CL00563)); //End Of Update } else{ ApexPages.addMessage(new ApexPages.message(ApexPages.severity.info,'Only Active users, if any, will be cloned .')); } //Map<String, Schema.SObjectField> M = Schema.SObjectType.Opportunity.fields.getMap(); // Map<String, Schema.SObjectField> M = Schema.SObjectType.Opportunity.fields.getMap(); if(flag) { sp = Database.setSavepoint(); //created a savepoint for roll back if(oppor.CloseDate<system.today()) oppor.CloseDate = system.today(); Database.saveResult sv = Database.update(oppor,false); //updating the existing opportunity Database.rollback(sp); //rolling back in case of any exception if(!sv.issuccess()) { ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Error,sv.getErrors()[0].getMessage())); flag= false; } } System.debug('cloneOpportunity Method Ends'); return null; } //queries the share Object for Opprtunity Team members public list<OpportunityTeamMember> oppShare() { system.debug('oppShare Method Begins'); String opportunityTeamQuery = CS005_Queries__c.getValues('CS005_12').StaticQuery__c+' '+ 'where (OpportunityAccessLevel =\''+ label.CL00203 +'\' or UserId =\''+oppor.ownerID+'\')and opportunityID=\''+oppor.id+'\''+ 'and User.IsActive=true'; //Querying OpportunityTeam fields. System.debug('mylogs_team query string>>>'+opportunityTeamQuery); list<OpportunityTeamMember> oppteam = Database.Query(opportunityTeamQuery); System.debug('mylogs_team list>>>'+oppteam); if(oppteam!=null && !oppteam.isEmpty()) return oppteam; else return new list<OpportunityTeamMember>(); } //checks if the user has selected an appropriate stage and type. Public pagereference proceedChildSelection() { system.debug('proceedChildSelection Method Begins'); // if((searchController.level1.equalsIgnoreCase(Label.CL00355))||(searchController.level2.equalsIgnoreCase(Label.CL00355))) // { // ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Error,Label.CL00650)); // } // else // { display=false; getchildRecords(); // } System.debug('proceedChildSelection Method Ends'); return null; } //selection of child records to clone public pageReference proceedClone() { system.debug('proceedClone Method Begins'); interim=true; ApexPages.addMessage(new ApexPages.message(ApexPages.severity.info,Label.CL00648)); selectedRecords = new Set<String>(); if(!childRecords.isEmpty() && childRecords!=null) { for(ChildRecordSelection childSelected:childRecords) { if(childSelected.selected==true) { selectedRecords.add(childSelected.records); } } } System.debug('mylogs_child selected'+selectedRecords); System.debug('proceedClone Method Ends'); return null; } //cloning the opportunity record with selected child records. public pageReference continueClone() { spoppty = Database.setSavepoint(); rolledBack=false; system.debug('continueClone Method Begins'); String query1 = Utils_Methods.generateSelectAllQuery(oppor); String query2 = ' '+'where id =\''+oppor.id+'\''; String query = query1 + query2; system.debug('mylogs_continue has query>>>'+query); List<opportunity> currentRecords = Database.Query(query); system.debug('mylogs_continue has currentRecords>>>'+currentRecords); Opportunity clonedOpportunity = new Opportunity(); list<Id> insertRecordId = new List<Id>(); if(currentRecords!=null && !currentRecords.isEmpty()) { //JFA: test modif ".clone" clonedOpportunity = currentRecords[0].clone(); //clonedOpportunity = currentRecords[0]; // End modif clonedOpportunity.OpptyType__c=oppor.OpptyType__c; clonedOpportunity.StageName=oppor.StageName; clonedOpportunity.OpportunitySource__c=oppor.OpportunitySource__c; clonedOpportunity.TECH_TriggerVR__c = false; clonedOpportunity.OpportunityScope__c= NULL; clonedOpportunity.ActualQualification__c=NULL; clonedOpportunity.ActualQuoteInvestDecision__c=NULL; clonedOpportunity.ActualQuoteSubmitDecision__c=NULL; clonedOpportunity.PlannedQualification__c=NULL; clonedOpportunity.PlannedQuoteInvestDecision__c=NULL; clonedOpportunity.PlannedQuoteSubmitDecision__c=NULL; clonedOpportunity.QuoteIssuanceDateToCustomer__c=NULL; clonedOpportunity.QuoteSubmissionDate__c=NULL; clonedOpportunity.Status__c = NULL; clonedOpportunity.Reason__c = NULL; //clonedOpportunity.BusinessMix__c=NULL; clonedOpportunity.CloseDate = system.today(); clonedOpportunity.TECH_CreatedFromLead__c = False; system.debug('#### NewOpp Old OwnnerID '+clonedOpportunity.OwnerId); clonedOpportunity.OwnerId = UserInfo.getUserId(); system.debug('#### NewOpp New OwnnerID '+clonedOpportunity.OwnerId); clonedOpportunity.OpportunityDetector__c = UserInfo.getUserId(); clonedOpportunity.TECH_CrossProcessConversionAmount__c= null; clonedOpportunity.Amount=0; clonedOpportunity.ProjectCategoryP0__c = NULL; clonedOpportunity.ProjectCategoryS0__c = NULL; clonedOpportunity.ProjectCategoryS1__c = NULL; //modif JFA proba clonedOpportunity.probability = null; //end of modif if(((currentRecords[0].name).length()+label.CL00651.length())<120) clonedOpportunity.name=currentRecords[0].name+label.CL00651; else { clonedOpportunity.name=currentRecords[0].name.substring(0,((currentRecords[0].name).length()-(((currentRecords[0].name).length()+label.CL00651.length())-120)))+label.CL00651; } if(oppor.OpptyType__c!=clonedOpportunity.OpptyType__c) clonedOpportunity.OpportunityScope__c=null; //Blank out the Opportunity Scope if the user selected Opportunity type(during cloning) is not same as the Master Opportunity Type //End of Modification clonedOpportunity.TECH_SendEmailOnLeadConv__c=false; } if(clonedOpportunity!=null) { System.debug('#### Inserting new Opp'); isOpptyClone = true; Database.saveResult sv = Database.insert(clonedOpportunity,false); //inserting the cloned opportunity System.debug('#### New Opp inserted: '+clonedOpportunity.id); if(!sv.issuccess()) { System.debug('#### Error'); rolledBack=true; pgeMsg = sv.getErrors()[0].getMessage(); System.debug('### Error:'+ pgeMsg); pgeMsg += 'Case 1'; } } if(!rolledBack) { System.debug('#### Continue - next is SalesContributor'); System.debug('#### Selected records: '+selectedRecords); // SalesContributor was not checked by the user, so adding the current user to Sales Contributor with 100% contribution System.debug('#### Selected records: '+selectedRecords); if(!rolledBack && selectedRecords!=null && !selectedRecords.isEmpty() && selectedRecords.contains(sObjectType.OPP_SalesContributor__c.label)) { System.debug('#### SalesContributor was checked by the user, so adding the Sales Contributors list as on the original opportunity'); String querySales1 = Utils_Methods.generateSelectAllQuery(new OPP_SalesContributor__c()); String querySales2 = ' '+'where Opportunity__c =\''+oppor.id+'\''; String querySales = querySales1 + querySales2; System.debug('#### SalesContributor query: '+querySales); List<OPP_SalesContributor__c> currentContributors = Database.Query(querySales); list<OPP_SalesContributor__c> salescontributors = new list<OPP_SalesContributor__c>(); for(OPP_SalesContributor__c contributors : currentContributors) { OPP_SalesContributor__c contribut = new OPP_SalesContributor__c(); contribut = contributors.clone(false); contribut.Opportunity__c = clonedOpportunity.id; contribut.TECH_IsCloned__c=true; salescontributors.add(contribut); } if(salescontributors!=null && !salescontributors.isEmpty()) { //inserting records in OpportunityShare try { Utils_Methods.insertRecords(salescontributors); selectedRecords.remove(sObjectType.OPP_SalesContributor__c.label); } catch(Exception e) { rolledBack= true; pgeMsg=e.getMessage(); } } } System.debug('#### Selected records: '+selectedRecords); if(!rolledBack && selectedRecords!=null && !selectedRecords.isEmpty()) { //getting the child relationships List<Schema.ChildRelationship> allchildRecords = oppor.getSobjectType().getDescribe().getChildRelationships(); List<Schema.ChildRelationship> childRecordsToClone = new List<Schema.ChildRelationship>(); list<OpportunityShare> clonedOpportunityShare = new list<OpportunityShare>(); Map<string,Schema.ChildRelationship> relations = new Map<string,Schema.ChildRelationship>(); if(!allchildRecords.isEmpty() && allchildRecords!=null) { for(Schema.ChildRelationship child : allchildRecords) { relations.put(String.ValueOf(child.getChildSObject()),child); } System.debug('#### relations: '+relations); Boolean oppLineSel = false; Boolean vcpSel = false; for(string selected:selectedRecords) { if(!((selected == sObjectType.OPP_ProductLine__c.label) || (selected == sObjectType.OPP_ValueChainPlayers__c.label))) { childRecordsToClone.add(relations.get(records.get(selected))); } if(selected == sObjectType.OPP_ProductLine__c.label) oppLineSel = true; if(selected == sObjectType.OPP_ValueChainPlayers__c.label) vcpSel = true; } if(vcpSel == true) { system.debug('Cloning of Value chain player begins'); OPP_ValueChainPlayers__c vcp=new OPP_ValueChainPlayers__c(); List<OPP_ValueChainPlayers__c> newParentVCPlist = new List<OPP_ValueChainPlayers__c>(); String vcpQuery1 = Utils_Methods.generateSelectAllQuery(vcp); String vcpquery2 = ' '+'where OpportunityName__c =\''+oppor.id+'\' AND ParentValueChainPlayer__c = '+NULL+' AND Tobedeleted__c = '+FALSE; String vcpquery = vcpQuery1 + vcpquery2; System.debug('VCPLinequery>>>>'+vcpquery); List<OPP_ValueChainPlayers__c> existingVCPs = Database.Query(vcpquery); for(OPP_ValueChainPlayers__c oldVCP: existingVCPs) { vcp = oldVCP.clone(false, true); vcp.OpportunityName__c = clonedOpportunity.Id; newParentVCPlist.add(vcp); } try{ Database.insert(newParentVCPlist,true); } Catch(Exception e){ rolledBack= true; pgeMsg=e.getMessage(); } } System.debug('#### childRecordsToClone: '+childRecordsToClone); if(oppLineSel ==true) { system.debug('Cloning of Product Line Begins'); Map<Id, Id> oldNewProdLines = new Map<Id, Id>(); List<OPP_ProductLine__c> oldParentLines = new List<OPP_ProductLine__c>(); List<OPP_ProductLine__c> newParentLines = new List<OPP_ProductLine__c>(); Map<Id, Id> childParentLne = new Map<Id, Id>(); OPP_ProductLine__c pl=new OPP_ProductLine__c(); String productLineQuery1 = Utils_Methods.generateSelectAllQuery(pl); String productLinequery2 = ' '+'where Opportunity__c =\''+oppor.id+'\''+' AND LineStatus__c!=\'To be deleted\' AND LineType__c=\'Parent Line\''; String productLinequery = productLineQuery1 + productLinequery2; System.debug('productLinequery>>>>'+productLinequery); List<OPP_ProductLine__c> oldProdLines = Database.Query(productLinequery); /* List<OPP_ProductLine__c> oldProdLines = [select Id, IsDeleted, Name, CurrencyIsoCode, RecordTypeId, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById, SystemModstamp, MayEdit, IsLocked, Opportunity__c, Amount__c, DeliveryDate__c, Designation__c, Product__c, Quantity__c, TECH_AmountInNumber__c, Type__c, UnitForQuantity__c, BusbarArrangement__c, BusbarCurrent__c, ControlMonitoring__c, HighestVoltageLevel__c, PLContact__c, ShortRatedCurrent__c, SupplyingPlant__c, TotalMVA__c, UnitaryPowerEachTransformerMVA__c, VoltageLevel__c, CheckedbyGMR__c, CommercialReference__c, Family__c, ProductBU__c, ProductDescription__c, ProductFamily__c, ProductLine__c, TECH_CommercialReference__c, Specified__c, IsASynergy__c, SolutionCenter__c, Commission__c, ConcatenatedID__c, ConfigurationID__c, CrossSellingLineAmount__c, CrossSellingLineWeighted__c, ITBRevenueLineIdOld__c, ITBRevenueLineNoOld__c, IncludedinForecast__c, IncludeinQuote__c, IsACrossSellingOpptyLine__c, IsALevel2__c, IsAdvancedServices__c, IsaLevel3memberopptyLine__c, LegacyLineId__c, LineAmount__c, LineClosedate__c, LineStatus__c, LineType__c, LowestLevelInPyramid__c, Lowestlevelvalue__c, OpportunityLeader__c, OpportunitySEReferenceNumber__c, OverlayRevenueITB__c, ParentLine__c, Probability__c, PurchaseOrderNumber__c, RevenueOverride__c, SalesOrderNumber__c, SmartInfraType__c, TECH_IntouchQuoteLineRowId__c, TECH_IntouchQuoteRowId__c, TECH_IsACrossSellingOpptyLine__c, TECH_LegacyLastUpdateDate__c, TECH_OpportunityClosedDate__c, WeightedAmount__c from OPP_ProductLine__c where Opportunity__c =:oppor.Id ]; for(OPP_ProductLine__c prodLine: oldProdLines) { //Inserts all the Parent Lines if(prodLine.ParentLine__c == null) { OPP_ProductLine__c pl = prodLine.clone(false, true); pl.Opportunity__c = clonedOpportunity.Id; insert pl; oldNewProdLines.put(prodLine.Id, pl.Id); } //Collects the Child & Parent Lines if(prodLine.ParentLine__c!=null) { childParentLne.put(prodLine.Id, prodLine.ParentLine__c); } } for(OPP_ProductLine__c prodLine: oldProdLines) { //Inserts the Child Line if(prodLine.ParentLine__c != null) { OPP_ProductLine__c pl = prodLine.clone(false, true); pl.ParentLine__c = oldNewProdLines.get(childParentLne.get(prodLine.Id)); pl.Opportunity__c = clonedOpportunity.Id; insert pl; oldNewProdLines.put(prodLine.Id, pl.Id); } }*/ for(OPP_ProductLine__c prodLine: oldProdLines) { pl = prodLine.clone(false, true); pl.Opportunity__c = clonedOpportunity.Id; pl.Designation__c = NULL; pl.LineStatus__c = System.Label.myversion13PRM20;//Pending Status pl.SolutionCenter__c = NULL; pl.DeliveryDate__c = NULL; pl.LineClosedate__c = clonedOpportunity.CloseDate; pl.PLContact__c = NULL; pl.IsASynergy__c = FALSE; pl.NumberofPoints__c = NULL; pl.PurchaseOrderNumber__c = NULL; pl.SalesOrderNumber__c = NULL; pl.RevenueOverride__c = NULL; pl.Commission__c = NULL; pl.Probability__c = NULL; //pl.IncludeinQuote__c = FALSE; pl.IncludedinForecast__c = System.Label.CL00274; //Value "No" is set for cloned Line item pl.ITBRevenueLineNoOld__c = NULL; pl.TECH_IntouchQuoteLineRowId__c = NULL; pl.SmartInfraType__c = NULL; pl.OverlayRevenueITB__c = 0; pl.LegacyLineId__c = NULL; pl.TECH_IntouchQuoteRowId__c = NULL; pl.ITBRevenueLineIdOld__c = NULL; pl.TECH_LegacyLastUpdateDate__c = NULL; pl.TECH_2014ReferentialUpdated__c = FALSE; newParentLines.add(pl); } try{ insert newParentLines; } Catch(Exception e){ Database.rollback(spoppty);//Rollback to the Savepoint rolledBack= true; pgeMsg=e.getMessage(); } } if(!childRecordsToClone.isEmpty() && childRecordsToClone!=null) { //inserting child records Map<Sobject, SObject> childmap = new Map<Sobject, SObject>(); list<sObject> childobj = new list<sObject>(); childmap = Utils_Methods.cloneChildRecords(oppor.id,clonedOpportunity.id,childRecordsToClone); System.debug('#### childmap: '+childmap); if(childmap.size()>0) { for(sObject obj : childmap.values()) { if(obj!=null) { childobj.add(obj); } } } System.debug('#### childobj: '+childobj); if(childobj!=null && !childobj.isEmpty()) { if(insertRecordId!=null) insertRecordId.clear(); try { System.debug('#### Going to insert child objects: '+childobj); insertRecordId = Utils_Methods.insertRecords(childobj); System.debug('#### Child objects inserted: '+childobj); } catch(Exception e) { rolledBack= true; pgeMsg=e.getMessage(); System.debug('#### Error - Child object insertion failed: '+e.getMessage()); System.debug('#### Error - Child object insertion failed: '+e); } if(!rolledBack && selectedRecords.contains(Label.CL00661)) { System.debug('#### Processing opp share'); for(OpportunityTeamMember share: oppShare()) { if (share.userId != clonedOpportunity.ownerId) { OpportunityShare oppShare = new OpportunityShare(); oppShare.opportunityId = clonedOpportunity.id; oppShare.userOrGroupId = share.userId; oppShare.OpportunityAccessLevel = label.CL00203; clonedOpportunityShare.add(oppShare); system.debug(clonedOpportunityShare+'ssss'); } else { System.debug('#### Do not add the new opp owner . He has been added previously'); } } if(clonedOpportunityShare!=null && !clonedOpportunityShare.isEmpty()) { //inserting records in OpportunityShare try { System.debug('#### Going to insert opp share (clonedOpportunityShare): '+clonedOpportunityShare); Utils_Methods.insertRecords(clonedOpportunityShare); System.debug('#### Opp share inserted'); } catch(Exception e) { rolledBack= true; pgeMsg=e.getMessage(); System.debug('#### Error - Child object insertion failed: '+e.getMessage()); System.debug('#### Error - Child object insertion failed: '+e); } } } } } } } } System.debug('continueClone Method Ends'); if(rolledBack) { ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Error,pgeMsg)); flag = false; return null; } else { //clonedOpportunity.TECH_TriggerVR__c = true; Opportunity newClonedOpportunity=new Opportunity(Id=clonedOpportunity.Id,TECH_TriggerVR__c=true); Database.saveResult sv = Database.update(newClonedOpportunity,false); //updating the cloned opportunity if(!sv.issuccess()) { ApexPages.addMessage(new ApexPages.message(ApexPages.severity.Error,sv.getErrors()[0].getMessage())); flag= false; return null; } } return new pagereference('/'+clonedOpportunity.id+'/e?'+Label.CL00330+'=%2F'+clonedOpportunity.id); } public list<ChildRecordSelection> getchildRecords() { system.debug('getchildRecords Method Begins'); records =new Map<String,String>(); records.put(Label.CL00661,'OpportunityTeamMember'); records.put(sObjectType.OPP_SalesContributor__c.label,'OPP_SalesContributor__c'); records.put(sObjectType.OPP_ProductLine__c.label,'OPP_ProductLine__c'); records.put(sObjectType.OPP_ValueChainPlayers__c.label,'OPP_ValueChainPlayers__c'); records.put(sObjectType.OPP_OpportunityCompetitor__c.label,'OPP_OpportunityCompetitor__c'); childRecords = new list<ChildRecordSelection>(); for(String rec:records.Keyset()) { childRecords.add(new ChildRecordSelection(rec)); } System.debug('getchildRecords Method Ends'); return childRecords; } Public class ChildRecordSelection { public string records{get;set;} public Boolean selected{get; set;} public ChildRecordSelection(String rec) { system.debug('ChildRecordSelection Class Begins'); records = rec; if(records.equalsIgnoreCase(Label.CL00661)||records.equalsIgnoreCase(sObjectType.OPP_ValueChainPlayers__c.label)||records.equalsIgnoreCase(sObjectType.OPP_ProductLine__c.label)) selected = true; else selected = false; System.debug('ChildRecordSelection Class Ends'); } } }
ERROR: Error:
Insert failed. First exception on row 2; first error: INACTIVE_OWNER_OR_USER, owner or user is inactive.: []
You should be able to use the "isActive" boolean field on the user object to check if the user is active.
Thanks,
Shashank
Based on the query list use try catch blcok to avoid such issue.