public BudgetCashflowDivisionItemDto(string currencyIdString, string currencyCode, double currencyRate, string divisionIdString, string unitIdString, double total, BudgetCashflowCategoryLayoutOrder layoutOrder)
        {
            int.TryParse(currencyIdString, out var currencyId);
            CurrencyId = currencyId;

            int.TryParse(unitIdString, out var unitId);
            UnitId = unitId;

            int.TryParse(divisionIdString, out var divisionId);
            DivisionId = divisionId;

            if (currencyCode != "IDR")
            {
                CurrencyNominal = total;
                ActualNominal   = total * currencyRate;
            }
            else
            {
                Nominal       = total;
                ActualNominal = total;
            }

            LayoutOrder = layoutOrder;
            LayoutName  = layoutOrder.ToDescriptionString();
        }
コード例 #2
0
        public List <BudgetCashflowItemDto> GetBudgetCashflowUnit(BudgetCashflowCategoryLayoutOrder layoutOrder, int unitId, DateTimeOffset dueDate)
        {
            var queryResult = GetDebtAndDispositionSummary(layoutOrder, unitId, dueDate, 0);

            var result = queryResult
                         .GroupBy(element => new { element.CurrencyId, element.UnitId, element.DivisionId })
                         .Select(element => new BudgetCashflowItemDto(
                                     element.Key.CurrencyId,
                                     element.FirstOrDefault().CurrencyCode,
                                     element.FirstOrDefault().CurrencyRate,
                                     element.Sum(s => s.Total),
                                     layoutOrder,
                                     element.Key.UnitId,
                                     element.Key.DivisionId
                                     ))
                         .ToList();

            if (result.Count <= 0)
            {
                result = new List <BudgetCashflowItemDto>()
                {
                    new BudgetCashflowItemDto(0, 0, 0, 0, 0, layoutOrder)
                };
            }


            return(result);
        }
コード例 #3
0
 public BudgetCashflowWorstCaseItem(BudgetCashflowCategoryLayoutOrder layoutOrder, int currencyId, double currencyNominal, double nominal, double actualNominal, int budgetCashflowWorstCaseId, int unitId)
 {
     LayoutOrder               = layoutOrder;
     CurrencyId                = currencyId;
     CurrencyNominal           = currencyNominal;
     Nominal                   = nominal;
     ActualNominal             = actualNominal;
     BudgetCashflowWorstCaseId = budgetCashflowWorstCaseId;
     UnitId = unitId;
 }
 public BudgetCashflowItemDto(int id, int currencyId, double currencyNominal, double nominal, double actualNominal, BudgetCashflowCategoryLayoutOrder layoutOrder)
 {
     Id              = id;
     CurrencyId      = currencyId;
     CurrencyNominal = currencyNominal;
     Nominal         = nominal;
     ActualNominal   = actualNominal;
     LayoutOrder     = layoutOrder;
     LayoutName      = layoutOrder.ToDescriptionString();
 }
 public BudgetCashflowItemDto(int currencyId, double currencyNominal, double nominal, double actualNominal, double bestCaseCurrencyNominal, double bestCaseNominal, double bestCaseActualNominal, BudgetCashflowCategoryLayoutOrder layoutOrder)
 {
     CurrencyId              = currencyId;
     CurrencyNominal         = currencyNominal;
     Nominal                 = nominal;
     ActualNominal           = actualNominal;
     BestCaseCurrencyNominal = bestCaseCurrencyNominal;
     BestCaseNominal         = bestCaseNominal;
     BestCaseActualNominal   = bestCaseActualNominal;
     LayoutOrder             = layoutOrder;
 }
 public BudgetCashflowDivisionItemDto(int currencyId, int divisionId, int unitId, double nominal, double currencyNominal, double actualNominal, BudgetCashflowCategoryLayoutOrder layoutOrder)
 {
     CurrencyId      = currencyId;
     CurrencyNominal = currencyNominal;
     Nominal         = nominal;
     ActualNominal   = actualNominal;
     LayoutOrder     = layoutOrder;
     LayoutName      = layoutOrder.ToDescriptionString();
     UnitId          = unitId;
     DivisionId      = divisionId;
 }
コード例 #7
0
        public static string ToDescriptionString(this BudgetCashflowCategoryLayoutOrder me)
        {
            var enumType   = me.GetType();
            var memberInfo = enumType.GetMember(me.ToString());

            if (memberInfo != null && memberInfo.Length > 0)
            {
                var _attr = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
                if (_attr != null && _attr.Count() > 0)
                {
                    return(((DescriptionAttribute)_attr.ElementAt(0)).Description);
                }
            }
            return(me.ToString());
        }
コード例 #8
0
 public IActionResult GetBudgetCashflowBestCase([FromQuery] BudgetCashflowCategoryLayoutOrder layoutOrder, [FromQuery] int unitId, [FromQuery] DateTimeOffset dueDate)
 {
     try
     {
         VerifyUser();
         var result = _service.GetBudgetCashflowUnit(layoutOrder, unitId, dueDate);
         return(Ok(new
         {
             apiVersion = ApiVersion,
             statusCode = General.OK_STATUS_CODE,
             message = General.OK_MESSAGE,
             data = result
         }));
     }
     catch (Exception e)
     {
         return(StatusCode(General.INTERNAL_ERROR_STATUS_CODE, e.Message + " " + e.StackTrace));
     }
 }
コード例 #9
0
        public BudgetCashflowDivisionDto GetBudgetCashflowDivision(BudgetCashflowCategoryLayoutOrder layoutOrder, int divisionId, DateTimeOffset dueDate)
        {
            //var queryResult = GetDebtAndDispositionSummary(layoutOrder, 0, dueDate, divisionId);

            //var result = queryResult
            //    .GroupBy(element => new { element.CurrencyId, element.UnitId })
            //    .Select(element => new BudgetCashflowDivisionItemDto(
            //        element.Key.CurrencyId,
            //        element.FirstOrDefault().CurrencyCode,
            //        element.FirstOrDefault().CurrencyRate,
            //        element.FirstOrDefault().DivisionId,
            //        element.Key.UnitId,
            //        element.Sum(s => s.Total),
            //        layoutOrder
            //        ))
            //    .ToList();

            //if (result.Count <= 0)
            //{
            //    result = new List<BudgetCashflowDivisionItemDto>() { new BudgetCashflowDivisionItemDto("0", "", 0, "0", "0", 0, layoutOrder) };
            //}

            //var unitIds = result.Where(element => element.UnitId != 0).Select(element => element.UnitId).Distinct().ToList();


            //return new BudgetCashflowDivisionDto(unitIds, result);

            var unitIds = _units.Where(element => element.DivisionId == divisionId).Select(element => element.Id).ToList();
            var query   = _dbContext.BudgetCashflowWorstCases.Where(entity => entity.Year == dueDate.AddMonths(1).Year&& entity.Month == dueDate.AddMonths(1).Month);

            if (divisionId > 0)
            {
                query = query.Where(entity => unitIds.Contains(entity.UnitId));
            }

            unitIds = query.Select(entity => entity.UnitId).Distinct().ToList();

            var models = query.ToList();

            var result = new List <BudgetCashflowDivisionItemDto>();

            if (models.Count > 0)
            {
                var modelIds = models.Select(model => model.Id).ToList();
                result = _dbContext
                         .BudgetCashflowWorstCaseItems
                         .Where(entity => modelIds.Contains(entity.BudgetCashflowWorstCaseId) && entity.LayoutOrder == layoutOrder)
                         .GroupBy(element => new { element.CurrencyId, element.UnitId })
                         .Select(element => new BudgetCashflowDivisionItemDto(
                                     element.Key.CurrencyId,
                                     divisionId,
                                     element.Key.UnitId,
                                     element.Sum(s => s.Nominal),
                                     element.Sum(s => s.CurrencyNominal),
                                     element.Sum(s => s.ActualNominal),
                                     layoutOrder))
                         .OrderBy(entity => entity.LayoutOrder)
                         .ToList();
            }

            if (result.Count <= 0)
            {
                result = new List <BudgetCashflowDivisionItemDto>()
                {
                    new BudgetCashflowDivisionItemDto("0", "", 0, "0", "0", 0, layoutOrder)
                };
            }

            return(new BudgetCashflowDivisionDto(unitIds, result));
        }
コード例 #10
0
        private List <DebtAndDispositionSummaryDto> GetDebtAndDispositionSummary(BudgetCashflowCategoryLayoutOrder layoutOrder, int unitId, DateTimeOffset dueDate, int divisionId)
        {
            var budgetingCategoryNames = new List <string>();
            var budgetingCategoryIds   = new List <int>();

            var result = new List <DebtAndDispositionSummaryDto>();

            switch (layoutOrder)
            {
            case BudgetCashflowCategoryLayoutOrder.ImportedRawMaterial:
                budgetingCategoryNames = new List <string>()
                {
                    "BAHAN BAKU"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, true, divisionId, true));

            case BudgetCashflowCategoryLayoutOrder.LocalRawMaterial:
                budgetingCategoryNames = new List <string>()
                {
                    "BAHAN BAKU"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, true));

            case BudgetCashflowCategoryLayoutOrder.AuxiliaryMaterial:
                budgetingCategoryNames = new List <string>()
                {
                    "BAHAN PEMBANTU"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.Embalage:
                budgetingCategoryNames = new List <string>()
                {
                    "EMBALAGE"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.Coal:
                budgetingCategoryNames = new List <string>()
                {
                    "BATU BARA"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.FuelOil:
                budgetingCategoryNames = new List <string>()
                {
                    "BBM & PELUMAS"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.SparePartsMachineMaintenance:
                budgetingCategoryNames = new List <string>()
                {
                    "SPARE PART & PEMELIHARAAN MESIN"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.GeneralAdministrativeBuildingMaintenance:
                budgetingCategoryNames = new List <string>()
                {
                    "PEMELIHARAAN GEDUNG"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.GeneralAdministrativeStationary:
                budgetingCategoryNames = new List <string>()
                {
                    "ALAT TULIS"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.GeneralAdministrativeCorporateHousehold:
                budgetingCategoryNames = new List <string>()
                {
                    "URTP"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.GeneralAdministrativeVehicleCost:
                budgetingCategoryNames = new List <string>()
                {
                    "KENDARAAN (BEBAN)"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.GeneralAdministrativeOthersCost:
                budgetingCategoryNames = new List <string>()
                {
                    "LAIN-LAIN"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.MachineryPurchase:
                budgetingCategoryNames = new List <string>()
                {
                    "MESIN"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.VehiclePurchase:
                budgetingCategoryNames = new List <string>()
                {
                    "KENDARAAN"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.InventoryPurchase:
                budgetingCategoryNames = new List <string>()
                {
                    "INVENTARIS"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            case BudgetCashflowCategoryLayoutOrder.ComputerToolsPurchase:
                budgetingCategoryNames = new List <string>()
                {
                    "ALAT KOMPUTER"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            //case BudgetCashflowCategoryLayoutOrder.ProductionToolsMaterialsPurchase:
            //    budgetingCategoryNames = new List<string>() { "ALAT DAN BAHAN PRODUKSI" };
            //    budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
            //    return GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false);
            case BudgetCashflowCategoryLayoutOrder.ProjectPurchase:
                budgetingCategoryNames = new List <string>()
                {
                    "PROYEK"
                };
                budgetingCategoryIds = _budgetingCategories.Where(element => budgetingCategoryNames.Contains(element.Name.ToUpper())).Select(element => element.Id).ToList();
                return(GetDebtDispositionSummary(budgetingCategoryIds, unitId, dueDate, false, divisionId, false));

            default:
                return(result);
            }
        }