private void butMerge_Click(object sender, EventArgs e) { if (gridMain.SelectedIndices.Length < 2) { MessageBox.Show(Lan.g(this, "Please select at least two items first.")); return; } InsPlan[] listSelected = new InsPlan[gridMain.SelectedIndices.Length]; for (int i = 0; i < listSelected.Length; i++) { listSelected[i] = InsPlans.GetPlan(PIn.PInt(table.Rows[gridMain.SelectedIndices[i]]["PlanNum"].ToString()), null); } FormInsPlansMerge FormI = new FormInsPlansMerge(); FormI.ListAll = listSelected; FormI.ShowDialog(); if (FormI.DialogResult != DialogResult.OK) { return; } //Do the merge. InsPlan planToMergeTo = FormI.PlanToMergeTo.Copy(); List <Benefit> benList = Benefits.RefreshForAll(planToMergeTo); Cursor = Cursors.WaitCursor; List <int> planNums; for (int i = 0; i < listSelected.Length; i++) //loop through each selected plan group //skip the planToMergeTo, because it's already correct { if (planToMergeTo.PlanNum == listSelected[i].PlanNum) { continue; } planNums = new List <int>(InsPlans.GetPlanNumsOfSamePlans(Employers.GetName(listSelected[i].EmployerNum), listSelected[i].GroupName, listSelected[i].GroupNum, listSelected[i].DivisionNo, Carriers.GetName(listSelected[i].CarrierNum), listSelected[i].IsMedical, listSelected[i].PlanNum, false));//remember that planNum=0 //First plan info InsPlans.UpdateForLike(listSelected[i], planToMergeTo); //for(int j=0;j<planNums.Count;j++) { //InsPlans.ComputeEstimatesForPlan(planNums[j]); //Eliminated in 5.0 for speed. //} //then benefits Benefits.UpdateListForIdentical(new List <Benefit>(), benList, planNums); //there will always be changes //Then PlanNote. This is much simpler than the usual synch, because user has seen all versions of note. InsPlans.UpdateNoteForPlans(planNums, planToMergeTo.PlanNote); } FillGrid(); //highlight the merged plan for (int i = 0; i < table.Rows.Count; i++) { for (int j = 0; j < listSelected.Length; j++) { if (table.Rows[i]["PlanNum"].ToString() == listSelected[j].PlanNum.ToString()) { gridMain.SetSelected(i, true); } } } Cursor = Cursors.Default; }