Ejemplo n.º 1
0
        /// <summary>
        /// Метод, формирующий отчет; вызывается подсистемой ReportService
        /// </summary>
        protected override void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData reportData)
        {
            // Получаем идентификатор тендра из переданных параметров
            Guid TenderID = (Guid)reportData.Params.GetParam("TenderID").Value;

            // Получаем все данные для постоения отчета:
            ThisReportData data = new ThisReportData(reportData, TenderID);

            data.ViewType = (Int32)reportData.Params.GetParam("ViewType").Value;
            if (null == data.Main)
            {
                writeEmptyBody(reportData.RepGen, String.Format(
                                   "Указанное описание конкурса в Системе не найдно (заданный идентификатор - {0})",
                                   TenderID.ToString().ToUpper()));
                return;
            }
            reportData.RepGen.WriteLayoutMaster();
            reportData.RepGen.StartPageSequence();
            reportData.RepGen.StartPageBody();
            reportData.RepGen.Header(xmlEncode(String.Format(
                                                   "Конкурс {0}\"{1}\"",
                                                   (null == data.Main["Number"] ? "" : "№ " + data.Main["Number"] + ", "),
                                                   data.Main["Tender"]
                                                   )));

            // Отображение данных тендера:
            writeMainData(reportData.RepGen, data);

            reportData.RepGen.EndPageBody();
            reportData.RepGen.EndPageSequence();
        }
Ejemplo n.º 2
0
 // Выводит итоговые финансовые данные по проектам
 private void writeSumProjectDataRow(XslFOProfileWriter fo, ThisReportData data, string sLabel, string sCol)
 {
     fo.TRStart();
     _WriteCell(fo, sLabel);
     foreach (IDictionary fd in data.GroupPreFinData)
     {
         _WriteCell(fo, xmlEncode(fd[sCol]));
     }
     foreach (IDictionary fd in data.GroupFinData)
     {
         _WriteCell(fo, xmlEncode(fd[sCol]));
     }
     foreach (IDictionary fd in data.GroupSumFinData)
     {
         _WriteCell(fo, xmlEncode(fd[sCol]));
     }
     foreach (IDictionary fd in data.GroupAfterFinData)
     {
         _WriteCell(fo, xmlEncode(fd[sCol]));
     }
     foreach (IDictionary fd in data.GroupAllFinData)
     {
         _WriteCell(fo, xmlEncode(fd[sCol]));
     }
     fo.TREnd();
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Отображение в отчете основных свойств лота и тендера
        /// </summary>
        /// <param name="fo"></param>
        /// <param name="data">Данные тендера, данные которого отображаются</param>
        private void writeMainData(XslFOProfileWriter fo, ThisReportData data)
        {
            #region #1: Основные данные

            // ...разделитель
            _TableSeparator(fo);

            fo.TStart(true, ITRepStyles.TABLE, false);

            fo.TAddColumn("Тип транзакции", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "25%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Назначение", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "25%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Дата", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Сумма", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Примечание", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, "30%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            foreach (IDictionary EmpKassTrans in data.Main)
            {
                fo.TRStart();
                _WriteCell(fo, xmlEncode(EmpKassTrans["TransType"]));
                _WriteCell(fo, xmlEncode(EmpKassTrans["Reason"]));
                _WriteCell(fo, xmlEncode(((DateTime)EmpKassTrans["Date"]).ToShortDateString()));
                _WriteCell(fo, xmlEncode(EmpKassTrans["TransSum"]));
                _WriteCell(fo, xmlEncode(EmpKassTrans["Rem"]));
                fo.TREnd();
            }
            fo.TEnd();
            #endregion
        }
Ejemplo n.º 4
0
        // Метод, формирующий отчет; вызывается подсистемой ReportService
        protected override void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData reportData)
        {
            ThisReportData data = new ThisReportData(reportData);

            reportData.RepGen.WriteLayoutMaster();
            reportData.RepGen.StartPageSequence();
            reportData.RepGen.StartPageBody();

            reportData.RepGen.Header(xmlEncode("Плановый Бюджет Доходов и Расходов по проекту"));

            //Формируем и выводим подзаголовок
            StringBuilder sbBlock = new StringBuilder();

            sbBlock.Append(_GetParamValueAsFoBlock("Контракт", data.Contract["Name"].ToString()));

            //sbBlock.Append(_GetParamValueAsFoBlock("Сумма", reportData.Params.GetParam("Sum").ToString()));
            reportData.RepGen.AddSubHeader(_MakeSubHeader(sbBlock));

            bool bIsExtendedReport = (int)reportData.Params.GetParam("Extended").Value == 1;

            if (bIsExtendedReport)
            {
                writeExtendedReport(reportData.RepGen, data);
            }
            else
            {
                writeCommonReport(reportData.RepGen, data);
            }
            reportData.RepGen.EndPageBody();
            reportData.RepGen.EndPageSequence();
        }
Ejemplo n.º 5
0
        // Метод, формирующий отчет; вызывается подсистемой ReportService
        protected override void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData reportData)
        {
            ThisReportData data = new ThisReportData(reportData);

            reportData.RepGen.WriteLayoutMaster();
            reportData.RepGen.StartPageSequence();
            reportData.RepGen.StartPageBody();
            if ((int)reportData.Params.GetParam("Type").Value == 0)
            {
                reportData.RepGen.Header(xmlEncode("Детализация приходов по займам"));
            }
            else
            {
                reportData.RepGen.Header(xmlEncode("Детализация расходов по займам"));
            }

            //Формируем и выводим подзаголовок
            StringBuilder sbBlock = new StringBuilder();

            sbBlock.Append(_GetParamValueAsFoBlock("Интервал времени", data.DateInterval["Name"].ToString() +
                                                   " (" + _FormatShortDate(data.DateInterval["DateFrom"].ToString()) + " - " + _FormatShortDate(data.DateInterval["DateTo"].ToString()) + ")"));
            sbBlock.Append(_GetParamValueAsFoBlock("Сумма", reportData.Params.GetParam("Sum").ToString()));
            reportData.RepGen.AddSubHeader(_MakeSubHeader(sbBlock));

            writeMainData(reportData.RepGen, data, (int)reportData.Params.GetParam("Type").Value);
            reportData.RepGen.EndPageBody();
            reportData.RepGen.EndPageSequence();
        }
Ejemplo n.º 6
0
        private void writeMainData(XslFOProfileWriter fo, ThisReportData data, int Type)
        {
            #region #1: Основные данные

            _TableSeparator(fo);

            fo.TStart(true, ITRepStyles.TABLE, false);
            fo.TAddColumn("Займ №", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "15%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Тип займа", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "15%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Целевая компания/Сотрудник", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "30%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Дата", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "15%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Сумма", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "15%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            foreach (IDictionary IO in data.IncOut)
            {
                fo.TRStart();
                _WriteCell(fo, xmlEncode(IO["Number"]));
                _WriteCell(fo, xmlEncode(IO["LoanType"]));
                _WriteCell(fo, xmlEncode(IO["LoanTarget"]));
                _WriteCell(fo, _FormatShortDate(IO["Date"].ToString()));
                _WriteCell(fo, xmlEncode(IO["Sum"]));
                fo.TREnd();
            }
            fo.TEnd();
            #endregion
        }
Ejemplo n.º 7
0
        private void writeExtendedReport(XslFOProfileWriter fo, ThisReportData data)
        {
            _TableSeparator(fo);

            fo.TStart(true, ITRepStyles.TABLE, false);
            fo.TAddColumn("Статья расходов/Контрагент", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, "40%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Назначение", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "30%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("С учетом комплектации", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Сумма с НДС", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Сумма без НДС", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            foreach (IDictionary IO in data.Incomes)
            {
                if ((int)IO["IncType"] < 0)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(IO["Type"]));
                    _WriteCell(fo, xmlEncode(IO["Reason"]));
                    _WriteCell(fo, xmlEncode(""));
                    _WriteCell(fo, xmlEncode(IO["Sum"]));
                    _WriteCell(fo, xmlEncode(IO["SumNoNDS"]));
                    fo.TREnd();
                }
                else
                {
                    fo.TRStart();
                    fo.TRAddCell(xmlEncode(IO["Type"]), "string", 3, 1, ITRepStyles.GROUP_HEADER);
                    fo.TRAddCell(xmlEncode(IO["Sum"]), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                    fo.TRAddCell(xmlEncode(IO["SumNoNDS"]), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                    fo.TREnd();
                }
            }

            foreach (IDictionary IO in data.Outcomes)
            {
                if ((int)IO["OutType"] < 10)
                {
                    fo.TRStart();
                    //_WriteCell(fo, _FormatShortDate(IO["Date"].ToString()));
                    _WriteCell(fo, xmlEncode(IO["SupplierName"]));
                    _WriteCell(fo, xmlEncode(IO["Rem"]));
                    _WriteCell(fo, xmlEncode(IO["OutSumExt"]));
                    _WriteCell(fo, xmlEncode(IO["OutSum"]));
                    _WriteCell(fo, xmlEncode(IO["OutSumNoNDS"]));
                    fo.TREnd();
                }
                else
                {
                    fo.TRStart();
                    fo.TRAddCell(xmlEncode(IO["SupplierName"]), "string", 2, 1, ITRepStyles.GROUP_HEADER);
                    fo.TRAddCell(xmlEncode(IO["OutSumExt"]), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                    fo.TRAddCell(xmlEncode(IO["OutSum"]), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                    fo.TRAddCell(xmlEncode(IO["OutSumNoNDS"]), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                    fo.TREnd();
                }
            }
            fo.TEnd();
        }
Ejemplo n.º 8
0
        // Метод, формирующий отчет; вызывается подсистемой ReportService
        protected override void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData reportData)
        {
            ThisReportData data = new ThisReportData(reportData);

            reportData.RepGen.WriteLayoutMaster();
            reportData.RepGen.StartPageSequence();
            reportData.RepGen.StartPageBody();
            reportData.RepGen.Header(xmlEncode(String.Format("Финансовый план-факт. {0}. ({1})", data.MainPrjGroup["Name"], data.MainDateRatio["Name"])));

            // Отображение данных тендера:
            writeMainData(reportData.RepGen, data, reportData.Params);
            reportData.RepGen.EndPageBody();
            reportData.RepGen.EndPageSequence();
        }
Ejemplo n.º 9
0
        // Выводит приходы и расходы по займам и интервалам
        private void writeLoansIncOutDataRow(XslFOProfileWriter fo, ThisReportData data, int iType, ReportParams Params)
        {
            string sCol = "OutSum";

            fo.TRStart();
            if (iType == 0)
            {
                sCol = "IncSum";
                _WriteCell(fo, "П");
            }
            else
            {
                _WriteCell(fo, "Р");
            }

            //На начало периода
            writeEmptyValueCell(fo, 1);

            //Расходы - приходы
            foreach (IDictionary fd in data.LoansSumFinData)
            {
                //Если есть расходы или приходы, то формируем ссылку на отчет с детализацией
                if ((String)fd[sCol] != "0.00")
                {
                    StringBuilder sbDetailRef = new StringBuilder();
                    _StartReportURL(sbDetailRef, "r-LoansIncOut");
                    _AppendParamURL(sbDetailRef, "Type", iType);
                    _AppendParamURL(sbDetailRef, "PrjGroup", (Guid)Params.GetParam("Group").Value);
                    _AppendParamURL(sbDetailRef, "DateIntervalID", (Guid)fd["DateIntervalID"]);
                    _AppendParamURL(sbDetailRef, "IsSeparate", Params.GetParam("IsSeparate").Value);
                    _AppendParamURL(sbDetailRef, "Sum", fd[sCol].ToString());
                    _EndReportURL(sbDetailRef, "Детализация", fd[sCol]);
                    _WriteCell(fo, sbDetailRef.ToString());
                }
                else
                {
                    _WriteCell(fo, xmlEncode(fd[sCol]));
                }
            }

            //
            writeEmptyValueCell(fo, 3);
            fo.TREnd();
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Метод, формирующий отчет; вызывается подсистемой ReportService
        /// </summary>
        protected override void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData reportData)
        {
            // Получаем все данные для постоения отчета:
            ThisReportData data = new ThisReportData(reportData);

            reportData.RepGen.WriteLayoutMaster();
            reportData.RepGen.StartPageSequence();
            reportData.RepGen.StartPageBody();
            reportData.RepGen.Header(String.Format("Кассовые транзакции сотрудника - {0}", xmlEncode((String)reportData.Params.GetParam("EmpName").Value)));

            // Получаем все данные для постоения отчета:
            ThisReportParams Params = new ThisReportParams(reportData.Params);

            Params.WriteParamsInHeader(reportData.RepGen, reportData.DataProvider);

            writeMainData(reportData.RepGen, data);
            reportData.RepGen.EndPageBody();
            reportData.RepGen.EndPageSequence();
        }
Ejemplo n.º 11
0
        // Метод, формирующий отчет; вызывается подсистемой ReportService
        protected override void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData reportData)
        {
            // Получаем все данные для постоения отчета:
            ThisReportData data = new ThisReportData(reportData);

            reportData.RepGen.WriteLayoutMaster();
            reportData.RepGen.StartPageSequence();
            reportData.RepGen.StartPageBody();
            reportData.RepGen.Header(xmlEncode("Сальдо ДС по сотрудникам"));

            // Получаем все данные для постоения отчета:
            ThisReportParams Params = new ThisReportParams(reportData.Params);

            //Формируем и выводим подзаголовок
            StringBuilder sbBlock = new StringBuilder();
            string        sParamValue;

            if (Params.IsSpecifiedIntervalBegin)
            {
                sParamValue = ((DateTime)Params.IntervalBegin).ToString("dd.MM.yyyy");
            }
            else
            {
                sParamValue = "не задана";
            }

            sbBlock.Append(_GetParamValueAsFoBlock("Дата начала отчетного периода", sParamValue));
            if (Params.IsSpecifiedIntervalEnd)
            {
                sParamValue = ((DateTime)Params.IntervalEnd).ToString("dd.MM.yyyy");
            }
            else
            {
                sParamValue = "не задана";
            }
            sbBlock.Append(_GetParamValueAsFoBlock("Дата окончания отчетного периода", sParamValue));
            reportData.RepGen.AddSubHeader(_MakeSubHeader(sbBlock));

            writeMainData(reportData.RepGen, data, Params);
            reportData.RepGen.EndPageBody();
            reportData.RepGen.EndPageSequence();
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Отображение в отчете основных свойств лота и тендера
        /// </summary>
        /// <param name="fo"></param>
        /// <param name="data">Данные тендера, данные которого отображаются</param>
        private void writeMainData(XslFOProfileWriter fo, ThisReportData data)
        {
            #region #1: Основные данные

            // ...разделитель
            _TableSeparator(fo);

            fo.TStart(false, ITRepStyles.TABLE, false);
            fo.TAddColumn("Характеристика", align.ALIGN_LEFT, valign.VALIGN_TOP, null, "30%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Значение", align.ALIGN_LEFT, valign.VALIGN_TOP, null, "70%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            writeDataPair(fo, "Получено в кассе", xmlEncode(data.Main["KassRecieved"]));
            writeDataPair(fo, "Сдано по АО (после 04/10/2013)", xmlEncode(data.Main["AOSended"]));
            writeDataPair(fo, "Возвращено в кассу", xmlEncode(data.Main["KassReturned"]));
            writeDataPair(fo, "Получено от других содрудников", xmlEncode(data.Main["EmpRecieved"]));
            writeDataPair(fo, "Передано другим сотрудникам", xmlEncode(data.Main["EmpSended"]));
            writeDataPair(fo, "Итоговое сальдо ДС", "<fo:inline font-weight='bold'>" + xmlEncode(data.Main["EmpSaldoDS"]) + "</fo:inline>");

            fo.TEnd();
            #endregion
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Метод, формирующий отчет; вызывается подсистемой ReportService
        /// </summary>
        protected override void buildReport(Croc.XmlFramework.ReportService.Layouts.ReportLayoutData reportData)
        {
            // Получаем идентификатор тендра из переданных параметров
            Guid EmployeeID = (Guid)reportData.Params.GetParam("EmployeeID").Value;

            // Получаем все данные для постоения отчета:
            ThisReportData data = new ThisReportData(reportData, EmployeeID);

            if (null == data.Main)
            {
                writeEmptyBody(reportData.RepGen, String.Format(
                                   "Сотрудник в Системе не найден! (заданный идентификатор - {0})",
                                   EmployeeID.ToString()));
                return;
            }
            reportData.RepGen.WriteLayoutMaster();
            reportData.RepGen.StartPageSequence();
            reportData.RepGen.StartPageBody();
            reportData.RepGen.Header(xmlEncode(String.Format("Сальдо ДС по сотруднику: {0} {1}", data.Main["LastName"], data.Main["FirstName"])));
            writeMainData(reportData.RepGen, data);
            reportData.RepGen.EndPageBody();
            reportData.RepGen.EndPageSequence();
        }
Ejemplo n.º 14
0
        private void writeMainData(XslFOProfileWriter fo, ThisReportData data, int Type)
        {
            #region #1: Основные данные

            _TableSeparator(fo);

            fo.TStart(true, ITRepStyles.TABLE, false);
            fo.TAddColumn("Дата", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Сумма", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Тип", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "20%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Назначение", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "22%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            if (Type == 1)
            {
                fo.TAddColumn("Организация/Сотрудник", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "23%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            }

            fo.TAddColumn("Документ", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Дата документа", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            foreach (IDictionary IO in data.IncOut)
            {
                fo.TRStart();
                _WriteCell(fo, _FormatShortDate(IO["Date"].ToString()));
                _WriteCell(fo, xmlEncode(IO["Sum"]));
                _WriteCell(fo, xmlEncode(IO["Type"]));
                _WriteCell(fo, xmlEncode(IO["Reason"]));
                if (Type == 1)
                {
                    _WriteCell(fo, xmlEncode(IO["Org"]));
                }
                _WriteCell(fo, xmlEncode(IO["Document"]));
                _WriteCell(fo, _FormatShortDate(IO["DocDate"].ToString()));
                fo.TREnd();
            }
            fo.TEnd();
            #endregion
        }
Ejemplo n.º 15
0
        /// Отображение основных данных отчета
        private void writeMainData(XslFOProfileWriter fo, ThisReportData data, ReportParams Params)
        {
            _TableSeparator(fo);
            fo.TStart(true, ITRepStyles.TABLE, false);

            #region Шапка отчета

            fo.TAddColumn("", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, "1%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("На начало", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "4%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            //Общее количество колонок в таблице отчета
            int i = 4;

            //Заголовки колонок
            foreach (IDictionary Interval in data.DateRatio)
            {
                fo.TAddColumn(xmlEncode(Interval["Name"].ToString()), align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "4%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                i++;
            }
            fo.TAddColumn("Итого", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "4%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Остаток", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "4%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Всего", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "4%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            i++;

            #endregion

            #region Общие расходы и расходы по АО

            fo.TRStart();
            fo.TRAddCell("ОБЩИE РАСХОДЫ", "string", i, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();
            writeGenDataRow(fo, data.GenOutSum);

            fo.TRStart();
            fo.TRAddCell("ОБЩИЕ АО", "string", i, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();
            writeGenDataRow(fo, data.AOSum);

            #endregion

            #region Итоговые показатели по займам

            fo.TRStart();
            fo.TRAddCell("ВСЕГО ПО ЗАЙМАМ", "string", i, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();

            writeLoansIncOutDataRow(fo, data, 0, Params);                   //Приходы по займам
            writeLoansIncOutDataRow(fo, data, 1, Params);                   //Расходы по займам

            // Сальдо по займам
            fo.TRStart();
            _WriteCell(fo, "C");
            writeEmptyValueCell(fo, 1);
            foreach (IDictionary fd in data.LoansSumFinData)
            {
                _WriteCell(fo, xmlEncode(fd["SaldoSum"]));
            }
            writeEmptyValueCell(fo, 3);
            fo.TREnd();

            #endregion

            #region Итоговые показатели по группе проектов
            fo.TRStart();
            fo.TRAddCell("ВСЕГО ПО ПРОЕКТАМ", "string", i, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();

            writeSumProjectDataRow(fo, data, "П", "IncSum");                // Приходы по группе проектов
            writeSumProjectDataRow(fo, data, "Р", "OutSum");                // Расходы по группе проектов
            writeSumProjectDataRow(fo, data, "С", "SaldoSum");              // Сальдо по группе проектов

            // Сальдо по группе нарастающим итогом
            fo.TRStart();
            _WriteCell(fo, "НИ");
            writeEmptyValueCell(fo, 1);
            foreach (IDictionary fd in data.GroupFinData)
            {
                _WriteCell(fo, xmlEncode(fd["SaldoSumProg"]));
            }
            writeEmptyValueCell(fo, 3);
            fo.TREnd();
            #endregion

            #region Показатели по проектам
            if ((int)Params.GetParam("IsPrjData").Value != 0)
            {
                foreach (IDictionary Project in data.PrjGroup)
                {
                    //Заголовок проекта
                    fo.TRStart();
                    fo.TRAddCell(xmlEncode(Project["Name"]), "string", i, 1, ITRepStyles.GROUP_HEADER);
                    fo.TREnd();

                    writeProjectsIncOutDataRow(fo, data, Project, 0, Params);                   //Приходы по проекту
                    writeProjectsIncOutDataRow(fo, data, Project, 1, Params);                   //Расходы по проекту

                    // Сальдо по проекту
                    fo.TRStart();
                    _WriteCell(fo, "С");

                    foreach (IDictionary fd in data.ProjectsPreFinData)         //На начало периода
                    {
                        if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                        {
                            _WriteCell(fo, xmlEncode(fd["SaldoSum"]));
                        }
                    }
                    foreach (IDictionary fd in data.ProjectsFinData)            //По интервалам
                    {
                        if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                        {
                            _WriteCell(fo, xmlEncode(fd["SaldoSum"]));
                        }
                    }
                    foreach (IDictionary fd in data.ProjectsSumFinData)         //Итого сальдо
                    {
                        if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                        {
                            _WriteCell(fo, xmlEncode(fd["SaldoSum"]));
                        }
                    }
                    foreach (IDictionary fd in data.ProjectsAfterFinData)       //Остаток
                    {
                        if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                        {
                            _WriteCell(fo, xmlEncode(fd["SaldoSum"]));
                        }
                    }
                    foreach (IDictionary fd in data.ProjectsAllFinData)         //Итого
                    {
                        if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                        {
                            _WriteCell(fo, xmlEncode(fd["SaldoSum"]));
                        }
                    }
                    fo.TREnd();

                    // Сальдо нарастающим итогом
                    fo.TRStart();
                    _WriteCell(fo, "НИ");
                    writeEmptyValueCell(fo, 1);
                    foreach (IDictionary fd in data.ProjectsFinData)
                    {
                        if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                        {
                            _WriteCell(fo, xmlEncode(fd["SaldoSumProg"]));
                        }
                    }
                    writeEmptyValueCell(fo, 3);
                    fo.TREnd();
                }
            }
            #endregion

            fo.TEnd();
        }
Ejemplo n.º 16
0
        // Выводит приходы и расходы по проектам и интервалам
        private void writeProjectsIncOutDataRow(XslFOProfileWriter fo, ThisReportData data, IDictionary Project, int iType, ReportParams Params)
        {
            string sCol = "OutSum";

            fo.TRStart();
            if (iType == 0)
            {
                sCol = "IncSum";
                _WriteCell(fo, "П");
            }
            else
            {
                _WriteCell(fo, "Р");
            }

            //На начало периода
            foreach (IDictionary fd in data.ProjectsPreFinData)
            {
                if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                {
                    _WriteCell(fo, xmlEncode(fd[sCol]));
                }
            }

            //Расходы
            foreach (IDictionary fd in data.ProjectsFinData)
            {
                if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                {
                    //Если есть расходы или приходы, то формируем ссылку на отчет с детализацией
                    if ((String)fd[sCol] != "0.00")
                    {
                        StringBuilder sbDetailRef = new StringBuilder();
                        _StartReportURL(sbDetailRef, "r-ProjectIncOut");
                        _AppendParamURL(sbDetailRef, "Type", iType);
                        _AppendParamURL(sbDetailRef, "InContract", (Guid)fd["ObjectID"]);
                        _AppendParamURL(sbDetailRef, "DateIntervalID", (Guid)fd["DateIntervalID"]);
                        _AppendParamURL(sbDetailRef, "IsSeparate", Params.GetParam("IsSeparate").Value);
                        _AppendParamURL(sbDetailRef, "Sum", fd[sCol].ToString());
                        _EndReportURL(sbDetailRef, "Детализация", fd[sCol]);
                        _WriteCell(fo, sbDetailRef.ToString());
                    }
                    else
                    {
                        _WriteCell(fo, xmlEncode(fd[sCol]));
                    }
                }
            }

            //Итого расходов
            foreach (IDictionary fd in data.ProjectsSumFinData)
            {
                if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                {
                    _WriteCell(fo, xmlEncode(fd[sCol]));
                }
            }

            //Остаток
            foreach (IDictionary fd in data.ProjectsAfterFinData)
            {
                if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                {
                    _WriteCell(fo, xmlEncode(fd[sCol]));
                }
            }

            //Всего
            foreach (IDictionary fd in data.ProjectsAllFinData)
            {
                if ((Guid)Project["ObjectID"] == (Guid)fd["ObjectID"])
                {
                    _WriteCell(fo, xmlEncode(fd[sCol]));
                }
            }
            fo.TREnd();
        }
Ejemplo n.º 17
0
        // Отображение в отчете основных свойств лота и тендера
        private void writeMainData(XslFOProfileWriter fo, ThisReportData data, ThisReportParams Params)
        {
            #region #1: Основные данные

            // ...разделитель
            _TableSeparator(fo);

            fo.TStart(true, ITRepStyles.TABLE, false);

            fo.TAddColumn("Сотрудник", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, "13%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Балланс ДС", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Балланс ДС на начало", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Балланс ДС за период", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Получено в кассе", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Сдано по АО", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Возвращено в кассу", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Получено от сотрудников", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Передано сотрудникам", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            foreach (IDictionary EmpDS in data.Main)
            {
                fo.TRStart();
                _WriteCell(fo, xmlEncode(EmpDS["EmpName"]));
                _WriteCell(fo, xmlEncode(EmpDS["EmpSaldoTotal"]));
                _WriteCell(fo, xmlEncode(EmpDS["EmpSaldoDSBegin"]));

                StringBuilder sbLotHRef = new StringBuilder();

                //если существуют кассовые транзакции за данный период по сотруднику
                if ((Int32)EmpDS["IsExistsEmpKassTrans"] == 1)
                {
                    //... то сальдо ДС выводим с сылкой на отчет о детализации кассовых транзакций
                    _StartReportURL(sbLotHRef, "r-EmployeeKassTrans");
                    _AppendParamURL(sbLotHRef, "EmpID", (Guid)EmpDS["EmpID"]);
                    _AppendParamURL(sbLotHRef, "EmpName", EmpDS["EmpName"]);
                    if (Params.IsSpecifiedIntervalBegin)
                    {
                        _AppendParamURL(sbLotHRef, "IntervalBegin", ((DateTime)Params.IntervalBegin).ToString("yyyy-MM-dd"));
                    }
                    if (Params.IsSpecifiedIntervalEnd)
                    {
                        _AppendParamURL(sbLotHRef, "IntervalEnd", ((DateTime)Params.IntervalEnd).ToString("yyyy-MM-dd"));
                    }
                    _EndReportURL(sbLotHRef, "Детализация кассовых транзакций", EmpDS["EmpSaldoDS"]);
                }
                else
                {
                    sbLotHRef.Append(xmlEncode(EmpDS["EmpSaldoDS"]));
                }

                _WriteCell(fo, sbLotHRef, "string", ITRepStyles.TABLE_CELL_BOLD);
                _WriteCell(fo, xmlEncode(EmpDS["KassRecieved"]));
                _WriteCell(fo, xmlEncode(EmpDS["AOSended"]));
                _WriteCell(fo, xmlEncode(EmpDS["KassReturned"]));
                _WriteCell(fo, xmlEncode(EmpDS["EmpRecieved"]));
                _WriteCell(fo, xmlEncode(EmpDS["EmpSended"]));
                fo.TREnd();
            }
            fo.TEnd();
            #endregion
        }
Ejemplo n.º 18
0
        private void writeExtendedReport(XslFOProfileWriter fo, ThisReportData data)
        {
            _TableSeparator(fo);
            CultureInfo culture = new CultureInfo("ru-RU");

            fo.TStart(true, ITRepStyles.TABLE, false);
            fo.TAddColumn("Статья расходов", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, "45%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Назначение/Контрагент", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "25%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Примечание", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("с учетом комплектации", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Сумма с НДС", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);


            double fOutcomesSum = 0, fAOLimitSum = 0, fIncomeSum = 0;
            double fExtOutcomesSum = 0, fExtOutLimit = 0;

            // Построение блока отчета по приходам
            if (data.Incomes != null)
            {
                IDictionary arIO = (IDictionary)data.Incomes[0];



                fIncomeSum = Utils.ParseDBString(arIO["Sum"].ToString());

                fo.TRStart();
                fo.TRAddCell(xmlEncode(arIO["Type"]), "string", 3, 1, ITRepStyles.GROUP_HEADER);
                fo.TRAddCell(xmlEncode(fIncomeSum.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                fo.TRAddCell(xmlEncode(fIncomeSum.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                fo.TREnd();
            }
            ;


            // расчет блока отчета по прямым расходам
            if (data.Outcomes != null)
            {
                foreach (IDictionary IO in data.Outcomes)
                {
                    string sBugetCost = IO["BudgetCost"].ToString();

                    fOutcomesSum += Utils.ParseDBString(sBugetCost);

                    if (IO["SupplierSum"] != null)
                    {
                        fExtOutcomesSum += Utils.ParseDBString(IO["SupplierSum"].ToString());
                        fExtOutcomesSum += Utils.ParseDBString(IO["SupplierFee"].ToString());
                    }
                    else
                    {
                        fExtOutcomesSum += Utils.ParseDBString(IO["BudgetCost"].ToString());
                    }
                }
            }

            fo.TRStart();
            fo.TRAddCell(xmlEncode("Прямые расходы"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
            fo.TRAddCell(xmlEncode(fExtOutcomesSum.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            fo.TRAddCell(xmlEncode(fOutcomesSum.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();

            // построение блока отчета по прямым расходам
            if (data.Outcomes != null)
            {
                foreach (IDictionary IO in data.Outcomes)
                {
                    string sBudgetCost = IO["BudgetCost"].ToString();
                    double fBugetCost  = Utils.ParseDBString(sBudgetCost);
                    if (IO["SupplierSum"] == null)
                    {
                        fo.TRStart();
                        _WriteCell(fo, xmlEncode(IO["BudgetItem"]));
                        _WriteCell(fo, xmlEncode(IO["ContractCompany"]));
                        _WriteCell(fo, xmlEncode(IO["Rem"]));
                        _WriteCell(fo, xmlEncode(Utils.ParseDBString(sBudgetCost).ToString("C2", culture)));
                        _WriteCell(fo, xmlEncode(Utils.ParseDBString(sBudgetCost).ToString("C2", culture)));
                        fo.TREnd();
                    }
                    else
                    {
                        double fSupplierSum = Utils.ParseDBString(IO["SupplierSum"].ToString());
                        fo.TRStart();
                        fo.TRAddCell(xmlEncode(IO["BudgetItem"]), "string", 1, 2, ITRepStyles.TABLE_CELL_BOLD);
                        _WriteCell(fo, xmlEncode(IO["SupplierCompany"]));
                        _WriteCell(fo, xmlEncode(IO["Rem"]));
                        _WriteCell(fo, xmlEncode(fSupplierSum.ToString("C2", culture)));
                        _WriteCell(fo, xmlEncode(fBugetCost.ToString("C2", culture)));
                        fo.TREnd();

                        fo.TRStart();
                        _WriteCell(fo, xmlEncode("Комиссия " + IO["ContractCompany"]));
                        _WriteCell(fo, xmlEncode(IO["Percent"] + "%"));
                        _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["SupplierFee"].ToString()).ToString("C2", culture)));
                        _WriteCell(fo, xmlEncode());
                        fo.TREnd();
                    }
                }
            }


            // Расчитываем лимитированные расходы по проекту.
            // На текущий момент определились в бухгалтерской
            // форме показывать только Командировочные

            //АО Лимиты
            if (data.AOLimits != null)
            {
                foreach (IDictionary IO in data.AOLimits)
                {
                    // считаем сумму всех АО лимитов
                    fAOLimitSum += Utils.ParseDBString(IO["AOLimitSum"].ToString());
                }
            }

            //АО лимиты с учетом "комплектации"
            if (data.ExtAOLimits != null)
            {
                foreach (IDictionary IO in data.ExtAOLimits)
                {
                    // считаем сумму всех лимитов
                    fExtOutLimit += Utils.ParseDBString(IO["AOLimitSum"].ToString());
                }
            }

            //Лимитированные расходы
            if (data.OutLimits != null)
            {
                foreach (IDictionary IO in data.OutLimits)
                {
                    // считаем сумму всех лимитов
                    fAOLimitSum += Utils.ParseDBString(IO["OutLimitSum"].ToString());
                }
            }

            //Лимитированные расходы с учетом "комплектации"
            if (data.ExtOutLimits != null)
            {
                foreach (IDictionary IO in data.ExtOutLimits)
                {
                    // считаем сумму всех лимитов
                    fExtOutLimit += Utils.ParseDBString(IO["OutLimitSum"].ToString());
                }
            }

            //Итоговая строка расходов
            if (data.AOLimits != null || data.ExtAOLimits != null || data.OutLimits != null || data.ExtOutLimits != null)
            {
                fo.TRStart();
                fo.TRAddCell(xmlEncode("Лимитированные расходы"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
                fo.TRAddCell(xmlEncode(fExtOutLimit.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                fo.TRAddCell(xmlEncode(fAOLimitSum.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                fo.TREnd();
            }

            //Выводим лимитированные расходы
            //Лимиты по АО
            if (data.AOLimits != null)
            {
                foreach (IDictionary IO in data.AOLimits)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(IO["AOLimitName"]));
                    _WriteCell(fo, xmlEncode());
                    _WriteCell(fo, xmlEncode(IO["AOLimitRem"]));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["AOLimitSum"].ToString()).ToString("C2", culture)));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["AOLimitSum"].ToString()).ToString("C2", culture)));
                    fo.TREnd();
                }
            }
            //Лимиты по АО с "расширенные"
            if (data.ExtAOLimits != null)
            {
                foreach (IDictionary IO in data.ExtAOLimits)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(IO["AOLimitName"]));
                    _WriteCell(fo, xmlEncode());
                    _WriteCell(fo, xmlEncode(IO["AOLimitRem"]));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["AOLimitSum"].ToString()).ToString("C2", culture)));
                    _WriteCell(fo, xmlEncode());
                    fo.TREnd();
                }
            }

            //Лимиты по расходам
            if (data.OutLimits != null)
            {
                foreach (IDictionary IO in data.OutLimits)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(IO["OutLimitName"]));
                    _WriteCell(fo, xmlEncode());
                    _WriteCell(fo, xmlEncode(IO["OutLimitRem"]));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["OutLimitSum"].ToString()).ToString("C2", culture)));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["OutLimitSum"].ToString()).ToString("C2", culture)));
                    fo.TREnd();
                }
            }

            //Лимиты по расходам
            if (data.ExtOutLimits != null)
            {
                foreach (IDictionary IO in data.ExtOutLimits)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(IO["OutLimitName"]));
                    _WriteCell(fo, xmlEncode());
                    _WriteCell(fo, xmlEncode(IO["OutLimitRem"]));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["OutLimitSum"].ToString()).ToString("C2", culture)));
                    _WriteCell(fo, xmlEncode());
                    fo.TREnd();
                }
            }

            fo.TRStart();
            fo.TRAddCell(xmlEncode("ИТОГО Расходы"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
            fo.TRAddCell(xmlEncode((fExtOutcomesSum + fExtOutLimit).ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            fo.TRAddCell(xmlEncode((fAOLimitSum + fOutcomesSum).ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();

            fo.TRStart();
            fo.TRAddCell(xmlEncode("Валовая прибыль"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
            fo.TRAddCell(xmlEncode((fIncomeSum - (fExtOutcomesSum + fExtOutLimit)).ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            fo.TRAddCell(xmlEncode((fIncomeSum - (fAOLimitSum + fOutcomesSum)).ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();

            double fAllOutcomse    = fAOLimitSum + fOutcomesSum;
            double fExtAllOutcomse = fExtOutcomesSum + fExtOutLimit;

            fo.TRStart();
            fo.TRAddCell(xmlEncode("Плановая рентабельность"), "string", 3, 1, ITRepStyles.GROUP_HEADER);

            if (fExtAllOutcomse != 0)
            {
                fo.TRAddCell(xmlEncode(((fIncomeSum - fExtAllOutcomse) * 100 / fExtAllOutcomse).ToString("N2") + "%"), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            }
            else
            {
                fo.TRAddCell(xmlEncode(), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            }

            if (fAllOutcomse != 0)
            {
                fo.TRAddCell(xmlEncode(((fIncomeSum - fAllOutcomse) * 100 / fAllOutcomse).ToString("N2") + "%"), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            }
            else
            {
                fo.TRAddCell(xmlEncode(), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            }


            fo.TREnd();

            fo.TEnd();
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Отображение в отчете основных свойств лота и тендера
        /// </summary>
        /// <param name="fo"></param>
        /// <param name="data">Данные тендера, данные которого отображаются</param>
        private void writeMainData(XslFOProfileWriter fo, ThisReportData data)
        {
            string sValue;

            #region #1: Основные данные

            // ...разделитель
            _TableSeparator(fo);

            fo.TStart(false, ITRepStyles.TABLE, false);
            fo.TAddColumn("Характеристика", align.ALIGN_LEFT, valign.VALIGN_TOP, null, "30%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Значение", align.ALIGN_LEFT, valign.VALIGN_TOP, null, "70%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            fo.TRStart();
            fo.TRAddCell("Основные реквизиты", "string", 2, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();
            if ((Int32)data.Main["CustEqOrg"] == 1)
            {
                writeDataPair(fo, "Заказчик/Организатор", xmlEncode(data.Main["Customer"]));
            }
            else
            {
                writeDataPair(fo, "Заказчик/Организатор", xmlEncode(data.Main["Customer"]) + " / " + xmlEncode(data.Main["Organizer"]));
            }
            writeDataPair(fo, "Дата подачи документов", _FormatLongDateTime(data.Main["DocFeedingDate"]));
            writeDataPair(fo, "Дата проведения переторжки", _FormatLongDateTime(data.Main["DateTorg1"]));
            writeDataPair(fo, "Дата проведения 2й переторжки", _FormatLongDateTime(data.Main["DateTorg2"]));

            // ...Директор Клиента:
            if (data.ViewType == 0)
            {
                writeDataPair(fo, "Директор Клиента", _GetUserMailAnchor(data.Main["DirectorName"], data.Main["DirectorEMail"]));
            }

            // ...cостояние: цвет фона в зависимости от состояния
            LotState state = (LotState)(Int32.Parse(data.Main["State"].ToString()));
            if (LotState.WasGain == state)
            {
                sValue = ITRepStyles.TABLE_CELL_COLOR_GREEN;
            }
            else if (LotState.WasLoss == state)
            {
                sValue = ITRepStyles.TABLE_CELL_COLOR_RED;
            }
            else
            {
                sValue = ITRepStyles.TABLE_CELL;
            }
            writeDataPair(fo, "Состояние",
                          "<fo:inline font-weight='bold'>" + xmlEncode(data.Main["StateName"]) + "</fo:inline>",
                          sValue);

            // ...Контактное лицо конкурсной комисси:
            fo.TRStart();
            fo.TRAddCell("Контактное лицо конкурсной комисси", "string", 2, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();
            writeDataPair(fo, "Фамилия, имя, отчество ", xmlEncode(data.Main["JuryContactName"]));
            writeDataPair(fo, "Телефон ", xmlEncode(data.Main["JuryContactPhone"]));
            writeDataPair(fo, "Адрес электронной почты", _GetUserMailAnchor(data.Main["JuryContactEMail"], data.Main["JuryContactEMail"]));

            fo.TEnd();
            #endregion

            #region #2: Данные участников конкурса:
            if (null != data.Parts)
            {
                // ...разделитель
                _TableSeparator(fo);

                fo.TStart(true, ITRepStyles.TABLE, false);

                bool isFinalState = (LotState.WasGain == state || LotState.WasLoss == state);
                int  nCol         = fo.TAddColumn("Участники конкурса", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, String.Empty, align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Организация", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, "12%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Тип участия", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Отклонен", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "7%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                if (isFinalState)
                {
                    fo.TAddSubColumn(nCol, "Итоговый статус", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                }
                fo.TAddSubColumn(nCol, "Сумма подачи, " + xmlEncode(data.Main["NDS"]), align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Сумма переторжки, " + xmlEncode(data.Main["NDS"]), align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Сумма 2й переторжки, " + xmlEncode(data.Main["NDS"]), align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Сумма подачи АП, " + xmlEncode(data.Main["NDS"]), align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Сумма переторжки АП, " + xmlEncode(data.Main["NDS"]), align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Сумма 2й переторжки АП, " + xmlEncode(data.Main["NDS"]), align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "8%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

                fo.TAddSubColumn(nCol, "Примечание", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, (isFinalState ? "8%" : "13%"), align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

                foreach (IDictionary orgData in data.Parts)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(orgData["ParticipantOrganization"]));
                    _WriteCell(fo, xmlEncode(orgData["ParticipationType"]));
                    _WriteCell(fo, xmlEncode(orgData["DeclinedText"]));
                    if (isFinalState)
                    {
                        bool isWinner = (null != orgData["Winner"]);
                        _WriteCell(fo,
                                   "<fo:inline font-weight='bold'>" + (isWinner? "Победитель" : "Проигравший") + "</fo:inline>",
                                   "string",
                                   (isWinner? ITRepStyles.TABLE_CELL_COLOR_GREEN : ITRepStyles.TABLE_CELL_COLOR_RED));
                    }
                    _WriteCell(fo, xmlEncode(orgData["TenderParticipantPrice"]));
                    _WriteCell(fo, xmlEncode(orgData["SumTorg1"]));
                    _WriteCell(fo, xmlEncode(orgData["SumTorg2"]));
                    _WriteCell(fo, xmlEncode(orgData["TenderParticipantPriceAP"]));
                    _WriteCell(fo, xmlEncode(orgData["SumTorg1AP"]));
                    _WriteCell(fo, xmlEncode(orgData["SumTorg2AP"]));
                    _WriteCell(fo, xmlEncode(orgData["Note"]));
                    fo.TREnd();
                }
                fo.TEnd();
            }

            #endregion

            #region #3: Участие подразделений (если такие данные есть)
            if (null != data.DepParts && data.ViewType == 0)
            {
                // ...разделитель
                _TableSeparator(fo);

                fo.TStart(true, ITRepStyles.TABLE, false);

                int nCol = fo.TAddColumn("Участие департаментов", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, null, align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Департамент", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "20%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Исполнитель", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "20%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Ознакомился", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "20%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddSubColumn(nCol, "Примечание", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "40%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

                foreach (IDictionary depData in data.DepParts)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(depData["Department"]));

                    // Исполнитель от подразделения:
                    sValue = _GetUserMailAnchor(depData["ExecutorName"], depData["ExecutorEMail"]);
                    if (null != depData["DocsGettingDate"])
                    {
                        sValue = sValue + (String.Empty != sValue ? ", " : "") + "документы получил(а) " + _FormatLongDate(depData["DocsGettingDate"]);
                    }
                    _WriteCell(fo, sValue);

                    _WriteCell(fo, xmlEncode(depData["ExecutorIsAcquaint"]));
                    _WriteCell(fo, xmlEncode(depData["Note"]));
                    fo.TREnd();
                }
                fo.TEnd();
            }

            #endregion

            #region #3: Внешние ссылки (если таковые есть)
            if (null != data.Links && data.ViewType == 0)
            {
                // ...разделитель
                _TableSeparator(fo);

                fo.TStart(false, ITRepStyles.TABLE, false);
                fo.TAddColumn("Тип ссылки", align.ALIGN_LEFT, valign.VALIGN_TOP, null, "15%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
                fo.TAddColumn("Ссылка", align.ALIGN_LEFT, valign.VALIGN_TOP, null, "85%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

                fo.TRStart();
                fo.TRAddCell("Внешние ссылки", "string", 2, 1, ITRepStyles.GROUP_HEADER);
                fo.TREnd();

                foreach (IDictionary linkData in data.Links)
                {
                    string sLinkHRef = String.Format(
                        "<fo:basic-link " +
                        "text-decoration=\"none\" " +
                        "external-destination=\"vbscript:window.OpenExternalLink({0},&quot;{1}&quot;)\">" +
                        "{2}</fo:basic-link> " +
                        "( полный адрес: <fo:basic-link " +
                        "text-decoration=\"none\" " +
                        "external-destination=\"vbscript:window.OpenExternalLink({0},&quot;{1}&quot;)\">" +
                        "{1}</fo:basic-link> )",
                        linkData["LinkServiceType"],                    // {0}, тип обслуживающей системы
                        xmlEncode(linkData["URI"]),                     // {1}, URI ссылки
                        xmlEncode(linkData["LinkName"])                 // {2}, отображаемое значение ссылки
                        );

                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(linkData["ServiceTypeName"]));
                    _WriteCell(fo, sLinkHRef, "string");
                    fo.TREnd();
                }
                fo.TEnd();
            }
            #endregion

            #region #4: Дополнительные данные
            _TableSeparator(fo);

            fo.TStart(false, ITRepStyles.TABLE, false);
            fo.TAddColumn("Характеристика", align.ALIGN_LEFT, valign.VALIGN_TOP, null, "30%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Значение", align.ALIGN_LEFT, valign.VALIGN_TOP, null, "70%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            fo.TRStart();
            fo.TRAddCell("Дополнительно", "string", 2, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();

            writeDataPair(fo, "К обсуждению", xmlEncode(data.Main["QualifyingRequirement"]));
            if (data.ViewType == 0)
            {
                writeDataPair(fo, "Примечание", xmlEncode(data.Main["Note"]));
                writeDataPair(fo, "Обсуждения", xmlEncode(data.Main["Discussion"]));
            }
            fo.TEnd();
            #endregion
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Построение стандартного отчета
        /// </summary>
        /// <param name="fo">xml-пул данных отчета</param>
        /// <param name="data">параметры отчета</param>
        private void writeCommonReport(XslFOProfileWriter fo, ThisReportData data)
        {
            // Определим локализацию для парсинга данных из БД
            CultureInfo culture = new CultureInfo("ru-RU");

            _TableSeparator(fo);

            // Шапка отчета
            fo.TStart(true, ITRepStyles.TABLE, false);
            fo.TAddColumn("Статья расходов", align.ALIGN_LEFT, valign.VALIGN_MIDDLE, null, "45%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Назначение/Контрагент", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, null, "35%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Примечание", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);
            fo.TAddColumn("Сумма с НДС", align.ALIGN_RIGHT, valign.VALIGN_MIDDLE, null, "10%", align.ALIGN_CENTER, valign.VALIGN_MIDDLE, ITRepStyles.TABLE_HEADER);

            double fOutcomesSum = 0, fAOLimitSum = 0, fIncomeSum = 0;


            //Построение блока отчета по приходам

            if (data.Incomes != null)
            {
                IDictionary arIO = (IDictionary)data.Incomes[0];


                fIncomeSum = Utils.ParseDBString(arIO["Sum"].ToString());

                fo.TRStart();
                fo.TRAddCell(xmlEncode(arIO["Type"]), "string", 3, 1, ITRepStyles.GROUP_HEADER);
                fo.TRAddCell(xmlEncode(fIncomeSum.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                fo.TREnd();
            }
            ;

            // Построение блока отчета по прямым расходам
            if (data.Outcomes != null)
            {
                foreach (IDictionary IO in data.Outcomes)
                {
                    fOutcomesSum += Utils.ParseDBString(IO["BudgetCost"].ToString());
                }
                // Выводим итоговую сумму прямых расходов
                fo.TRStart();
                fo.TRAddCell(xmlEncode("Прямые расходы"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
                fo.TRAddCell(xmlEncode(fOutcomesSum.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                fo.TREnd();
                // Показываем все расходы по-пунктно
                foreach (IDictionary IO in data.Outcomes)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(IO["BudgetItem"]));
                    _WriteCell(fo, xmlEncode(IO["ContractCompany"]));
                    _WriteCell(fo, xmlEncode(IO["Rem"]));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["BudgetCost"].ToString()).ToString("C2", culture)));
                    fo.TREnd();
                }
            }

            // Выводим лимитированные расходы по проекту.
            // На текущий момент определились в бухгалтерской
            // форме показывать только Командировочные
            if (data.AOLimits != null)
            {
                foreach (IDictionary IO in data.AOLimits)
                {
                    // считаем сумму всех АО лимитов
                    fAOLimitSum += Utils.ParseDBString(IO["AOLimitSum"].ToString());
                }
            }
            if (data.OutLimits != null)
            {
                foreach (IDictionary IO in data.OutLimits)
                {
                    // считаем сумму всех лимитов
                    fAOLimitSum += Utils.ParseDBString(IO["OutLimitSum"].ToString());
                }
            }

            if (data.AOLimits != null || data.OutLimits != null)
            {
                fo.TRStart();
                fo.TRAddCell(xmlEncode("Лимитированные расходы"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
                fo.TRAddCell(xmlEncode(fAOLimitSum.ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
                fo.TREnd();
            }
            if (data.AOLimits != null)
            {
                foreach (IDictionary IO in data.AOLimits)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(IO["AOLimitName"]));
                    _WriteCell(fo, xmlEncode());
                    _WriteCell(fo, xmlEncode(IO["AOLimitRem"]));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["AOLimitSum"].ToString()).ToString("C2", culture)));
                    fo.TREnd();
                }
            }
            if (data.OutLimits != null)
            {
                foreach (IDictionary IO in data.OutLimits)
                {
                    fo.TRStart();
                    _WriteCell(fo, xmlEncode(IO["OutLimitName"]));
                    _WriteCell(fo, xmlEncode());
                    _WriteCell(fo, xmlEncode(IO["OutLimitRem"]));
                    _WriteCell(fo, xmlEncode(Utils.ParseDBString(IO["OutLimitSum"].ToString()).ToString("C2", culture)));
                    fo.TREnd();
                }
            }
            fo.TRStart();
            fo.TRAddCell(xmlEncode("ИТОГО Расходы"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
            fo.TRAddCell(xmlEncode((fAOLimitSum + fOutcomesSum).ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();

            fo.TRStart();
            fo.TRAddCell(xmlEncode("Валовая прибыль"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
            fo.TRAddCell(xmlEncode((fIncomeSum - (fAOLimitSum + fOutcomesSum)).ToString("C2", culture)), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            fo.TREnd();

            double fAllOutcomse = fAOLimitSum + fOutcomesSum;

            fo.TRStart();
            fo.TRAddCell(xmlEncode("Плановая рентабельность"), "string", 3, 1, ITRepStyles.GROUP_HEADER);
            if (fAllOutcomse != 0)
            {
                fo.TRAddCell(xmlEncode(((fIncomeSum - fAllOutcomse) * 100 / fAllOutcomse).ToString("N2") + "%"), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            }
            else
            {
                fo.TRAddCell(xmlEncode(), "string", 1, 1, ITRepStyles.GROUP_HEADER);
            }
            fo.TREnd();

            fo.TEnd();
        }