Exemplo n.º 1
0
 public static System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics> ItemLeadTimePercentage(string sku)
 {
     using (new zAppDev.DotNet.Framework.Profiling.Profiler("SLALeadTime", zAppDev.DotNet.Framework.Profiling.AppDevSymbolType.ClassOperation, "ItemLeadTimePercentage")) {
         DSS1_RetailerDriverStockOptimisation.BO.Item item = new DSS1_RetailerDriverStockOptimisation.BO.Item();
         System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics> stats = new System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics>();
         if ((sku == null || sku == ""))
         {
             return(stats);
         }
         else
         {
             try {
                 item = new DSS1_RetailerDriverStockOptimisation.DAL.Repository().GetById <DSS1_RetailerDriverStockOptimisation.BO.Item>(sku);
             }
             catch (System.Exception x) {
             }
         }
         foreach (var leadTime in item?.SLALeadTimes ?? Enumerable.Empty <DSS1_RetailerDriverStockOptimisation.BO.SLALeadTime>())
         {
             DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics stat = new DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics();
             stat.Item = item; stat.Percentage = (leadTime?.MonthlyPercentage ?? 0); stat.Month = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName((leadTime?.Month ?? 0)); stat.Threshold = 80; stats?.Add(stat);
         }
         return(stats);
     }
 }
 public static System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics> ItemDeliveryPercentageWithCriteria(System.Collections.Generic.List <int?> supplierIds, System.Collections.Generic.List <int?> warehouseIds, System.Collections.Generic.List <int?> businessUnitIds, System.Collections.Generic.List <int?> categoryIds, System.Collections.Generic.List <int?> subCategoryIds, System.Collections.Generic.List <int?> baseUnitIds, System.Collections.Generic.List <string> SKUs, DateTime?fromDate, DateTime?toDate)
 {
     using (new zAppDev.DotNet.Framework.Profiling.Profiler("SLADelivery", zAppDev.DotNet.Framework.Profiling.AppDevSymbolType.ClassOperation, "ItemDeliveryPercentageWithCriteria")) {
         System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics> stats = new System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics>();
         System.Collections.Generic.List <int?>   emptyIDs  = new System.Collections.Generic.List <int?>();
         System.Collections.Generic.List <string> emptySKUs = new System.Collections.Generic.List <string>();
         if ((warehouseIds == null))
         {
             warehouseIds = emptyIDs.ToList();
         }
         if ((SKUs == null))
         {
             SKUs = emptySKUs.ToList();
         }
         if ((businessUnitIds == null))
         {
             businessUnitIds = emptyIDs.ToList();
         }
         if ((categoryIds == null))
         {
             categoryIds = emptyIDs.ToList();
         }
         if ((subCategoryIds == null))
         {
             subCategoryIds = emptyIDs.ToList();
         }
         if ((baseUnitIds == null))
         {
             baseUnitIds = emptyIDs.ToList();
         }
         if ((supplierIds == null))
         {
             supplierIds = emptyIDs.ToList();
         }
         var _var0 = (fromDate?.Month ?? 0); var _var1 = (toDate?.Month ?? 0); System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLADelivery> filteredDeliveries = new DSS1_RetailerDriverStockOptimisation.DAL.Repository().Get <DSS1_RetailerDriverStockOptimisation.BO.SLADelivery>((a) => (SKUs.Count() == 0 || SKUs.Contains(a.Item.SKU)) && (businessUnitIds.Count() == 0 || businessUnitIds.Contains((a.Item.BusinessUnit.Id).GetValueOrDefault(0))) && (categoryIds.Count() == 0 || categoryIds.Contains((a.Item.Category.Id).GetValueOrDefault(0))) && (subCategoryIds.Count() == 0 || subCategoryIds.Contains((a.Item.SubCategory.Id).GetValueOrDefault(0))) && (baseUnitIds.Count() == 0 || baseUnitIds.Contains((a.Item.BaseUnit.Id).GetValueOrDefault(0))) && (supplierIds.Count() == 0 || supplierIds.Contains((a.Item.Supplier.Id).GetValueOrDefault(0))) && (warehouseIds.Count() == 0 || warehouseIds.Contains((a.Warehouse.Id).GetValueOrDefault(0))) && (fromDate == null || a.Month >= _var0) && (toDate == null || a.Month <= _var1));
         System.Collections.Generic.List <int?> uniqueMonths = filteredDeliveries?.Select((a) => a.Month).ToList().Distinct().ToList().OrderBy((a) => a).ToList();
         if (SKUs.Contains("4047706") && SKUs.Count() == 1)
         {
             zAppDev.DotNet.Framework.Utilities.DebugHelper.Log(zAppDev.DotNet.Framework.Utilities.DebugMessageType.Info, "SLADelivery", DSS1_RetailerDriverStockOptimisation.Hubs.EventsHub.RaiseDebugMessage, "Months: " + uniqueMonths.Count());
         }
         foreach (var i in uniqueMonths ?? Enumerable.Empty <int?>())
         {
             System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLADelivery> thisMonthsDeliveries = filteredDeliveries?.Where((a) => a.Month == i).ToList();
             if ((thisMonthsDeliveries?.Count() == 0))
             {
                 continue;
             }
             if (SKUs.Contains("4047706") && SKUs.Count() == 1)
             {
                 zAppDev.DotNet.Framework.Utilities.DebugHelper.Log(zAppDev.DotNet.Framework.Utilities.DebugMessageType.Info, "SLADelivery", DSS1_RetailerDriverStockOptimisation.Hubs.EventsHub.RaiseDebugMessage, "thisMonthsDeliveries: " + (thisMonthsDeliveries?.Count() ?? 0));
             }
             DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics stat = new DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics();
             stat.Percentage = (thisMonthsDeliveries?.Sum((a) => a.Percentage) ?? 0) / (thisMonthsDeliveries?.Count() ?? 0); stat.Percentage = Math.Round((stat?.Percentage ?? 0), 2); stat.Month = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName((i).GetValueOrDefault(0)); stat.Threshold = 80; stats?.Add(stat);
         }
         return(stats);
     }
 }
Exemplo n.º 3
0
 public static System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics> CalculateOrderForecastAccuracy(System.Collections.Generic.List <int?> supplierIds, System.Collections.Generic.List <int?> warehouseIds, System.Collections.Generic.List <int?> businessUnitIds, System.Collections.Generic.List <int?> categoryIds, System.Collections.Generic.List <int?> subCategoryIds, System.Collections.Generic.List <int?> baseUnitIds, System.Collections.Generic.List <string> SKUs, DateTime?fromDate, DateTime?toDate)
 {
     using (new zAppDev.DotNet.Framework.Profiling.Profiler("Platform", zAppDev.DotNet.Framework.Profiling.AppDevSymbolType.ClassOperation, "CalculateOrderForecastAccuracy")) {
         System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics> stats = new System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics>();
         System.Collections.Generic.List <int?>   emptyIDs  = new System.Collections.Generic.List <int?>();
         System.Collections.Generic.List <string> emptySKUs = new System.Collections.Generic.List <string>();
         if ((warehouseIds == null))
         {
             warehouseIds = emptyIDs.ToList();
         }
         if ((SKUs == null))
         {
             SKUs = emptySKUs.ToList();
         }
         if ((businessUnitIds == null))
         {
             businessUnitIds = emptyIDs.ToList();
         }
         if ((categoryIds == null))
         {
             categoryIds = emptyIDs.ToList();
         }
         if ((subCategoryIds == null))
         {
             subCategoryIds = emptyIDs.ToList();
         }
         if ((baseUnitIds == null))
         {
             baseUnitIds = emptyIDs.ToList();
         }
         if ((supplierIds == null))
         {
             supplierIds = emptyIDs.ToList();
         }
         var _var0 = (fromDate?.Month ?? 0); var _var1 = (toDate?.Month ?? 0); System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.Platform> filteredPlatforms = new DSS1_RetailerDriverStockOptimisation.DAL.Repository().Get <DSS1_RetailerDriverStockOptimisation.BO.Platform>((a) => (SKUs.Count() == 0 || SKUs.Contains(a.Item.SKU)) && (businessUnitIds.Count() == 0 || businessUnitIds.Contains((a.Item.BusinessUnit.Id).GetValueOrDefault(0))) && (categoryIds.Count() == 0 || categoryIds.Contains((a.Item.Category.Id).GetValueOrDefault(0))) && (subCategoryIds.Count() == 0 || subCategoryIds.Contains((a.Item.SubCategory.Id).GetValueOrDefault(0))) && (baseUnitIds.Count() == 0 || baseUnitIds.Contains((a.Item.BaseUnit.Id).GetValueOrDefault(0))) && (supplierIds.Count() == 0 || supplierIds.Contains((a.Item.Supplier.Id).GetValueOrDefault(0))) && (warehouseIds.Count() == 0 || warehouseIds.Contains((a.Warehouse.Id).GetValueOrDefault(0))) && (fromDate == null || int.Parse(a.Month) >= _var0) && (toDate == null || int.Parse(a.Month) <= _var1));
         System.Collections.Generic.List <int?> uniqueMonths = filteredPlatforms?.Select((a) => int.Parse(a.Month)).Select(_n => _n as int?).ToList().Distinct().ToList().OrderBy((a) => a).ToList();
         foreach (var i in uniqueMonths ?? Enumerable.Empty <int?>())
         {
             System.Collections.Generic.List <DSS1_RetailerDriverStockOptimisation.BO.Platform> thisMonthsPlatforms = filteredPlatforms?.Where((a) => int.Parse(a.Month) == i).ToList();
             if ((thisMonthsPlatforms?.Count() == 0))
             {
                 continue;
             }
             DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics stat = new DSS1_RetailerDriverStockOptimisation.BO.SLAStatistics();
             stat.Percentage = (thisMonthsPlatforms?.Sum((a) => a.percentage) ?? 0) / (thisMonthsPlatforms?.Count() ?? 0); stat.Percentage = Math.Round((stat?.Percentage ?? 0), 2) / 100; stat.Month = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName((i).GetValueOrDefault(0)); stat.Threshold = 80; stats?.Add(stat);
         }
         return(stats);
     }
 }