示例#1
0
        public int AddHeadsToProject(Project project, IList <Head> heads)
        {
            int    count     = 0;
            string headNames = "";

            foreach (Head addableHead in heads)
            {
                ProjectHead projectHead = _projectHeadRepository.GetSingle(ph => ph.Project.ID == project.ID && ph.Head.ID == addableHead.ID);
                if (projectHead == null)
                {
                    ProjectHead newProjectHead = new ProjectHead {
                        Project = project, Head = addableHead, IsActive = true
                    };
                    _projectHeadRepository.Insert(newProjectHead);
                    headNames += string.IsNullOrWhiteSpace(headNames) ? addableHead.Name : ", " + addableHead.Name;
                }
            }

            count = _projectHeadRepository.Save();

            if (count > 0)
            {
                InvokeManagerEvent(EventType.Success, "", string.Concat("Head(s) added to project '", project.Name, "': ", headNames, "."));
            }
            else
            {
                _projectHeadRepository.Discard();
                InvokeManagerEvent(EventType.Information, string.Concat("No head(s) added to project '", project.Name, "'."));
            }
            return(count);
        }
示例#2
0
        public int RemoveHeadsFromProject(Project project, IList <Head> heads)
        {
            int    count     = 0;
            string headNames = "";

            foreach (Head deletableHead in heads)
            {
                ProjectHead deletableProjectHead = _projectHeadRepository.GetSingle(ph => ph.Project.ID == project.ID && ph.Head.ID == deletableHead.ID);
                if (deletableProjectHead != null)
                {
                    headNames += string.IsNullOrWhiteSpace(headNames) ? deletableHead.Name : ", " + deletableHead.Name;
                }
                project.ProjectHeads.Remove(deletableProjectHead);
            }
            count = _projectHeadRepository.Save();

            if (count > 0)
            {
                InvokeManagerEvent(EventType.Success, "", string.Concat("Head(s) removed from project '", project.Name, "': ", headNames, "."));
            }
            else
            {
                InvokeManagerEvent(EventType.Information, "", string.Concat("No head(s) removed from project '", project.Name, "'."));
            }
            return(count);
        }
示例#3
0
        private int GetProjectHeadId(string projectName, string headName)
        {
            int         projectId = _db.Projects.Where(p => p.Name == projectName).SingleOrDefault().ID;
            int         headId    = _db.Heads.Where(h => h.Name == headName).SingleOrDefault().ID;
            ProjectHead pc        = _db.ProjectHeads.Where(pcc => pcc.ProjectID == projectId && pcc.HeadID == headId).SingleOrDefault();

            return(pc.ID);
        }
示例#4
0
        public bool Set(MassVoucher massVoucher)
        {
            bool   isValid = true;
            double ignored = 0;

            if (massVoucher.Project == null)
            {
                isValid = SetErrorMessage("NoProjectSelected");
            }
            else if (massVoucher.VoucherType != "Contra" && massVoucher.Head == null)
            {
                isValid = SetErrorMessage("NoHeadSelected");
            }
            else if (massVoucher.Amount == 0)
            {
                isValid = SetErrorMessage("AmountCannotBeZero");
            }
            else if (massVoucher.VoucherType == "Contra" && string.IsNullOrWhiteSpace(massVoucher.ContraType))
            {
                isValid = SetErrorMessage("ContraTypeIsNotSelected");
            }
            else if (massVoucher.VoucherType == "JV" && string.IsNullOrWhiteSpace(massVoucher.JVDebitOrCredit))
            {
                isValid = SetErrorMessage("JVDebitOrCreditNotSelected");
            }
            else if (massVoucher.IsFixedAsset && string.IsNullOrWhiteSpace(massVoucher.FixedAssetName))
            {
                isValid = SetWarningMessage("NoFixedAssetParticularNameFound");
            }
            else if (massVoucher.IsCheque &&
                     (string.IsNullOrWhiteSpace(massVoucher.ChequeNo) || string.IsNullOrWhiteSpace(massVoucher.BankName)))
            {
                isValid = SetInformationMessage("NoChequeOrBankInfo");
            }
            else if (massVoucher.IsFixedAsset && massVoucher.FixedAssetDepreciationRate == 0)
            {
                isValid = SetInformationMessage("ZeroDepreciationProvidedForFixedAsset");
            }
            else if (_voucherManager.GetVouchers(massVoucher.VoucherType + "-" + massVoucher.VoucherSerialNo.ToString(), ref ignored).Count() != 0)
            {
                isValid = SetWarningMessage("VoucherAlreadyExists");
            }

            if (isValid)
            {
                _massVoucher = massVoucher;

                if (!massVoucher.VoucherType.Equals("Contra", StringComparison.OrdinalIgnoreCase))
                {
                    _projectHead = _projectHeadRepository.GetSingle(
                        ph => ph.Project.ID == massVoucher.Project.ID && ph.Head.ID == massVoucher.Head.ID);
                }
                isValid = SetEntryableRecords();
            }

            return(isValid);
        }
示例#5
0
        public bool IsRecordFound(int projectId, int headId)
        {
            ProjectHead projectHead =
                _db.ProjectHeads.Where(ph => ph.ProjectID == projectId && ph.HeadID == headId).SingleOrDefault();

            if (projectHead != null)
            {
                return(_db.Records.Where(r => r.ProjectHeadID == projectHead.ID).Count() > 0);
            }
            return(false);
        }
示例#6
0
        public bool RemoveHeadFromProject(int projectId, int headId)
        {
            ProjectHead projectHead = _db.ProjectHeads.Where(pc => pc.ProjectID == projectId && pc.HeadID == headId).SingleOrDefault();

            if (projectHead != null)
            {
                _db.DeleteObject(projectHead);
                _db.SaveChanges();
                return(true);
            }
            return(false);
        }
示例#7
0
        public double GetDepreciationRate(string projectName, string headName)
        {
            double      rate        = 0;
            ProjectHead projectHead = _projectHeadRepository.GetSingle(ph => ph.Head.Name == headName && ph.Project.Name == projectName);

            if (projectHead != null)
            {
                DepreciationRate depreciationRate = _depreciationRateRepository.GetSingle(dr => dr.ProjectHead != null ? (dr.ProjectHead.ID == projectHead.ID) : false);
                rate = (depreciationRate != null) ? depreciationRate.Rate : 0;
            }

            return(rate);
        }
示例#8
0
        public bool Set(Project project, Head head, double rate)
        {
            if (project == null)
            {
                InvokeManagerEvent(EventType.Error, "NoProjectSelected");
                return(false);
            }
            if (head == null)
            {
                InvokeManagerEvent(EventType.Error, "NoHeadSelected");
                return(false);
            }
            if (rate == 0)
            {
                // TODO: This will not work right now, think through. But not a big problem.
                InvokeManagerEvent(EventType.Warning, "ZeroDepreciationProvidedForFixedAsset");
            }

            string projectName = project.Name;
            string headName    = head.Name;

            ProjectHead projectHead = _projectHeadRepository.GetSingle(ph => ph.Head.Name == headName && ph.Project.Name == projectName);

            bool update = false;

            if (projectHead != null && projectHead.DepreciationRates != null)
            {
                DepreciationRate depreciationRate = projectHead.DepreciationRates.SingleOrDefault(b => b.IsActive);
                if (depreciationRate != null)
                {
                    depreciationRate.Rate = rate;
                    update = true;
                }
                else
                {
                    depreciationRate = new DepreciationRate
                    {
                        Rate        = rate,
                        IsActive    = true,
                        ProjectHead = projectHead
                    };
                }

                return(InsertOrUpdateNewDepreciationRate(depreciationRate, update));
            }
            else
            {
                return(false);
            }
        }
示例#9
0
        public bool IsRecordFound(Project project, Head head)
        {
            if (project == null || head == null)
            {
                return(false);
            }
            ProjectHead projectHead = _projectHeadRepository.GetSingle(ph => ph.Project.ID == project.ID && ph.Head.ID == head.ID);

            if (projectHead == null)
            {
                return(false);
            }
            return(_recordRepository.Get(r => r.ProjectHead.ID == projectHead.ID).Count() > 0);
        }
示例#10
0
        public bool AddHeadToProject(int projectId, int headId)
        {
            ProjectHead projectHead = _db.ProjectHeads.Where(pc => pc.ProjectID == projectId && pc.HeadID == headId).SingleOrDefault();

            if (projectHead == null)
            {
                ProjectHead newProjectHead = new ProjectHead {
                    ProjectID = projectId, HeadID = headId, IsActive = true
                };
                _db.AddToProjectHeads(newProjectHead);
                _db.SaveChanges();
                return(true);
            }
            return(false);
        }
示例#11
0
        private bool SetEntryableRecords()
        {
            bool           isValid = true;
            IList <Record> records = new List <Record>();

            if (_massVoucher.VoucherType.Equals("DV", StringComparison.OrdinalIgnoreCase))
            {
                DebitVoucher debitVoucher = GetDebitVoucher();
                Record       transaction  = _massVoucher.IsCheque
                                         ? (Record)GetTransactionInCheque(0, _massVoucher.Amount)
                                         : (Record)GetTransactionInCash(0, _massVoucher.Amount);
                records.Add(debitVoucher);
                records.Add(transaction);
            }
            else if (_massVoucher.VoucherType.Equals("CV", StringComparison.OrdinalIgnoreCase))
            {
                CreditVoucher creditVoucher = GetCreditVoucher();
                Record        transaction   = _massVoucher.IsCheque
                                         ? (Record)GetTransactionInCheque(_massVoucher.Amount, 0)
                                         : (Record)GetTransactionInCash(_massVoucher.Amount, 0);
                records.Add(creditVoucher);
                records.Add(transaction);
            }
            else if (_massVoucher.VoucherType.Equals("JV", StringComparison.OrdinalIgnoreCase))
            {
                JournalVoucher journalVoucher = GetJournalVoucher();
                records.Add(journalVoucher);
            }
            else if (_massVoucher.VoucherType.Equals("Contra", StringComparison.OrdinalIgnoreCase))
            {
                double cashDebit = _massVoucher.ContraType.Equals("bank to cash", StringComparison.OrdinalIgnoreCase)
                                       ? _massVoucher.Amount
                                       : 0;
                double cashCredit = _massVoucher.ContraType.Equals("cash to bank", StringComparison.OrdinalIgnoreCase)
                                        ? _massVoucher.Amount
                                        : 0;

                Head bankBook = _headRepository.GetSingle(h => h.Name.Equals("Bank Book", StringComparison.OrdinalIgnoreCase));
                Head cashBook = _headRepository.GetSingle(h => h.Name.Equals("Cash Book", StringComparison.OrdinalIgnoreCase));

                ProjectHead bankBookProjectHead = _projectHeadRepository.GetSingle(ph => ph.Project.ID == _massVoucher.Project.ID && ph.Head.ID == bankBook.ID);
                ProjectHead cashBookProjectHead = _projectHeadRepository.GetSingle(ph => ph.Project.ID == _massVoucher.Project.ID && ph.Head.ID == cashBook.ID);

                TransactionInCash cashTransaction = GetTransactionInCash(cashDebit, cashCredit);
                cashTransaction.ProjectHead = cashBookProjectHead;

                TransactionInCheque chequeTransaction = GetTransactionInCheque(cashCredit, cashDebit);
                chequeTransaction.ProjectHead = bankBookProjectHead;

                records.Add(cashTransaction);
                records.Add(chequeTransaction);
            }

            if (records.Count > 0)
            {
                _entryableRecords = records;
            }
            else
            {
                isValid = false;
            }

            return(isValid);
        }
示例#12
0
        //<<<<<<< HEAD
        //        public bool Set(Project project, Head head, string financialYear, double budgetAmount)
        //        {
        //            ProjectHead projectHead = _projectHeadRepository.GetSingle(ph => ph.Project.ID == project.ID && ph.Head.ID == head.ID );
        //            if (projectHead == null) return false;
        //            Budget budget = projectHead.Budgets.SingleOrDefault(b => b.FinancialYear == financialYear && b.IsActive);
        //            //TODO: depends on current accounting year.
        //            if (budget == null)
        //            {
        //                return InsertNewBudget(projectHead, budgetAmount);
        //=======


        public bool Set(Project project, Head head, double amount, int budgetYear)
        {
            if (project == null)
            {
                InvokeManagerEvent(EventType.Error, "NoProjectSelected");
                return(false);
                //>>>>>>> githubJakaria42/master
            }
            if (head == null)
            {
                InvokeManagerEvent(EventType.Error, "NoHeadSelected");
                return(false);
            }
            if (amount == 0)
            {
                // TODO: This will not work right now, think through. But not a big problem.
                InvokeManagerEvent(EventType.Warning, "ZeroBudgetProvidedForFixedAsset");
            }

            string projectName = project.Name;
            string headName    = head.Name;

            ProjectHead projectHead = _projectHeadRepository.GetSingle(ph => ph.Project.ID == project.ID && ph.Head.ID == head.ID);

            bool update = false;

            if (projectHead != null && projectHead.Budgets != null)
            {
                //<<<<<<< HEAD
                //                budget.IsActive = false;
                //                return InsertNewBudget(projectHead, budgetAmount);
                //=======
                Budget budget = projectHead.Budgets.SingleOrDefault(b => b.FinancialYear == budgetYear.ToString());
                if (budget != null)
                {
                    budget.Amount        = amount;
                    budget.FinancialYear = budgetYear.ToString();
                    budget.Date          = DateTime.Today;
                    budget.IsActive      = budgetYear < DateTime.Now.Year ? false : true;

                    update = true;
                }
                else
                {
                    budget = new Budget
                    {
                        Amount        = amount,
                        FinancialYear = budgetYear.ToString(),
                        Date          = DateTime.Today,
                        IsActive      = budgetYear < DateTime.Now.Year ? false : true,
                        ProjectHead   = projectHead
                    };
                }

                return(InsertOrUpdateBudget(budget, update));
                //>>>>>>> githubJakaria42/master
            }
            else
            {
                return(false);
            }

            //ProjectHead projectHead = _projectHeadRepository.GetSingle(ph => ph.Head.Name == headName && ph.Project.Name == projectName);
            //Budget budget = projectHead.Budgets.SingleOrDefault(b => b.IsActive);
            ////TODO: depends on current accounting year.
            //if (budget == null)
            //{
            //    return InsertNewBudget(projectHead, amount);
            //}
            //else
            //{
            //    budget.IsActive = false;
            //    return InsertNewBudget(projectHead, amount);
            //}
        }
示例#13
0
        internal static DALBudget GetDALBudget(string projectName, string headName)
        {
            ProjectHead projectHead = DBFactory.Instance.DB.ProjectHeads.Where(ph => ph.Project.Name == projectName && ph.Head.Name == headName).SingleOrDefault();

            return(DBFactory.Instance.DB.Budgets.Where(b => b.ProjectHeadID == projectHead.ID && b.IsActive == true).SingleOrDefault());
        }