예제 #1
0
/*
 *      public static void WayBillInReport(Guid id, BaseEntities db, string template_name)
 *      {
 *          var dataForReport = new Dictionary<string, IList>();
 *
 *          var wb = db.v_WaybillList.Where(w => w.Id == id).AsNoTracking().OrderBy(o => o.Num).ToList();
 *          int wbill_id = wb.First().WbillId;
 *
 *          dataForReport.Add("WayBillList", wb);
 *          dataForReport.Add("range1", db.GetWaybillDetIn(wbill_id).OrderBy(o => o.Num).ToList());
 *
 *           IHelper.Print(dataForReport, template_name);
 *      }
 *
 *      public static void WayBillReport(Guid id, BaseEntities db, string template_name)
 *      {
 *          var dataForReport = new Dictionary<string, IList>();
 *
 *          var wb = db.v_WaybillList.Where(w => w.Id == id).AsNoTracking().ToList();
 *          if (wb.Any())
 *          {
 *              int wbill_id = wb.First().WbillId;
 *
 *              dataForReport.Add("WayBillList", wb);
 *              dataForReport.Add("WayBillItems", db.GetWaybillDetIn(wbill_id).ToList().OrderBy(o => o.Num).ToList());
 *              dataForReport.Add("Commission", db.Commission.Where(w => w.WbillId == wbill_id).Select(s => new
 *              {
 *                  MainName = s.Kagent.Name,
 *                  FirstName = s.Kagent1.Name,
 *                  SecondName = s.Kagent2.Name,
 *                  ThirdName = s.Kagent3.Name
 *              }).ToList());
 *
 *              IHelper.Print(dataForReport, template_name);
 *          }
 *          else
 *          {
 *              MessageBox.Show("Документ відсутній!");
 *          }
 *      }
 *
 *      public static Dictionary<string, IList> WayBillOrderedOutReport(Guid id, BaseEntities db)
 *      {
 *          var dataForReport = new Dictionary<string, IList>();
 *
 *          var wb = db.v_WaybillList.Where(w => w.Id == id).AsNoTracking().ToList();
 *          if (wb.Any())
 *          {
 *              int wbill_id = wb.First().WbillId;
 *
 *              var wb_list = db.GetWaybillDetIn(wbill_id).ToList().OrderBy(o => o.Num).ToList();
 *              dataForReport.Add("WayBillList", wb);
 *              dataForReport.Add("WayBillItems", wb_list);
 *              dataForReport.Add("WayBillItems2", wb_list);
 *          }
 *          else
 *          {
 *              MessageBox.Show("Документ відсутній!");
 *          }
 *
 *          return dataForReport;
 *      }
 *
 *      public static void WayBillMoveReport(Guid id, BaseEntities db, string template_name)
 *      {
 *          var dataForReport = new Dictionary<string, IList>();
 *
 *          var wb = db.v_WaybillList.Where(w => w.Id == id).AsNoTracking().ToList();
 *          int wbill_id = wb.First().WbillId;
 *          var wb_items = db.GetWaybillDetIn(wbill_id).OrderBy(o => o.Num).ToList();
 *          dataForReport.Add("WayBillList", wb);
 *          dataForReport.Add("WayBillItems", wb_items.GroupBy(g => new { g.MatId, g.MatName, g.MsrName }).Select((s, index) => new
 *          {
 *              Num = index + 1,
 *              s.Key.MatName,
 *              s.Key.MsrName,
 *              Amount = s.Sum(sum => sum.Amount)
 *          }).ToList());
 *          dataForReport.Add("SummaryField", wb_items.GroupBy(g => new {g.MsrName}).Select(s => new
 *          {
 *              s.Key.MsrName,
 *              Amount = s.Sum(a => a.Amount),
 *          }).ToList());
 *
 *          IHelper.Print(dataForReport, template_name);
 *      }
 *
 *
 *      public static void WayBillInvwntoryReport(Guid id, BaseEntities db, string template_name)
 *      {
 *          var dataForReport = new Dictionary<string, IList>();
 *          var rel = new List<object>();
 *
 *          var wb = db.v_WaybillList.Where(w => w.Id == id).AsNoTracking().ToList();
 *          int wbill_id = wb.First().WbillId;
 *          var items = db.GetWaybillDetIn(wbill_id).OrderBy(o => o.Num).ToList();
 *
 *          var mat_grp = items.GroupBy(g => new { g.GrpName, g.GrpId }).Select(s => new
 *          {
 *              s.Key.GrpId,
 *              Name = s.Key.GrpName,
 *              TotalOrd = s.Sum(xs => xs.Total)
 *          }).OrderBy(o => o.Name).ToList();
 *
 *          rel.Add(new
 *          {
 *              pk = "GrpId",
 *              fk = "GrpId",
 *              master_table = "MatGroup",
 *              child_table = "WayBillItems"
 *          });
 *
 *          dataForReport.Add("MatGroup", mat_grp);
 *          dataForReport.Add("_realation_", rel);
 *          dataForReport.Add("WayBillList", wb);
 *          dataForReport.Add("WayBillItems",items );
 *          dataForReport.Add("Commission", db.Commission.Where(w => w.WbillId == wbill_id).Select(s => new
 *          {
 *              MainName = s.Kagent.Name,
 *              FirstName = s.Kagent1.Name,
 *              SecondName = s.Kagent2.Name,
 *              ThirdName = s.Kagent3.Name
 *          }).ToList());
 *          dataForReport.Add("SummaryField", items.GroupBy(g => 1).Select(s => new
 *          {
 *              SummAll = s.Sum(a => (a.Discount*a.Nds)- (a.Amount * a.Price)),
 *          }).ToList());
 *
 *          IHelper.Print(dataForReport, template_name);
 *      }*/

        public void WayBillOutReport(Guid id)
        {
            var wb = _db.v_WaybillList.Where(w => w.Id == id).AsNoTracking().ToList();

            if (wb != null)
            {
                var m          = new MoneyToStr("UAH", "UKR", "TEXT");
                wb.First().www = m.convertValue(wb.First().SummInCurr.Value);
            }

            var ent_id = wb.First().EntId;
            var wb_det = _db.GetWayBillDetOut(wb.First().WbillId).ToList().OrderBy(o => o.Num).ToList();

            data_for_report.Add("EntAccount", _db.EnterpriseAccount.Where(w => w.KaId == ent_id && w.Def == 1).ToList());
            data_for_report.Add("WayBillList", wb);
            data_for_report.Add("range1", wb_det);

            var dt   = DateTime.Now.Date;
            var w_id = wb.First().WbillId;
            var p    = _db.WaybillDet.Where(w => w.WbillId == w_id && w.Materials.MatRecipe.Any()).Select(s => new
            {
                s.Num,
                s.Amount,
                s.Price,
                s.Materials.Name,
                s.Materials.Measures.ShortName,
                s.Materials.Artikul,
                s.Materials.CF1,
                s.Materials.CF2,
                s.Materials.CF3,
                s.Materials.CF4,
                s.Materials.CF5,
                OnDate = dt < s.OnDate ? DbFunctions.AddDays(s.OnDate, -1) : s.OnDate
            }).OrderBy(o => o.Num).ToList();

            data_for_report.Add("Posvitcheny", p);

            var oz = _db.GetUsedMaterials(-1, dt.AddDays(1), wb.First().KaId).ToList()
                     .OrderBy(o => o.MatName)
                     .Select((s, index) => new
            {
                Num = index + 1,
                s.MatName,
                s.InvNumber,
                s.Price,
                s.Remain,
                s.MsrName
            }).ToList();

            data_for_report.Add("range_oz", oz);


            var summary = wb_det.Where(w => w.PosType != 2).GroupBy(g => g.MsrName).Select(s => new
            {
                MsrName = s.Key,
                Amount  = s.Sum(sum => sum.Amount)
            });

            data_for_report.Add("Summary", summary.ToList());
        }
예제 #2
0
 /** setUp. */
 private void setup()
 {
     moneyToStrUAH     = new MoneyToStr("UAH", "UKR", "NUMBER");
     moneyToStrRUR     = new MoneyToStr("RUR", "RUS", "NUMBER");
     moneyToStrUSDENG  = new MoneyToStr("USD", "ENG", "TEXT");
     moneyToStrPER100  = new MoneyToStr("PER100", "RUS", "TEXT");
     moneyToStrPER1000 = new MoneyToStr("PER1000", "RUS", "TEXT");
 }
예제 #3
0
 /** check percentToStr. */
 public void test_checkPercentToStrRus()
 {
     assert_equal("одна целая, одна сотая процента", MoneyToStr.percentToStr(V_1_01D, "RUS"));
     assert_equal("одна целая, одна десятая процента", MoneyToStr.percentToStr(V_1_1D, "RUS"));
     assert_equal("одна целая, две сотых процента", MoneyToStr.percentToStr(V_1_02D, "RUS"));
     assert_equal("одна целая, одиннадцать сотых процента", MoneyToStr.percentToStr(V_1_11D, "RUS"));
     assert_equal("две целых, две сотых процента", MoneyToStr.percentToStr(V_2_02D, "RUS"));
     assert_equal("пять целых, пять сотых процента", MoneyToStr.percentToStr(V_5_05D, "RUS"));
     assert_equal("пять целых, пять десятитысячных процента", MoneyToStr.percentToStr(V_5_0005D, "RUS"));
 }
예제 #4
0
        public static void PayDocReport(Guid id, BaseEntities db, string template_name)
        {
            var dataForReport = new Dictionary <string, IList>();
            var pd            = db.v_PayDoc.Where(w => w.Id == id).AsNoTracking().ToList();

            if (pd != null)
            {
                var m = new MoneyToStr("UAH", "UKR", "TEXT");
                pd.First().CurrName = m.convertValue(pd.First().Total);
            }

            dataForReport.Add("PayDoc", pd);
            dataForReport.Add("Enterprise", db.KagentList.Where(w => w.KType == 3).Take(1).ToList());

            IHelper.Print(dataForReport, template_name);
        }
예제 #5
0
        public static void InvoiceReport(Guid id, BaseEntities db, string template_name)
        {
            var data_report = new Dictionary <string, IList>();

            var wb = db.v_WaybillList.Where(w => w.Id == id).AsNoTracking().ToList();

            if (wb != null)
            {
                var m          = new MoneyToStr("UAH", "UKR", "TEXT");
                wb.First().www = m.convertValue(wb.First().SummInCurr.Value);
            }

            var ent_id = wb.First().EntId;

            data_report.Add("EntAccount", db.EnterpriseAccount.Where(w => w.KaId == ent_id).ToList());
            data_report.Add("WayBillList", wb);
            data_report.Add("WayBillItems", db.GetWayBillDetOut(wb.First().WbillId).OrderBy(o => o.Num).ToList());

            var w_id = wb.First().WbillId;

            IHelper.Print(data_report, template_name);
        }
예제 #6
0
    /**
     * Converts percent to string.
     * @param amount the amount of percent
     * @param lang the language (RUS, UKR)
     * @return the string of percent
     */
    public static string percentToStr(double amount, string lang)
    {
        if (lang == null)
        {
            throw new ArgumentNullException("Language is null");
        }
        long   intPart   = (long)amount;
        long   fractPart = 0;
        string result    = "";

        if (amount == (long)amount)
        {
            result = new MoneyToStr("PER10", lang, "TEXT").convert(intPart, fractPart);
        }
        else if (Math.Round(amount * NUM10, 4) == (long)(amount * NUM10))
        {
            fractPart = (long)Math.Round((amount - intPart) * NUM10);
            result    = new MoneyToStr("PER10", lang, "TEXT").convert(intPart, fractPart);
        }
        else if (Math.Round(amount * NUM100, 4) == (long)(amount * NUM100))
        {
            fractPart = (long)Math.Round((amount - intPart) * NUM100);
            result    = new MoneyToStr("PER100", lang, "TEXT").convert(intPart, fractPart);
        }
        else if (Math.Round(amount * NUM1000, 4) == (long)(amount * NUM1000))
        {
            fractPart = (long)Math.Round((amount - intPart) * NUM1000);
            result    = new MoneyToStr("PER1000", lang, "TEXT").convert(intPart, fractPart);
        }
        else
        {
            fractPart = (long)Math.Round((amount - intPart) * NUM10000);
            result    = new MoneyToStr("PER10000", lang, "TEXT").convert(intPart, fractPart);
        }
        return(result);
    }
예제 #7
0
 /** setUp. */
 private void setup()
 {
     moneyToStrUAH = new MoneyToStr("UAH", "UKR", "NUMBER");
     moneyToStrRUR = new MoneyToStr("RUR", "RUS", "NUMBER");
     moneyToStrUSDENG = new MoneyToStr("USD", "ENG", "TEXT");
     moneyToStrPER100 = new MoneyToStr("PER100", "RUS", "TEXT");
     moneyToStrPER1000 = new MoneyToStr("PER1000", "RUS", "TEXT");
 }
예제 #8
0
        private void ExportDoc(string nameFileExport)
        {
            exportData = new OfficeExport.ExportData();

            exportData.nameFileTemplate = Application.StartupPath + "\\..\\..\\resources\\docs\\act_debit_template.docx";
            exportData.nameFileExport   = nameFileExport;                               // Application.StartupPath + "\\..\\..\\resources\\docs\\act_debit_number" + ActDebit.act_number + ".docx";
            exportData.tableIndex       = 2;                                            // номер таблицы в доке
            exportData.textToReplace    = new List <string>()
            {
                "[<наименование_организации>]",
                "[<фио_гл_механик>]",
                "[<дата_списания>]",
                "[<номер_акта>]",
                "[<сумма_списания_прописью_рубли>]",
                "[<фио_зам_ген_директор>]",
                "[<фио_нач_отд_закупок>]",
                "[<фио_инженер>]",
                "[<фио_зам_главбух>]"
            };

            string rubles = new MoneyToStr("RUR", "RUS", "NUMBER").convertValue(Convert.ToDouble(ActDebitTotalCost));

            Organization organization = (Organization)comboBox_Organization.SelectedItem;
            string       temp         = "";

            if (organization != null)
            {
                temp = organization.name;
            }

            // тут какие-то текстбоксы видимо с формы
            exportData.textReplaceWith = new List <string>()
            {
                temp,                                                                           // название конторы
                textBox_FIO_MainMechanic.Text,                                                  // фио главного механика
                DateToString.Translate(ActDebit.date, "г."),                                    // дата как «___»________202_г.
                ActDebit.act_number.ToString(),                                                 // номер акта
                rubles,                                                                         // сумма прописью - рубли
                textBox_FIO_DeputyDirector.Text,                                                // фио зам.ген.директора
                textBox_FIO_HeadProcurement.Text,                                               // нач отдела закупок
                textBox_FIO_Engineer.Text,                                                      // инженер
                textBox_FIO_DeputyAccountant.Text                                               // зам главбуха
            };

            // если надо открыть файл после экспорта автоматически
            exportData.openFileExport = checkBox_OpenFileExport.Checked;

            // и самый интересный момент - таблица
            // количество строк с учетом что одна строка по умолчанию есть внутри шаблона
            // какой столбик из datagridview в какой столбик в доке
            // и еще есть столбцы по умолчанию
            exportData.indicesDefaultValues = new List <int>()
            {
                6,                      // код по ОКЕИ ед. измерения
                7,                      // наименование ед. измерения
                8                       // количество
            };
            exportData.valuesDefaultValues = new List <string>()
            {
                "796",                  // код по ОКЕИ ед. измерения
                "шт.",                  // наименование ед. измерения
                "1"                     // количество
            };

            exportData.indicesCustomValues = new List <int>()
            {
                2,                      // цех
                3,                      // группа оборудования
                4,                      // инвентарный номер
                5,                      // наименование оборудования
                9,                      // остаточная стоимость
                10                      // причина списания
            };

            exportData.valuesCustomValues = new List <List <string> >();

            foreach (DataGridViewRow row in dataGridView_Data.Rows)
            {
                string workshop  = row.Cells[1].Value.ToString();
                string group     = row.Cells[2].Value.ToString();
                string inventory = row.Cells[3].Value.ToString();
                string name      = row.Cells[4].Value.ToString();
                string cost      = row.Cells[5].Value.ToString();
                string reason    = row.Cells[6].Value.ToString();

                exportData.valuesCustomValues.Add(
                    new List <string>()
                {
                    workshop,                                   // цех
                    group,                                      // группа оборудования
                    inventory,                                  // инвентарный номер
                    name,                                       // наименование
                    cost,                                       // остаточная стоимость
                    reason                                      // причина списания
                });
            }
        }
예제 #9
0
        private void ExportDoc(string nameFileExport)
        {
            exportData = new OfficeExport.ExportData();

            exportData.nameFileTemplate = Application.StartupPath + "\\..\\..\\resources\\docs\\leasing_contract_template.docx";
            exportData.nameFileExport   = nameFileExport;                   // Application.StartupPath + "\\..\\..\\resources\\docs\\act_debit_number" + ActDebit.act_number + ".docx";
            exportData.tableIndex       = 3;                                // номер таблицы в доке
            exportData.textToReplace    = new List <string>()
            {
                "[<номер_лизинга>]",                                            // 123
                "[<шапка_город>]",                                              // г. Барнаул
                "[<шапка_дата>]",                                               // «1» апрель 2021 г.
                "[<организация_лизингодатель>]",                                // ООО "Хомячки"
                "[<представитель_лизингодатель>]",                              // Хомяков Х.Х.
                "[<организация_мы>]",                                           // ООО "Хомячки2"
                "[<представитель_мы>]",                                         // Хомяков Х.Х.2

                "[<1.3_стоимость_оборудования>]",                               // хз - пропись или цифры
                "[<1.4_дата_поставки_оборудования>]",                           // «1» апрель 2021

                "[<2.2_срок_пользования_оборудованием>]",                       // 5 лет, 11 месяцев
                "[<2.3_дата_окончания_договора>]",                              // «1» апреля 2021 года

                "[<3.1.1_дата_договора>]",                                      // «1» апрель 2021
                "[<3.2.1_пункт_поставки>]",                                     // ну какой-то адрес

                "[<4.1_лизингодатель_расчетный_счет>]",
                "[<4.1_лизингодатель_банк>]",
                "[<4.1_лизингодатель_бик>]",

                "[<4.4_дней_для_первого_платежа>]",                                     // 10

                "[<5.1_пункт_поставки>]",                                               // дублирование п1.4
                "[<5.4_срок_отказа>]",                                                  // 3

                "[<6.1_пеня>]",                                                         // 0,5
                "[<6.1_макс_платеж>]",                                                  // 5
                "[<6.2_неустойка>]",                                                    // хз - пропись или цифры

                "[<7.1_дней_форс_мажора>]",

                "[<9.3_лизингодатель_юр_адрес_и_телефон>]",
                "[<9.3_мы_юр_адрес_и_телефон>]",


                "[<лизингодатель_юр_адрес>]",
                "[<лизингодатель_почт_адрес>]",
                "[<лизингодатель_телефон>]",
                "[<лизингодатель_инн>]",
                "[<лизингодатель_расчет_счет>]",
                "[<лизингодатель_банк>]",
                "[<лизингодатель_корресп_счет>]",
                "[<лизингодатель_бик>]",

                "[<мы_юр_адрес>]",
                "[<мы_почт_адрес>]",
                "[<мы_телефон>]",
                "[<мы_инн>]",
                "[<мы_расчет_счет>]",
                "[<мы_банк>]",
                "[<мы_корресп_счет>]",
                "[<мы_бик>]",

                "[<приложение_номер_договора>]",
                "[<приложение_дата_договора>]",                                         //«1» апрель 2021 года

                "[<приложение_лизингодатель>]",
                "[<приложение_лизингополучат>]"
            };

            string rubles = new MoneyToStr("RUR", "RUS", "NUMBER").convertValue(Convert.ToDouble(LeasingContractTotalCost));

            // тут какие-то текстбоксы видимо с формы
            exportData.textReplaceWith = new List <string>()
            {
                contract.contract_number,
                "г. " + textBox_City.Text,
                DateToString.Translate(contract.date, "г."),
                leaser.name,
                textBox_FIO_Leaser.Text,
                lessee.name,
                textBox_FIO_Lessee.Text,

                rubles,
                DateToString.Translate(contract.date_delivery),

                ConvertYearsMonths.Translate(contract.period_of_use),
                DateToString.Translate(contract.date_end, "года"),

                DateToString.Translate(contract.date),
                contract.address_delivery,

                leaser.payment_account,
                leaser.bank,
                leaser.BIK,

                contract.days_for_first_payment.ToString(),

                contract.address_delivery,
                contract.days_for_report.ToString(),

                contract.penalty.ToString(),
                contract.max_penalty.ToString(),
                contract.penalty_fee.ToString(),

                contract.days_for_force_majeure.ToString(),

                leaser.legal_address + " " + leaser.phone,
                lessee.legal_address + " " + lessee.phone,

                leaser.legal_address,
                leaser.mailing_address,
                leaser.phone,
                leaser.INN,
                leaser.payment_account,
                leaser.bank,
                leaser.correspondent_account,
                leaser.BIK,

                lessee.legal_address,
                lessee.mailing_address,
                lessee.phone,
                lessee.INN,
                lessee.payment_account,
                lessee.bank,
                lessee.correspondent_account,
                lessee.BIK,

                contract.contract_number,
                DateToString.Translate(contract.date, "года"),

                leaser.name + " " + textBox_FIO_Leaser.Text,
                lessee.name + " " + textBox_FIO_Lessee.Text
            };

            // если надо открыть файл после экспорта автоматически
            exportData.openFileExport = checkBox_OpenFileExport.Checked;

            // и самый интересный момент - таблица
            // количество строк с учетом что одна строка по умолчанию есть внутри шаблона
            // какой столбик из datagridview в какой столбик в доке
            // и еще есть столбцы по умолчанию
            exportData.indicesDefaultValues = new List <int>()
            {
                5                       // наименование ед. измерения
            };
            exportData.valuesDefaultValues = new List <string>()
            {
                "шт."                   // наименование ед. измерения
            };

            exportData.indicesCustomValues = new List <int>()
            {
                2,                      // наименование оборудования
                3,                      // стоимость за ед.
                4,                      // кол-во
                6                       // стоимость
            };

            exportData.valuesCustomValues = new List <List <string> >();

            foreach (DataGridViewRow row in dataGridView_Data.Rows)
            {
                string name         = row.Cells[0].Value.ToString();
                string cost_per_one = row.Cells[1].Value.ToString();
                string amount       = row.Cells[2].Value.ToString();
                string cost_per_all = row.Cells[4].Value.ToString();

                exportData.valuesCustomValues.Add(
                    new List <string>()
                {
                    name,
                    cost_per_one,
                    amount,
                    cost_per_all
                });
            }
        }
예제 #10
0
 /**
  * Converts percent to string.
  * @param amount the amount of percent
  * @param lang the language (RUS, UKR)
  * @return the string of percent
  */
 public static string percentToStr(double amount, string lang)
 {
     if (lang == null) {
         throw new ArgumentNullException("Language is null");
     }
     long intPart = (long) amount;
     long fractPart = 0;
     string result = "";
     if (amount == (long) amount) {
         result = new MoneyToStr("PER10", lang, "TEXT").convert(intPart, fractPart);
     } else if (Math.Round(amount * NUM10, 4) == (long) (amount * NUM10)) {
         fractPart = (long) Math.Round((amount - intPart) * NUM10);
         result = new MoneyToStr("PER10", lang, "TEXT").convert(intPart, fractPart);
     } else if (Math.Round(amount * NUM100, 4) == (long) (amount * NUM100)) {
         fractPart = (long) Math.Round((amount - intPart) * NUM100);
         result = new MoneyToStr("PER100", lang, "TEXT").convert(intPart, fractPart);
     } else if (Math.Round(amount * NUM1000, 4) == (long) (amount * NUM1000)) {
         fractPart = (long) Math.Round((amount - intPart) * NUM1000);
         result = new MoneyToStr("PER1000", lang, "TEXT").convert(intPart, fractPart);
     } else {
         fractPart = (long) Math.Round((amount - intPart) * NUM10000);
         result = new MoneyToStr("PER10000", lang, "TEXT").convert(intPart, fractPart);
     }
     return result;
 }
예제 #11
0
 public void test_percentToStr()
 {
     assert_equal("двенадцать целых, ноль десятых процента", MoneyToStr.percentToStr(12, "RUS"));
 }