コード例 #1
0
        /// <summary>
        /// Должен переопределиться для регистрации данных для отчета.
        /// </summary>
        /// <param name="token">Маркер безопасности.</param>
        /// <param name="report">Создаваемый отчет.</param>
        /// <param name="input">Значения полученные с формы ввода.</param>
        /// <returns>Название файла.</returns>
        public override string RegisterData(SecurityToken token, LocalReport report, IncomingDocItemsReportInput input)
        {
            var incomingDoc = RemontinkaServer.Instance.EntitiesFacade.GetIncomingDoc(token, input.IncomingDocID);

            if (incomingDoc == null)
            {
                throw new Exception("Нет такого документа");
            } //if

            var items      = RemontinkaServer.Instance.EntitiesFacade.GetIncomingDocItems(token, input.IncomingDocID).ToList();
            var dataSource = new ReportDataSource("ReportDataSet", items);

            report.DataSources.Add(dataSource);

            report.SetParameters(new ReportParameter("DocDate", Utils.DateTimeToString(incomingDoc.DocDate)));
            report.SetParameters(new ReportParameter("WarehouseTitle", incomingDoc.WarehouseTitle));
            report.SetParameters(new ReportParameter("ContractorLegalName", incomingDoc.ContractorLegalName));
            report.SetParameters(new ReportParameter("DocNumber", incomingDoc.DocNumber));
            report.SetParameters(new ReportParameter("DocDescription", incomingDoc.DocDescription ?? string.Empty));
            report.SetParameters(new ReportParameter("TotalCount", Utils.IntToString(items.Count)));

            var totalSum = items.Sum(i => i.Total * i.InitPrice);

            report.SetParameters(new ReportParameter("TotalSum", Utils.DecimalToString(totalSum)));
            report.SetParameters(new ReportParameter("TotalRusSum", RusCurrency.StrRur((double)totalSum)));

            return(string.Format("Приходная накладная номер {0} от {1:dd.MM.yyyy}", incomingDoc.DocNumber, incomingDoc.DocDate));
        }
コード例 #2
0
        /// <summary>
        /// Вызывается, когда необходимо обновление источника данных для отчета.
        /// </summary>
        /// <param name="token">Токен безопасности.</param>
        /// <param name="report">Отчет.</param>
        /// <param name="reportParameters">Параметры отчета.</param>
        public override void UpdateDataSource(SecurityToken token, IncomingDocItemsXtraReport report,
                                              IncomingDocItemsReportParameters reportParameters)
        {
            var incomingDoc = RemontinkaServer.Instance.EntitiesFacade.GetIncomingDoc(token, reportParameters.IncomingDocID);

            if (incomingDoc == null)
            {
                throw new Exception("Нет такого документа");
            } //if

            report.Parameters["DocDate"].Value             = incomingDoc.DocDate;
            report.Parameters["WarehouseTitle"].Value      = incomingDoc.WarehouseTitle;
            report.Parameters["ContractorLegalName"].Value = incomingDoc.ContractorLegalName;
            report.Parameters["DocNumber"].Value           = incomingDoc.DocNumber;
            report.Parameters["DocDescription"].Value      = incomingDoc.DocDescription;

            var items    = RemontinkaServer.Instance.EntitiesFacade.GetIncomingDocItems(token, reportParameters.IncomingDocID).ToList();
            var totalSum = items.Sum(i => i.Total * i.InitPrice);

            report.Parameters["TotalRusSum"].Value = RusCurrency.StrRur((double)totalSum);
            report.DataSource = items;
        }
コード例 #3
0
        /// <summary>
        /// Создает html представление отчетов связанных с заказами.
        /// </summary>
        /// <param name="token">Токен безопасности.</param>
        /// <param name="customReportID">Код необходимого отчета. </param>
        /// <param name="repairOrder">Связанный заказ.</param>
        /// <returns>Сгенерированный результат.</returns>
        public string CreateRepairOrderReport(SecurityToken token, Guid?customReportID, RepairOrderDTO repairOrder)
        {
            _logger.InfoFormat("Начало создания отчета по объекту заказа {0} для заказа {1} пользователем {2}",
                               customReportID,
                               repairOrder.RepairOrderID, token.LoginName);
#if CLIENT
            var customReport = ClientCore.Instance.DataStore.GetCustomReportItem(customReportID);
#else
            var customReport = RemontinkaServer.Instance.EntitiesFacade.GetCustomReportItem(token, customReportID);
#endif


            if (customReport == null || string.IsNullOrWhiteSpace(customReport.HtmlContent))
            {
                _logger.ErrorFormat("Отчет не найден или не задан {0}", customReportID);
                return(NotFoundMessage);
            }  //if

            var contextBuilder = new ContextStringBuilder();

#if CLIENT
            var branch = ClientCore.Instance.DataStore.GetBranch(repairOrder.BranchIDGuid);
#else
            var branch = RemontinkaServer.Instance.EntitiesFacade.GetBranch(token, repairOrder.BranchID);
            var domain = RemontinkaServer.Instance.EntitiesFacade.GetUserDomain(token);
            contextBuilder.Add(new RepairOrderGlobalReferenceContextItem(repairOrder, domain));
#endif

            contextBuilder.Add(new TodayContextItem());
            contextBuilder.Add(new RepairOrderContextItem(repairOrder));
            contextBuilder.Add(new BranchContextItem(branch));

#if CLIENT
#else
            contextBuilder.Add(new BarcodeContextItem(repairOrder));
#endif

            foreach (
                var key in
                _contextTableMap.Keys.Where(i => customReport.HtmlContent.Contains(string.Format("{{{0}}}", i))))
            {
                contextBuilder.Add(new SimpleContextItem(key, _contextTableMap[key](token, repairOrder, branch)));
            }  //foreach
#if CLIENT
            var deviceInfo = ClientCore.Instance.DataStore.GetDeviceItemsTotal(repairOrder.RepairOrderIDGuid);
            var workInfo   = ClientCore.Instance.DataStore.GetWorkItemsTotal(repairOrder.RepairOrderIDGuid);
#else
            var deviceInfo = RemontinkaServer.Instance.DataStore.GetDeviceItemsTotal(repairOrder.RepairOrderID);
            var workInfo   = RemontinkaServer.Instance.DataStore.GetWorkItemsTotal(repairOrder.RepairOrderID);
#endif
            var totalCount = 0.0M;
            var totalPrice = 0.0M;
            if (deviceInfo != null)
            {
                totalCount = (decimal?)deviceInfo.Count ?? decimal.Zero;
                totalPrice = (decimal?)deviceInfo.TotalAmount ?? decimal.Zero;
            }  //if

            if (workInfo != null)
            {
                totalCount += (decimal?)workInfo.Count ?? 0;
                totalPrice += (decimal?)workInfo.Amount ?? decimal.Zero;
            }  //if

            contextBuilder.Add(new SimpleContextItem(ContextConstants.TotalItemsCount, DecimalToString(totalCount)));
            contextBuilder.Add(new SimpleContextItem(ContextConstants.TotalItemsAmount, DecimalToString(totalPrice)));
            contextBuilder.Add(new SimpleContextItem(ContextConstants.TotalItemsAmountRus,
                                                     RusCurrency.StrRur((double)totalPrice)));

            return(contextBuilder.Create(customReport.HtmlContent));
        }