public void MergeRetrievalForms()
        {
            List <StationeryRetrievalForm>       stationeryRetrievalForms       = db.StationeryRetrievalForms.ToList();
            List <StationeryRetrievalFormDetail> stationeryRetrievalFormDetails = db.StationeryRetrievalFormDetails.ToList();

            var srfList = (from srf in stationeryRetrievalForms
                           where srf.Status == "Pending"
                           select srf).ToList();

            if (srfList.Count > 1)
            {
                StationeryRetrievalForm createdStationeryRetrievalForm = new StationeryRetrievalForm
                {
                    FormNumber = (db.StationeryRetrievalForms.Count() + 1).ToString(),
                    Date       = DateTime.Now,
                    Status     = "Pending"
                };

                db.StationeryRetrievalForms.Add(createdStationeryRetrievalForm);
                db.SaveChanges();

                foreach (StationeryRetrievalForm sRF in srfList)
                {
                    StationeryRetrievalForm existingStationeryRetrievalForm = db.StationeryRetrievalForms.Find(sRF.FormNumber);
                    existingStationeryRetrievalForm.Status = "Merged";

                    var srfdList = (from srfd in stationeryRetrievalFormDetails
                                    where srfd.FormNumber == sRF.FormNumber
                                    select srfd).ToList();

                    foreach (StationeryRetrievalFormDetail srfd in srfdList)
                    {
                        StationeryRetrievalFormDetail existingStationeryRetrievalFormDetail = db.StationeryRetrievalFormDetails.Find(srfd.FormDetailsNumber);
                        existingStationeryRetrievalFormDetail.FormNumber = createdStationeryRetrievalForm.FormNumber;
                        db.SaveChanges();
                    }
                }

                List <StationeryRetrievalFormDetail> srfdListForGrouping = db.StationeryRetrievalFormDetails.ToList();

                var retrievalFormDetailsMerged = (from stationeryRetrievalFormDetail in srfdListForGrouping
                                                  where stationeryRetrievalFormDetail.FormNumber == createdStationeryRetrievalForm.FormNumber
                                                  group stationeryRetrievalFormDetail by new { stationeryRetrievalFormDetail.ItemNumber, stationeryRetrievalFormDetail.DepartmentCode } into group1
                                                  select new StationeryRetrievalFormDetail
                {
                    FormNumber = createdStationeryRetrievalForm.FormNumber,
                    ItemNumber = group1.Key.ItemNumber,
                    DepartmentCode = group1.Key.DepartmentCode,
                    Needed = group1.Sum(x => x.Needed),
                    Actual = 0
                }).ToList();

                var oldFormsToDelete = (from stationeryRetrievalFormDetail in srfdListForGrouping
                                        where stationeryRetrievalFormDetail.FormNumber == createdStationeryRetrievalForm.FormNumber
                                        select stationeryRetrievalFormDetail).ToList();

                foreach (StationeryRetrievalFormDetail formToDelete in oldFormsToDelete)
                {
                    db.StationeryRetrievalFormDetails.Remove(formToDelete);
                    db.SaveChanges();
                }


                foreach (StationeryRetrievalFormDetail formdetail in retrievalFormDetailsMerged)
                {
                    List <StationeryRetrievalFormDetail> listForId = db.StationeryRetrievalFormDetails.ToList();

                    var queryId = (from lfd in listForId
                                   select lfd.FormDetailsNumber).ToList();

                    formdetail.FormDetailsNumber = GenerateID.CreateNewId(queryId);
                    db.StationeryRetrievalFormDetails.Add(formdetail);
                    db.SaveChanges();
                }
            }
        }