Example #1
0
        private BatchReportModel LoadSaleEvents(BatchKey key, int pageNumber)
        {
            var events = m_saleEventRepository.GetAllocationsByBatch(key).ToList();

            var aggregatedAllocations = new List <SaleEventAllocationModel>(events.Count);

            foreach (var evt in events)
            {
                if (aggregatedAllocations.Any(ag => ag.Populate(evt, m_amountProcessor)))
                {
                    continue;
                }

                var newRecord = new SaleEventAllocationModel();
                newRecord.Populate(evt, m_amountProcessor);
                aggregatedAllocations.Add(newRecord);
            }

            var entry = new BatchSaleEventsReportEntry(key);

            entry.SaleEvents.AddRange(aggregatedAllocations.OrderByDescending(a => a.SortDt));

            var result = new BatchReportModel();

            result.Report.Add(entry);

            return(result);
        }
Example #2
0
        private BatchReportModel LoadSegments(BatchKey key, int pageNumber)
        {
            var segments = m_batchRepository.GetBatches(key).OrderBy(b => b.Created).ToList();

            var entry = new BatchSegmentsReportEntry(key);

            foreach (var b in segments)
            {
                entry.Segments.Add(new BatchSegmentModel
                {
                    SegmentId = b.Id,
                    Amount    = new Amount(b.Volume, m_unitRepository.GetUnit(b.UnitId)).ToString(),
                    Author    = m_userRepository.GetUserNick(b.AuthorId),
                    Date      = StringUtil.FormatDate(b.Created),
                    Price     = $"{StringUtil.FormatPrice(b.ProductionWorkPrice ?? 0m)} CZK",
                    HasRecipe = b.RecipeId != null
                });
            }

            var result = new BatchReportModel();

            result.Report.Add(entry);

            return(result);
        }
Example #3
0
        private BatchReportModel LoadOrders(BatchKey key, int ordersPageNumber)
        {
            var orders = m_ordersFacade.GetOrdersByUsedBatch(key, c_pageSize, ordersPageNumber).ToList();

            var entry = new BatchOrdersReportEntry(key)
            {
                CanLoadMoreOrders = orders.Count == c_pageSize,
                NextOrdersPage    = ordersPageNumber + 1
            };

            foreach (var entity in orders)
            {
                entry.Orders.Add(new BatchOrderModel
                {
                    OrderId          = entity.Item1.Id,
                    Customer         = entity.Item1.CustomerEmail,
                    OrderNumber      = entity.Item1.OrderNumber,
                    PurchaseDate     = StringUtil.FormatDateTime(entity.Item1.PurchaseDate),
                    Status           = m_orderStatusRepository.Translate(entity.Item1.OrderStatusId),
                    Quantity         = StringUtil.FormatDecimal(entity.Item2),
                    IsAllocation     = !OrderStatus.IsSent(entity.Item1.OrderStatusId),
                    AllocationHandle = OrderStatus.IsSent(entity.Item1.OrderStatusId) ? null : $"{entity.Item1.Id}|{key.ToString(m_batchFacade)}"
                });
            }

            var result = new BatchReportModel();

            result.Report.Add(entry);

            return(result);
        }
Example #4
0
        public ActionResult GenerateBatchStagesSummatry(BatchReportModel model)
        {
            if (ModelState.IsValid)
            {
                var dataset = _reportService.BreedingMeasuresFollowUp(model.BatchId, null, DateTime.Today.AbsoluteEnd());

                var reportFactory = new ReportFactory();

                var parameters = new Dictionary <string, string>
                {
                    { "BatchId", model.BatchId.ToString() },
                    { "DateFrom", null },
                    { "DateTo", null }
                };

                reportFactory.SetPathCompleto(Server.MapPath("~/Reports/BatchStagesSummary.rdl"))
                .SetDataSource("DataSet1", dataset)
                .SetParametro(parameters);

                byte[] archivo = reportFactory.Renderizar(model.ReportType);

                return(File(archivo, reportFactory.MimeType));
            }
            return(null);
        }
Example #5
0
        public ActionResult BatchStagesSummary(BatchReportModel model)
        {
            var activeBatches = _batchService.GetAllActiveComplete().OrderBy(b => b.Number).ToList();

            ViewBag.BatchesSelectList = new SelectList(activeBatches, "Id", "Name");

            return(View(model));
        }
Example #6
0
        private BatchReportModel LoadPriceComponents(BatchKey key, int queryLoadPriceComponentsPage)
        {
            var entry = new PriceComponentsReportEntry(key);

            entry.PriceComponents.AddRange(m_batchFacade.GetPriceComponents(key));

            var result = new BatchReportModel();

            result.Report.Add(entry);

            return(result);
        }
Example #7
0
 public static void CopyPlotSelection(BatchReportModel oldReport, BatchReportModel newReport)
 {
     if (oldReport != null && newReport != null)
     {
         foreach (var _plot in oldReport.Plots)
         {
             var matchingPlots = newReport.Plots.Where(p => p.Label == _plot.Label);
             foreach (var _matchingPlot in matchingPlots)
             {
                 _matchingPlot.Selected = _plot.Selected;
             }
         }
     }
 }
        //TOGGLE FOR TEMPORARY TESTING
        private void RunBacktestButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            UnbindInitializationModels();
            UnbindReportModels();

            _backtest.Clear();
            _activityModel.Status = "Backtest started.";
            var tickDataGroups = BacktestingTickFileControl.GetSelectedFilePaths();

            _activityModel.NumberTestsToRun     = tickDataGroups.Count;
            _activityModel.NumberTestsCompleted = 0;

            foreach (var _tickDataGroup in tickDataGroups)
            {
                var _backtestingModel = new BacktestingModel();
                _backtestingModel.CacheWait = _backtestingConfigurationModel.CacheWait;
                var _reportModel = new BatchReportModel(_backtestingModel, _activityModel /*, updatePlots*/);
                var info         = TickFileNameInfo.GetTickFileInfoFromLongName(_tickDataGroup.First());
                _reportModel.ReportName = "Y:" + info.Year.ToString() + ",M:" + info.Month.ToString() + ",D:" + info.Day.ToString();

                _backtest.AddRun(_backtestingModel, _reportModel);

                _reportModel.RegisterDispatcher(DispatchableType.Fill, FillsTab.Dispatcher);
                _reportModel.RegisterDispatcher(DispatchableType.Indicator, IndicatorTab.Dispatcher);
                _reportModel.RegisterDispatcher(DispatchableType.Message, MessagesTab.Dispatcher);
                _reportModel.RegisterDispatcher(DispatchableType.Order, OrdersTab.Dispatcher);
                _reportModel.RegisterDispatcher(DispatchableType.Plot, BacktestPlotter.Dispatcher);
                _reportModel.RegisterDispatcher(DispatchableType.Position, PositionTab.Dispatcher);

                BindInitializationModels();

                _backtestingModel.LoadResponse(_backtestingConfigurationModel.GetFreshResponseInstance());
                _backtestingModel.LoadTickData(_tickDataGroup);
                _backtestingModel.Play(_backtestingConfigurationModel.SelectedPlayToValue);
            }

            Task.Factory.StartNew(() =>
            {
                _activityModel.AllRunsCompleted.WaitOne();
                if (_backtest.BacktestReports.Any())
                {
                    _backtest.SelectedReport = _backtest.BacktestReports.First();
                    BindStatisticsModels("Results");
                }
            });
        }
Example #9
0
        public BatchReportModel QueryBatches(BatchReportQuery query)
        {
            if (query.LoadOrdersPage != null)
            {
                return(LoadOrders(query.ToKey(), query.LoadOrdersPage.Value));
            }
            else if (query.LoadSaleEventsPage != null)
            {
                return(LoadSaleEvents(query.ToKey(), query.LoadSaleEventsPage.Value));
            }
            else if (query.LoadSegmentsPage != null)
            {
                return(LoadSegments(query.ToKey(), query.LoadSegmentsPage.Value));
            }
            else if (query.LoadPriceComponentsPage != null)
            {
                return(LoadPriceComponents(query.ToKey(), query.LoadPriceComponentsPage.Value));
            }

            var pageSize   = query.HasKey ? 1 : c_pageSize;
            var pageNumber = query.HasKey ? 0 : query.PageNumber;

            IPurchaseOrder order = null;

            if (query.RelativeToOrderId != null)
            {
                order = m_orderRepository.GetOrder(query.RelativeToOrderId.Value);

                if (order == null)
                {
                    throw new InvalidOperationException("Invalid entity reference");
                }

                pageSize   = 1000;
                pageNumber = 0;
            }

            var sql = m_database.Sql().Call("LoadBatchesReport")
                      .WithParam("@projectId", m_session.Project.Id)
                      .WithParam("@pageSize", pageSize)
                      .WithParam("@pageNumber", pageNumber)
                      .WithParam("@batchId", query.HasKey ? query.ToKey().UnsafeToString() : null)
                      .WithParam("@materialId", query.MaterialId)
                      .WithParam("@orderNumber", ToProperNull(query.OrderNumber))
                      .WithParam("@batchNumber", ToProperNull(query.BatchNumberQuery?.Replace("*", "%")))
                      .WithParam("@dtFrom", query.From)
                      .WithParam("@dtTo", query.To)
                      .WithParam("@closed", query.ClosedBatches)
                      .WithParam("@locked", query.LockedBatches)
                      .WithParam("@inventoryTypeId", query.InventoryTypeId)
                      .WithParam("@onlyProduced", query.ProducedOnly)
                      .WithParam("@onlyBought", query.PurchasedOnly)
                      .WithParam("@compositionId", query.CompositionId)
                      .WithParam("@componentId", query.ComponentId)
                      .WithParam("@orderId", query.RelativeToOrderId)
                      .WithParam("@onlyBlocking", query.BlockedBatchesOnly)
                      .WithParam("@segmentId", query.SegmentId)
                      .WithParam("@invoiceNr", ToProperNull(query.InvoiceNr));

            var result = new BatchReportModel {
                Query = query
            };

            var rawEntries = sql.MapRows(MapEntry);

            result.Report.AddRange(rawEntries);
            result.CanLoadMore = (result.Report.Count == c_pageSize);

            foreach (var b in result.Report.OfType <BatchReportEntry>())
            {
                var material = m_materialRepository.GetMaterialById(b.MaterialId);

                if (b.IsClosed)
                {
                    b.AvailableAmount = "0";
                }
                else
                {
                    /*
                     * var available = m_batchFacade.GetAvailableAmount(b.BatchKey);
                     * b.AvailableAmount = $"{StringUtil.FormatDecimal(available.Value)} {available.Unit.Symbol}";
                     * b.Available = available;
                     */
                    var available = new Amount(b.AvailableAmountValue, m_unitRepository.GetUnit(b.AvailableAmountUnitId));

                    available         = m_amountProcessor.Convert(available, material.NominalUnit);
                    b.AvailableAmount = $"{StringUtil.FormatDecimal(available.Value)} {available.Unit.Symbol}";
                    b.Available       = available;
                }

                var totalUnit   = m_unitRepository.GetUnitBySymbol(b.TotalAmountUnitName);
                var totalAmount = new Amount(b.TotalAmountValue, totalUnit);
                totalAmount = m_amountProcessor.Convert(totalAmount, material.NominalUnit);

                b.BatchVolume = $"{StringUtil.FormatDecimal(totalAmount.Value)} {totalAmount.Unit.Symbol}";

                //b.NoDelReason = m_batchFacade.GetDeletionBlockReasons(b.BatchId).FirstOrDefault();
                b.CanDelete = !(b.HasStockEvents || b.NumberOfCompositions > 0 || b.NumberOfOrders > 0 || b.NumberOfSaleEvents > 0);

                if (b.HasStockEvents)
                {
                    PopulateStockEventCounts(b);
                }

                PopulateStockEventSuggestions(b);
            }

            if ((query.HasKey) && (result.Report.Count == 0))
            {
                result.Report.Add(new DeletedBatchReportEntry(query.ToKey()));
                return(result);
            }

            if (query.CompositionId != null)
            {
                PopulateComponentAmounts(BatchKey.Parse(query.CompositionId), result.Report);
                result.CustomField1Name = "Použito";
            }
            else if (query.ComponentId != null)
            {
                PopulateCompositionAmounts(BatchKey.Parse(query.ComponentId), result.Report);
                result.CustomField1Name = "Použito";
            }
            else if (query.RelativeToOrderId != null)
            {
                result.Report           = PopulateRelativeToOrder(order, result.Report);
                result.CustomField1Name = "Množství";
                result.CustomField3Name = "Položka";
                result.CustomField2Name = "Balil";
            }

            return(result);
        }
Example #10
0
 public void AddRun(BacktestingModel testModel, BatchReportModel reportModel)
 {
     _backtestModels.Add(testModel);
     _backtestReports.Add(reportModel);
 }