public List <AccountHeadDto> GetJournalLedgers()
        {
            RefMaster      rm  = _dbContext.RefMasters.ToList().Find(r => r.RefMasterCode.ToUpper() == "AHTYPE");
            RefValueMaster rvm = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "ASSETS");

            List <AccountHead> accountheads = _dbContext.AccountHeads.ToList();

            List <AccountHead> ahs = (List <AccountHead>)(from l3 in accountheads
                                                          from l4 in accountheads
                                                          from l5 in accountheads
                                                          where l3.AHID == l4.ParentAHID &&
                                                          l4.AHID == l5.ParentAHID && l3.AHName.ToUpper() == "CLOSING BALANCES" && l3.AHType == rvm.RefID
                                                          select l5).ToList();

            var b = from ah in accountheads
                    where !(from o in ahs select o.AHID)
                    .Contains(ah.AHID) &&
                    ah.AHLevel > 4
                    select ah;



            List <AccountHeadDto> lstResult = new List <AccountHeadDto>();

            foreach (var a in b)
            {
                lstResult.Add(new AccountHeadDto()
                {
                    AHCode = a.AHCode, AHID = a.AHID, AHLevel = a.AHLevel, AHType = a.AHType, AHName = a.AHName, IsFederation = a.IsFederation, ParentAHID = a.ParentAHID.HasValue ? a.ParentAHID.Value : 0
                });
            }
            return(lstResult);
        }
        public ActionResult IncomeAndExpenditure_Group()
        {
            ReportsDal             objDal     = new ReportsDal();
            List <TrialBalanceDto> lstRecords = objDal.GetAllTrialBalanceReport_Group(GroupInfo.GroupID);
            RefMaster      rm             = _dbContext.RefMasters.ToList().Find(r => r.RefMasterCode.ToUpper() == "AHTYPE");
            RefValueMaster rvmIncomes     = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "INCOME");
            RefValueMaster rvmExpenditure = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "EXPENDITURE");

            List <TrialBalanceDto> lstIncomes     = lstRecords.FindAll(l => l.AhType == rvmIncomes.RefID);
            List <TrialBalanceDto> lstExpenditure = lstRecords.FindAll(l => l.AhType == rvmExpenditure.RefID);
            int RecordCount = lstRecords.Count > lstExpenditure.Count ? lstRecords.Count : lstExpenditure.Count;

            ViewBag.RecordCount = RecordCount;
            ViewBag.Incomes     = lstIncomes;
            ViewBag.Expenditure = lstExpenditure;
            var Debit1  = lstIncomes.Sum(l => l.Debit3);
            var Credit1 = lstIncomes.Sum(l => l.Credit3);

            ViewBag.TotalIncomesBalance = Debit1 + Credit1;
            var Debit2  = lstExpenditure.Sum(M => M.Debit3);
            var Credit2 = lstExpenditure.Sum(M => M.Credit3);

            ViewBag.TotalExpenditurebalance = Debit2 + Credit2;
            return(View("IncomeAndExpenditure"));
        }
        public List <ReceiptTranscationDto> GetReceiptAccountHeads(bool isFederation)
        {
            RefMaster      rm  = _dbContext.RefMasters.ToList().Find(r => r.RefMasterCode.ToUpper() == "AHTYPE");
            RefValueMaster rvm = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == Enums.AccountTypes.EXPENDITURE.ToString());

            List <AccountHead> accountheads = _dbContext.AccountHeads.ToList();
            var accountHeads = _dbContext.AccountHeads.ToList().FindAll(f => f.AHLevel > 4 && f.IsMemberTransaction && f.IsFederation == isFederation && f.AHType != rvm.RefID);
            List <ReceiptTranscationDto> accountHeadsDto = new List <ReceiptTranscationDto>();

            var raps   = _dbContext.ReceiptAppropriationPriorities.ToList().FindAll(f => f.StatusId == 1 && f.IsGroup != isFederation);
            var result = from ah in accountHeads
                         from rap in raps
                         where rap.AHID == ah.AHID
                         select new { ah.AHID, ah.AHCode, ah.AHName, ah.OpeningBalance, rap.Priority };
            var result2 = result.OrderBy(o => o.Priority);



            foreach (var Ac in result2)
            {
                accountHeadsDto.Add(new ReceiptTranscationDto()
                {
                    AHID           = Ac.AHID,
                    AHCode         = Ac.AHCode,
                    AHName         = Ac.AHName,
                    OpeningBalance = Convert.ToDecimal(Ac.OpeningBalance)
                });
            }

            return(accountHeadsDto);
        }
        public AccountHeadDto GetCashInHandAccount(bool isFederation)
        {
            RefMaster      rm  = _dbContext.RefMasters.ToList().Find(r => r.RefMasterCode.ToUpper() == "AHTYPE");
            RefValueMaster rvm = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "ASSETS");

            List <AccountHead> lstAccountHeadDtos = _dbContext.AccountHeads.ToList();

            #region recent oldcode

            /*
             * var ahlevel1 = lstAccountHeadDtos.FindAll(l => l.ParentAHID == 0 || l.ParentAHID == null);
             * var assetparent = ahlevel1.Find(l => l.AHCode.ToUpper() == "ASSETS");
             * var ahlevl2 = lstAccountHeadDtos.Find(l => l.ParentAHID == assetparent.AHID && l.AHCode.ToUpper() == "CLOSING BALANCES");
             * var ahlevl3 = lstAccountHeadDtos.Find(l => l.ParentAHID == ahlevl2.AHID && l.AHCode.ToUpper() == "CASH AND BANK");
             * var ahlevel4 = lstAccountHeadDtos.Find(l => l.ParentAHID == ahlevl3.AHID && l.AHCode.ToUpper() == "CASH IN HAND" && isFederation);
             * var a = lstAccountHeadDtos.Find(l => l.ParentAHID == ahlevel4.AHID && l.AHCode.ToUpper() == "CASH IN HAND" && l.IsFederation == isFederation);
             */
            #endregion recent oldcode

            var CashinhandValueFromSettings = _dbContext.SystemSettings.ToList().Find(l => l.SettingName == "GROUP_CASHINHAND");
            var CashinHandAccountHead       = lstAccountHeadDtos.Find(l => l.AHID == Convert.ToInt32(CashinhandValueFromSettings.SettingValue));

            return(new AccountHeadDto()
            {
                AHCode = CashinHandAccountHead.AHCode, AHID = CashinHandAccountHead.AHID, AHLevel = CashinHandAccountHead.AHLevel, AHType = CashinHandAccountHead.AHType, AHName = CashinHandAccountHead.AHName, IsFederation = CashinHandAccountHead.IsFederation, ParentAHID = CashinHandAccountHead.ParentAHID.HasValue ? CashinHandAccountHead.ParentAHID.Value : 0
            });
        }
        public ActionResult BalanceSheet_Group()
        {
            ReportsDal objDal = new ReportsDal();

            List <TrialBalanceDto> lstRecords = objDal.GetAllTrialBalanceReport_Group(GroupInfo.GroupID);
            RefMaster      rm             = _dbContext.RefMasters.ToList().Find(r => r.RefMasterCode.ToUpper() == "AHTYPE");
            RefValueMaster rvmAssets      = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "ASSETS");
            RefValueMaster rvmLiabilities = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "LIABILITIES");

            List <TrialBalanceDto> lstAssets      = lstRecords.FindAll(l => l.AhType == rvmAssets.RefID);
            List <TrialBalanceDto> lstLiabilities = lstRecords.FindAll(l => l.AhType == rvmLiabilities.RefID);
            int RecordCount = lstRecords.Count > lstLiabilities.Count ? lstRecords.Count : lstLiabilities.Count;

            ViewBag.RecordCount = RecordCount;
            ViewBag.Assets      = lstAssets;
            ViewBag.Liabilities = lstLiabilities;

            var Debit1  = lstAssets.Sum(l => l.Debit3);
            var Credit1 = lstAssets.Sum(l => l.Credit3);

            ViewBag.TotalAssetsBalance = Debit1 - Credit1;
            var Debit2  = lstLiabilities.Sum(M => M.Debit3);
            var Credit2 = lstLiabilities.Sum(M => M.Credit3);

            ViewBag.TotalLiabilitiesbalance = Credit2 - Debit2;
            return(View("BalanceSheet"));
        }
        public ActionResult ExportsReports()
        {
            TrialBalanceController TBC            = new TrialBalanceController();
            List <TrialBalanceDto> lstRecords     = TBC.GetAllTrialBalanceReport();
            RefMaster              rm             = _dbContext.RefMasters.ToList().Find(r => r.RefMasterCode.ToUpper() == "AHTYPE");
            RefValueMaster         rvmAssets      = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "ASSETS");
            RefValueMaster         rvmLiabilities = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "LIABILITIES");
            List <TrialBalanceDto> lstAssets      = lstRecords.FindAll(l => l.AhType == rvmAssets.RefID);
            List <TrialBalanceDto> lstLiabilities = lstRecords.FindAll(l => l.AhType == rvmLiabilities.RefID);
            var Debit1  = lstAssets.Sum(l => l.Debit3);
            var Credit1 = lstAssets.Sum(l => l.Credit3);
            var Debit2  = lstLiabilities.Sum(M => M.Debit3);
            var Credit2 = lstLiabilities.Sum(M => M.Credit3);

            BalanceSheetDto lst = new BalanceSheetDto();

            lst.lstAssects     = lstAssets;
            lst.lstLiabilities = lstLiabilities;
            lst.Debit1         = Debit1;
            lst.Credit1        = Credit1;
            lst.Debit2         = Debit2;
            lst.Credit2        = Credit2;
            ReportDocument rd = new ReportDocument();

            rd.Load(Server.MapPath("~/Reports/FinancialRports/BalanceSheet.rpt"));
            rd.SetDataSource(lst);

            Response.Buffer = false;
            Response.ClearContent();
            Response.ClearHeaders();
            Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);

            stream.Seek(0, SeekOrigin.Begin);
            return(File(stream, "application/pdf", "BalanceSheet.pdf"));
        }
        public ActionResult ExportsReports_Group()
        {
            ReportsDal             objDal = new ReportsDal();
            OrganizationService    objIOrganizationService = new OrganizationService();
            OrganizationDto        organizationDto         = objIOrganizationService.GetAll();
            List <TrialBalanceDto> lstRecords = objDal.GetAllTrialBalanceReport_Group(GroupInfo.GroupID);
            RefMaster      rm             = _dbContext.RefMasters.ToList().Find(r => r.RefMasterCode.ToUpper() == "AHTYPE");
            RefValueMaster rvmIncomes     = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "INCOME");
            RefValueMaster rvmExpenditure = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "EXPENDITURE");

            List <TrialBalanceDto> lstIncomes     = lstRecords.FindAll(l => l.AhType == rvmIncomes.RefID);
            List <TrialBalanceDto> lstExpenditure = lstRecords.FindAll(l => l.AhType == rvmExpenditure.RefID);
            int recordCount = lstExpenditure.Count > lstIncomes.Count ? lstExpenditure.Count : lstIncomes.Count;
            List <IncomeAndExpenditureModel> reportData = new List <IncomeAndExpenditureModel>();

            for (int idx = 0; idx < recordCount; idx++)
            {
                TrialBalanceDto           objAsset     = lstIncomes.Count > idx ? lstIncomes[idx] : null;
                TrialBalanceDto           objLiability = lstExpenditure.Count > idx ? lstExpenditure[idx] : null;
                IncomeAndExpenditureModel objIncomeAndExpenditureModel = new IncomeAndExpenditureModel();
                objIncomeAndExpenditureModel.OrgName    = organizationDto.OrgName;
                objIncomeAndExpenditureModel.OrgAddress = organizationDto.Address;
                if (objAsset != null)
                {
                    objIncomeAndExpenditureModel.Income_AHCode   = objAsset.Ahcode;
                    objIncomeAndExpenditureModel.Income_AHName   = objAsset.Accounthaedname;
                    objIncomeAndExpenditureModel.Income_CrAmount = objAsset.Credit3;
                    objIncomeAndExpenditureModel.Income_DrAmount = objAsset.Debit3;
                }
                if (objLiability != null)
                {
                    objIncomeAndExpenditureModel.Expenditure_AHCode   = objLiability.Ahcode;
                    objIncomeAndExpenditureModel.Expenditure_AHName   = objLiability.Accounthaedname;
                    objIncomeAndExpenditureModel.Expenditure_CrAmount = objLiability.Credit3;
                    objIncomeAndExpenditureModel.Expenditure_DrAmount = objLiability.Debit3;
                }
                reportData.Add(objIncomeAndExpenditureModel);
            }

            double incomeSum      = reportData.Sum(l => l.Income_CrAmount - l.Income_DrAmount);
            double expenditureSum = reportData.Sum(l => l.Expenditure_DrAmount - l.Expenditure_CrAmount);

            reportData.ForEach(l => l.Expenditure_Sum = expenditureSum);
            reportData.ForEach(l => l.Income_Sum      = incomeSum);
            ReportDocument rd = new ReportDocument();

            rd.Load(Server.MapPath("~/Reports/FinancialRports/IncomeAndExpenditure.rpt"));
            rd.SetDataSource(reportData);

            Response.Buffer = false;
            Response.ClearContent();
            Response.ClearHeaders();
            Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);

            stream.Seek(0, SeekOrigin.Begin);
            return(File(stream, "application/pdf", "IncomeAndExpenditure.pdf"));
        }
        public List <AccountHeadDto> GetReceiptSavingAccountHeads(bool isFederation)
        {
            List <AccountHeadDto> lstSavingHeads = new List <AccountHeadDto>();
            List <AccountHead>    lstHeads       = new List <AccountHead>();
            RefMaster             rm             = _dbContext.RefMasters.ToList().Find(r => r.RefMasterCode.ToUpper() == "AHTYPE");
            RefValueMaster        rvm            = _dbContext.RefValueMasters.ToList().Find(f => f.RefMasterID == rm.RefMasterID && f.RefCode.ToUpper() == "LIABILITIES");
            var liabilities = _dbContext.AccountHeads.ToList().FindAll(f => f.AHType == rvm.RefID);
            var savings     = liabilities.Find(l => l.AHCode.ToUpper() == "DEPOSITS");
            var result      = from l2 in liabilities
                              from l3 in liabilities
                              from l4 in liabilities
                              where l2.AHID == l3.ParentAHID && l3.AHID == l4.ParentAHID &&
                              l4.AHLevel == 5
                              select l4;

            var result2 = from l2 in liabilities
                          from l3 in liabilities
                          from l4 in liabilities
                          from l5 in liabilities
                          where l2.AHID == l3.ParentAHID && l3.AHID == l4.ParentAHID && l4.AHID == l5.ParentAHID &&
                          l5.AHLevel == 5
                          select l5;

            lstHeads.AddRange(result);
            lstHeads.AddRange(result2);

            foreach (var item in lstHeads)
            {
                AccountHeadDto dto = new AccountHeadDto()
                {
                    AHID = item.AHID, AHCode = item.AHCode, AHName = item.AHName
                };
                lstSavingHeads.Add(dto);
            }

            return(lstSavingHeads);
        }