Beispiel #1
0
 private static void AddMNDate(ref MNDates[] data, DataRow rows)
 {
     Array.Resize(ref data, data.Length + 1);
     data[data.Length - 1].Month = Convert.ToInt32(rows.ItemArray[2]);
     data[data.Length - 1].Year = Convert.ToInt32(rows.ItemArray[3]);
 }
Beispiel #2
0
        private static bool IsItMNDate(MNDates[] data, DataRow row)
        {
            bool flag = false;

            for (int i = 0; i < data.Length; i++)
                if (data[i].Month == Convert.ToInt32(row.ItemArray[2]) && data[i].Year == Convert.ToInt32(row.ItemArray[3]))
                {
                    flag = true;
                    break;
                }

            return flag;
        }
Beispiel #3
0
 /// <summary>
 /// Генерация строки с названием файла и путем с ведомостью для потребностей материалов для заданного месяца
 /// </summary>
 /// <param name="date">Заданная дата отчета (месяц и год)</param>
 /// <returns>Возвращает путь и название файла отчета</returns>
 public static string GetMNReportFileName(MNDates date)
 {
     return String.Format(@"{0}\Reports\MaterialsNeedsReport_{1}_{2}.html", GlobalVars.AppDir, date.Month, date.Year);
 }
Beispiel #4
0
 /// <summary>
 /// Генерация строки с названием и путем к файлу с ведомостью нормативной трудоемкости произв. программы по цехам
 /// </summary>
 /// <param name="date">Заданная дата отчета (месяц и год)</param>
 /// <returns>Возвращает путь к файлу с ведомостью</returns>
 public static string GetСSPReportFileName(MNDates date)
 {
     return String.Format(@"{0}\Reports\ComplexityShopProgramReport_{1}_{2}.html", GlobalVars.AppDir, date.Month, date.Year);
 }
Beispiel #5
0
        /// <summary>
        /// Функция для определения количества и дат для ведомостей по потребности в материалах по месяцам
        /// </summary>
        /// <param name="count">Найденное количество дат (=>ведомостей)</param>
        /// <returns>Возвращает массив найденных дат</returns>
        public static MNDates[] GetMNDatesCount(ref int count)
        {
            // выберем данные из таблицы "ПВИ"
            DatabaseLib.Select sel = new DatabaseLib.Select();
            sel.From("PlanProducts");
            DataTable dt = DBWorker.dbf.Execute(sel);

            MNDates[] data = new MNDates[0];
            // подсчитаем количество уникальных месяцев для производства изделий
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (!IsItMNDate(data, dt.Rows[i])) // если нет такой даты,
                    AddMNDate(ref data, dt.Rows[i]); // то добавим ее в массив
            }

            count = data.Length;
            return data;
        }
Beispiel #6
0
        /// <summary>
        /// Определение количества и кодов изделий, выпускаемых в текущем месяце по дате
        /// </summary>
        /// <param name="count"></param>
        /// <returns></returns>
        private static long[] GetProdCountInMonth(ref int count, out int[] plans, MNDates date)
        {
            // выборка данных по условию из ТБД "ПВИ"
            string str = String.Format("SELECT DISTINCT PlanProducts.ProductCode, PlanProducts.PlanCount FROM PlanProducts WHERE PlanProducts.Month = {0} and PlanProducts.Year = {1};",
                date.Month, date.Year);
            DataTable dt = DBWorker.dbf.Execute(str);

            count = dt.Rows.Count;
            long[] res = new long[count]; // коды изделий
            plans = new int[count]; // кол-во по плану для изделий
            for (int i = 0; i < count; i++)
            {
                res[i] = dt.Rows[i].Field<long>(0);
                plans[i] = Convert.ToInt32(dt.Rows[i].ItemArray[1]);
            }
            return res;
        }
Beispiel #7
0
        public static void GenerateMaterialsNeedsReport(MNDates date, string fname)
        {
            // создание файла и запись в него ведомости
            StreamWriter file = new StreamWriter(fname);

            // загрузка данных из ТБД "СТМ"
            DataTable dtm = DBWorker.SelectDataFromTable("СТМ");
            // загрузка данных из ТБД "СЕИ"
            DataTable dtu = DBWorker.SelectDataFromTable("СЕИ");

            // формирование заголовка HTML файла
            string Header = @"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
                              <html xmlns='http://www.w3.org/1999/xhtml'>
                              <head>
                              <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
                              <title>Сводная ведомость потребности в материалах в разрезе изделий</title>
                              <style type='text/css'>
                              .h1 {
                                    text-align: center;
                                    font-family: 'Times New Roman', Times, serif;
                                    color: #008;
                                    text-decoration: underline;
                                  }
                              .MyP1 {
                                    font-size: 24px;
                                    font-weight: bold;
                                    color: #900;
                                    }
                              </style>
                              </head>";
            file.WriteLine(Header);

            // начало тела HTML файла
            file.WriteLine("<body>");

            // формирование заголовка отчета
            file.WriteLine(String.Format("<h1 class='h1'>Сводная ведомость потребности в материалах в разрезе изделий на {0} месяц {1} года</h1>", GlobalFunctions.GetMonthString(date.Month), date.Year));

            // определение количества изделий, выпускаемых в данном месяце
            int count = 0;
            int[] Plans;
            long[] Roots = GetProdCountInMonth(ref count, out Plans, date);

            // для каждого изделия формирование своей таблицы
            string str;
            DataTable dt;
            for (int i = 0; i < count; i++)
            {
                // выборка из таблицы СНП описания продукции для корня
                str = String.Format("SELECT ProductKey, Name, Designation FROM ProductNames WHERE ProductNames.ProductKey = {0}", Roots[i]);
                dt = DBWorker.dbf.Execute(str);

                // формирование заголовка таблицы и самой таблицы
                file.WriteLine("<p align = 'center'><table border='1' cellspacing='0' width='90%'>");
                file.WriteLine(String.Format(@"<tr class='MyP1'>
                                                <th>Код, наименование изделия</th>
                                                <td>{0}</td>
                                                <th>План выпуска изделий</th>
                                                <td>{1}</td>
                                              </tr>", String.Format("{0} {1}", dt.Rows[0].ItemArray[0], dt.Rows[0].ItemArray[1], dt.Rows[0].ItemArray[2]), Plans[i]));

                // формируем заголовок для материалов и их норм
                file.WriteLine("<tr> <th colspan='2'>Код, наименование материала</th> <th>Потребность в материале</th> <th>Единица измерения</th> </tr>");

                // выбираем сведения по материалам из таблицы "ПМТВ" для текущего изделия
                str = String.Format(@"SELECT
                                        MaterialsNeeds.MaterialCode,
                                        MaterialsNeeds.PlanCount
                                    FROM
                                        MaterialsNeeds
                                        INNER JOIN ProdNameStand ON (ProdNameStand.ProductCode = MaterialsNeeds.ProductCode and ProdNameStand.MaterialCode = MaterialsNeeds.MaterialCode)
                                    WHERE ProdNameStand.ProductCode = {0};", Roots[i]);
                dt = DBWorker.dbf.Execute(str);

                // пишем данные о потребностях материалов в отчет
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    file.WriteLine(String.Format("<tr align='left'> <td colspan='2'>{0}</td> <td>{1}</td> <td>{2}</td> </tr>",
                        GetMaterialData(dtm, Convert.ToInt64(dt.Rows[j].ItemArray[0])), dt.Rows[j].ItemArray[1],
                        GetMaterialUnit(dtm, dtu, Convert.ToInt64(dt.Rows[j].ItemArray[0]))));
                }

                // завершение таблицы
                file.WriteLine("</table></p> <p> </p>");
            }
            // завершение тела HTML файла
            file.WriteLine("</p></body></html>");

            // закрытие файла
            file.Close();
        }
Beispiel #8
0
        public static void GenerateMaterialsNeeds2Report(MNDates date, string fname)
        {
            // создание файла и запись в него ведомости
            StreamWriter file = new StreamWriter(fname);

            // загрузка данных из ТБД "СТМ"
            DataTable dtm = DBWorker.SelectDataFromTable("СТМ");
            // загрузка данных из ТБД "СЕИ"
            DataTable dtu = DBWorker.SelectDataFromTable("СЕИ");

            // формирование заголовка HTML файла
            string Header = @"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
                              <html xmlns='http://www.w3.org/1999/xhtml'>
                              <head>
                              <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
                              <title>Сводная ведомость потребности в материалах</title>
                              <style type='text/css'>
                              .h1 {
                                    text-align: center;
                                    font-family: 'Times New Roman', Times, serif;
                                    color: #008;
                                    text-decoration: underline;
                                  }
                              .MyP1 {
                                    font-size: 24px;
                                    font-weight: bold;
                                    color: #900;
                                    }
                              </style>
                              </head>";
            file.WriteLine(Header);

            // начало тела HTML файла
            file.WriteLine("<body>");

            // формирование заголовка отчета
            file.WriteLine(String.Format("<h1 class='h1'>Сводная ведомость потребности в материалах на {0} месяц {1} года</h1>", GlobalFunctions.GetMonthString(date.Month), date.Year));

            // для каждого изделия формирование своей таблицы
            string str;
            DataTable dt;

            // формирование заголовка таблицы и самой таблицы
            file.WriteLine("<p align = 'center'><table border='1' cellspacing='0' width='90%'>");

            // формируем заголовок для материалов и их норм
            file.WriteLine("<tr> <th>Код, наименование материала</th> <th>Потребность в материале</th> <th>Единица измерения</th> </tr>");

            // выбираем сведения по материалам из таблицы "ПМТВ" для текущего изделия
            str = String.Format(@"SELECT
                                        MaterialsNeeds2.MaterialCode,
                                        MaterialsNeeds2.PlanCount
                                     FROM
                                        MaterialsNeeds2
                                     WHERE
                                        MaterialsNeeds2.Month = {0} and MaterialsNeeds2.Year = {1};", date.Month, date.Year);
            dt = DBWorker.dbf.Execute(str);

            // пишем данные о потребностях материалов в отчет
            for (int j = 0; j < dt.Rows.Count; j++)
            {
                file.WriteLine(String.Format("<tr align='left'> <td>{0}</td> <td>{1}</td> <td>{2}</td> </tr>",
                                             GetMaterialData(dtm, Convert.ToInt64(dt.Rows[j].ItemArray[0])), dt.Rows[j].ItemArray[1],
                                             GetMaterialUnit(dtm, dtu, Convert.ToInt64(dt.Rows[j].ItemArray[0]))));
            }

            // завершение таблицы
            file.WriteLine("</table></p> <p> </p>");
            // завершение тела HTML файла
            file.WriteLine("</p></body></html>");

            // закрытие файла
            file.Close();
        }
Beispiel #9
0
        public static void GenerateComplexityProgramReport(MNDates date, string fname)
        {
            // создание файла и запись в него ведомости
            StreamWriter file = new StreamWriter(fname);

            // загрузка данных из ТБД "СНП"
            DataTable dtp = DBWorker.SelectDataFromTable("СНП");

            // формирование заголовка HTML файла
            string Header = @"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
                              <html xmlns='http://www.w3.org/1999/xhtml'>
                              <head>
                              <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
                              <title>Ведомость нормативной трудоемкости производственной программы</title>
                              <style type='text/css'>
                              .h1 {
                                    text-align: center;
                                    font-family: 'Times New Roman', Times, serif;
                                    color: #008;
                                    text-decoration: underline;
                                  }
                              .MyP1 {
                                    font-size: 24px;
                                    font-weight: bold;
                                    color: #900;
                                    }
                              </style>
                              </head>";
            file.WriteLine(Header);

            // начало тела HTML файла
            file.WriteLine("<body>");

            // формирование заголовка отчета
            file.WriteLine(String.Format("<h1 class='h1'>Ведомость нормативной трудоемкости производственной программы на {0} месяц {1} года</h1>", GlobalFunctions.GetMonthString(date.Month), date.Year));

            // формирование заголовка таблицы и самой таблицы
            file.WriteLine("<p align = 'center'><table border='1' cellspacing='0' width='90%'>");

            // формируем заголовок для таблицы
            file.WriteLine("<tr class='MyP1'> <th>Код изделия</th> <th>Наименование изделия</th> <th>План выпуска</th> <th>Трудоемкость на изделие</th> <th>Трудоемкость по плану</th> </tr>");

            // выборка данных из таблицы "НТПП"
            string str = String.Format(@"SELECT
                                            ComplexityProgram.ProductCode,
                                            ComplexityProgram.PlanCount,
                                            ComplexityProgram.Tshk,
                                            ComplexityProgram.Tshk * ComplexityProgram.PlanCount
                                        FROM
                                            ComplexityProgram
                                        WHERE
                                            ComplexityProgram.Month = {0} and ComplexityProgram.Year = {1};", date.Month, date.Year);
            DataTable dt = DBWorker.dbf.Execute(str);

            // итоговая трудоемкость по плану
            float sum = 0, tmp;

            // формирование строк таблицы
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                tmp = Convert.ToSingle(dt.Rows[i].ItemArray[3]);
                file.WriteLine(String.Format("<tr> <td>{0}</td> <td>{1}</td> <td>{2}</td> <td>{3}</td> <td>{4}</td> </tr>", dt.Rows[i].ItemArray[0],
                    GetProductData2(dtp, dt.Rows[i].Field<long>(0)), dt.Rows[i].ItemArray[1], dt.Rows[i].ItemArray[2],
                    tmp));
                // подсчет трудоемкости по плану для итогов
                sum += tmp;
            }

            // вывод итогов в конце таблицы
            file.WriteLine(String.Format("<tr> <th>Итого:</th> <td colspan='3' align='center'>-</td> <td>{0}</td> </tr>", sum));

            // завершение таблицы
            file.WriteLine("</table></p> <p> </p>");
            // завершение тела HTML файла
            file.WriteLine("</p></body></html>");

            // закрытие файла
            file.Close();
        }