public static void SeedBudgetData()
        {
            Ogranizations = new List <Organization>();
            int fyMnth = rnd.Next(1, 13);
            int orgId  = rnd.Next(1, 6);
            int status = rnd.Next(1, 4);

            for (int i = 1; i <= 5; i++)
            {
                Ogranizations.Add(new Organization
                {
                    OrgId       = i,
                    OrgName     = string.Format("OrgName - {0}", i),
                    FyscalMonth = (Month)fyMnth
                });
                fyMnth = rnd.Next(1, 13);
            }

            BudgetStatuses = new List <BudgetStatus>();
            for (int k = 1; k <= 10; k++)
            {
                var staus = new BudgetStatus
                {
                    BudgetStatusId = k,
                    FyscalYear     = FyscalYears[orgId],
                    OrgId          = orgId,
                    PlannerStatus  = (PlannerStatus)status
                };
                BudgetStatuses.Add(staus);
                orgId  = rnd.Next(1, 6);
                status = rnd.Next(1, 4);
            }

            Expenses = new List <Expense>();
            for (int i = 1; i <= 100; i++)
            {
                var budgetData = new List <Budget>();
                for (int j = 1; j < fyMnth; j++)
                {
                    budgetData.Add(new Budget
                    {
                        BudgetId = j,
                        Month    = (Month)j,
                        Value    = 100 * j
                    });
                }
                var exp = new Expense
                {
                    ExpenseId   = i,
                    Expenditure = string.Format("Expenditure - {0}", i),
                    FyscalYear  = FyscalYears[orgId],
                    OrgId       = orgId,
                    BudgetPlan  = budgetData
                };
                Expenses.Add(exp);
                fyMnth = rnd.Next(1, 13);
                orgId  = rnd.Next(1, 6);
            }
        }
Пример #2
0
        public string UpdateBudgetStatus(E_VoucherBudgetDTO model, BudgetStatus status, string statusName)
        {
            using (var ts = this._unitOfWork.BeginTransaction())
            {
                try
                {
                    var budget = this._repo.SelectWhere(x => x.Id == model.Id && x.CompanyId == model.CompanyId).FirstOrDefault();
                    if (budget != null)
                    {
                        #region kiem tra cac trang thai
                        if (status == BudgetStatus.CreatedCompleted)// hoan thanh nhap ngan sach
                        {
                            if (budget.Status != (int?)BudgetStatus.Created)
                            {
                                return("Lỗi: Không thể hoàn thành nhập ngân sách có trạng thái không phải 'Đã nhập'.");
                            }
                        }
                        else if (status == BudgetStatus.DistributedCompleted) // hoan thanh phan bo
                        {
                            if (budget.Status != (int?)BudgetStatus.Distributed)
                            {
                                return("Lỗi: Không thể hoàn thành phân bổ ngân sách có trạng thái không phải 'Đã phân bổ'.");
                            }
                        }
                        else if (status == BudgetStatus.Approved) // duyet phan bo
                        {
                            if (budget.Status != (int?)BudgetStatus.DistributedCompleted)
                            {
                                return("Lỗi: Không thể duyệt phân bổ ngân sách có trạng thái không phải 'Hoàn thành phân bổ'.");
                            }
                        }
                        else if (status == BudgetStatus.Distributed) //  tra lai
                        {
                            if (budget.Status != (int?)BudgetStatus.DistributedCompleted)
                            {
                                return("Lỗi: Không thể trả lại phân bổ ngân sách có trạng thái không phải 'Đã hoàn thành phân bổ'.");
                            }
                        }
                        #endregion

                        // update trang thai budget
                        var properties = new List <Expression <Func <E_VoucherBudget, object> > >
                        {
                            (x => x.Status),
                            (x => x.StatusName),
                            (x => x.UpdateUser),
                            (x => x.UpdateDate),
                        };
                        budget.Status     = (int?)status;
                        budget.StatusName = statusName;
                        budget.UpdateUser = model.UpdateUser;
                        budget.UpdateDate = DateTime.Now;

                        this._repo.UpdateByProperties(budget, properties);
                        _unitOfWork.SaveChanges();


                        var budgetDetails = _detailRepo.SelectWhere(x => x.VoucherBudgetId == budget.Id).ToList();
                        if (budgetDetails != null && budgetDetails.Count > 0)
                        {
                            foreach (var item in budgetDetails)
                            { // update trang thai budget
                                var properties1 = new List <Expression <Func <E_VoucherBudgetDetail, object> > >
                                {
                                    (x => x.Status),
                                    (x => x.StatusName),
                                    (x => x.UpdateUser),
                                    (x => x.UpdateDate),
                                };
                                item.Status     = (int?)status;
                                item.StatusName = statusName;
                                item.UpdateUser = model.UpdateUser;
                                item.UpdateDate = DateTime.Now;

                                this._detailRepo.UpdateByProperties(item, properties1);
                                _unitOfWork.SaveChanges();
                            }
                        }
                        ts.Commit();
                    }
                }
                catch (Exception ex)
                {
                    FileLog.WriteLog(ex.ToString());
                    return(ex.Message);
                }
            }
            return("");
        }
 public IQueryable GetBudgets(Int32 companyId, Int32? customerId, BudgetStatus budgetStatus,
                              string sortExpression, int startRowIndex, int maximumRows)
 {
     return GetBudgets(companyId, customerId, budgetStatus, 0, null, null, String.Empty, sortExpression,
                       startRowIndex, maximumRows);
 }
        public Int32 GetBudgetsCount(Int32 companyId, Int32? customerId, String productName, BudgetStatus budgetStatus, Int32 vendorId,
                                  DateTime? beginDate, DateTime? endDate, String telephone, string sortExpression,
                                  int startRowIndex, int maximumRows)
        {
            return GetBudgets(companyId, customerId, productName, budgetStatus, vendorId, beginDate, endDate, telephone, sortExpression, startRowIndex, maximumRows).Cast<object>().Count();

        }
        public IQueryable GetBudgets(Int32 companyId, Int32? customerId, String productName, BudgetStatus budgetStatus, Int32 vendorId,
                                    DateTime? beginDate, DateTime? endDate, String telephone, string sortExpression,
                                    int startRowIndex, int maximumRows)
        {
            var query = from budget in GetBudgets(companyId, customerId, null)
                        join bStatus in DbContext.BudgetStatus on budget.BudgetStatusId equals bStatus.BudgetStatusId
                            into gBudgetStatus
                        from bStatus in gBudgetStatus.DefaultIfEmpty()
                        join customer in DbContext.Customers on budget.CustomerId equals customer.CustomerId into
                            gBudget
                        from customer in gBudget.DefaultIfEmpty()
                        join profiles in DbContext.Profiles on customer.ProfileId equals profiles.ProfileId into
                            gProfiles
                        from profiles in gProfiles.DefaultIfEmpty()
                        join legalEntityProfiles in DbContext.LegalEntityProfiles on customer.LegalEntityProfileId
                            equals legalEntityProfiles.LegalEntityProfileId into gLegalEntityProfiles
                        from legalEntityProfiles in gLegalEntityProfiles.DefaultIfEmpty()
                        select new
                        {
                            budget.CompanyId,
                            budget.BudgetId,
                            budget.VendorId,
                            budget.ModifiedDate,
                            budget.CustomerId,
                            budget.BudgetCode,
                            budget.Discount,
                            budget.ContactName,
                            budget.CreatedDate,
                            budget.Warranty,
                            budget.Observation,
                            budget.Cover,
                            budget.Summary,
                            budget.ExpirationDate,
                            budget.PaymentMethod,
                            budget.AdditionalCost,
                            budget.IPI,
                            budget.DeliveryDate,
                            budget.DeliveryDescription,
                            budget.DiscountType,
                            budget.BudgetStatusId,
                            BudgetStatus = bStatus.Name,
                            budget.BudgetItems,
                            CustomerName = profiles.Name ?? legalEntityProfiles.CompanyName ?? budget.CustomerName,
                            customer.Profile,
                            customer.LegalEntityProfile,
                            BudgetValue = budget.BudgetItems.Sum(bi => bi.Quantity * bi.UnitPrice)
                                         - (budget.Discount ?? 0)
                                         + (budget.AdditionalCost ?? 0)
                        };

            switch (budgetStatus)
            {
                case BudgetStatus.Open:
                case BudgetStatus.Accepted:
                case BudgetStatus.Rejected:
                case BudgetStatus.SentToCustomer:
                    query = query.Where(b => b.BudgetStatusId == (int)budgetStatus);
                    break;
            }

            if (beginDate != null)
                query = query.Where(q => q.CreatedDate >= beginDate);

            if (endDate != null)
                query = query.Where(q => q.CreatedDate <= endDate);

            if (vendorId != 0)
                query = query.Where(v => v.VendorId.Equals(vendorId));

            if (!String.IsNullOrEmpty(productName))
                query = query.Where(x => x.BudgetItems.Any(bi => bi.ProductId.HasValue && bi.SpecialProductName.Contains(productName)));

            if (!String.IsNullOrEmpty(telephone))
                query =
                    query.Where(t => t.Profile.Phone.Equals(telephone) || t.LegalEntityProfile.Phone.Equals(telephone));

            return query.SortAndPage(sortExpression, startRowIndex, maximumRows, "CreatedDate desc");
        }
 /// <summary>
 /// This method returns Budgets
 /// </summary>
 /// <param name="companyId"></param>
 /// <param name="customerId"></param>
 /// <param name="budgetStatus"></param>
 /// <param name="sortExpression"></param>
 /// <param name="startRowIndex"></param>
 /// <param name="maximumRows"></param>
 /// <returns></returns> 
 public IQueryable GetBudgets(Int32 companyId, Int32? customerId, BudgetStatus budgetStatus, Int32 vendorId,
                              DateTime? beginDate, DateTime? endDate, String telephone, string sortExpression,
                              int startRowIndex, int maximumRows)
 {
     return GetBudgets(companyId, customerId, String.Empty, budgetStatus, vendorId, beginDate, endDate, telephone, sortExpression, startRowIndex, maximumRows);
 }