Duplicating records with (child records)with(child records)

Hi,
I am trying to duplicate a record that has related child records which in turn has child records of its own. All is fine for the first loop of child records, but I am not sure how to implement the second loop.

Any help would be much appreciated I am starting to pull my hair out.

//**********************************************************************************************
//duplicate record details

var vHasSubQuotes = databaseManager.hasRecords(quotes_to_sub_quotes)//check for sub-quote status

if(vHasSubQuotes)
	
{

	var fs = foundset; //load current foundset
	var relatedFsArray = new Array('quotes_to_sub_quotes'); //load related foundset as a array
	var dup = fs.getRecord(fs.duplicateRecord(false,false)); // Duplicate master record
	
//*********************************************************************************************
//load data from original record for later

	var dupNumber = dup.quotesid; 
	var vQuoteNum = dup.quote_number;
	var repI = dup.quote_sales_rep_int;
	var quoteID = dup.quotesid;

	databaseManager.saveData() //save data
	
//*********************************************************************************************
//loop through related records and duplicate

	for(var k=0;k<relatedFsArray.length;k++)
	
		{
 	 	 
			var related = fs[relatedFsArray[k]];
 	 	 	for(var i=1;i<=related.getSize();i++)
			
			{
			
	 	    var relatedOriginal = related.getRecord(i);
			var relatedWorkSheet = new Array('quotes_to_sub_quotes.quotes_to_workorder_line_items');
			
				var relatedWs = fs[relatedWorkSheet[k]];
 	 	 		for(var i=1;i<=relatedWorkSheet.getSize();i++)
				
				{
				//do something
				}
			
			
			var relatedDub = dup[relatedFsArray[k]].getRecord(dup[relatedFsArray[k]].newRecord(false,false));
			
		    databaseManager.copyMatchingColumns(relatedOriginal,  relatedDub);
		

			//********************************************************************************
			//change status on duplicated quote to reflect a sub-quote
			
			relatedDub.sub_quote_related_id = quoteID //set related record 
			
			relatedDub.sub_quote = 1 //set related record to be a sub quote
			
			var vSubCount = relatedOriginal.sub_quote_count //set quote count from original record
			
			relatedDub.sub_quote_number = repI + '' + vQuoteNum + '/' + vSubCount; //set complete quote number
			
			databaseManager.saveData() //save data
				
				
						
}

currentcontroller.saveData();

			
	
		
		
		};


};


else
{

globals.duplicateRecord(foundset, new Array('quotes_to_workorder_line_items'));	

};

If I understand you problem correctly, this is a simplified version of what I’d do in this situation…

var rec = foundset.getRecord(foundset.getSelectedIndex()); // current
var dup = foundset.getRecord(foundset.duplicateRecord()); // dupe

for(var ix=1; ix<=databaseManager.getFoundSetCount(rec.relation1); ix++)
{
   var relRec = rec.relation1.getRecord(ix);
   var relDupe = dup.relation1.getRecord(dup.relation1.newRecord());
   // copy cols, whatever here
  
   for(var jx=1; jx<=databaseManager.getFoundSetCount(relRec.relation2); jx++)
   {
      var relRec2 = relRec.relation2.getRecord(jx);
      var relDupe2 = relDupe.relation2.getRecord(relDupe.relation2.newRecord());
      // copy cols, etc. here
   }
}

Hi Greg,
Thank you so much, that did it.

Many Thanks