private void Window_Activated(object sender, EventArgs e)
        {
            try
            {
                ReportDocument reportDocument = new ReportDocument();

                StreamReader reader = new StreamReader(new FileStream(@"Templates\SpareSalesByCodePeriodReport.xaml", FileMode.Open, FileAccess.Read));
                reportDocument.XamlData = reader.ReadToEnd();
                reportDocument.XamlImagePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Templates\");
                reader.Close();

                ReportData data = new ReportData();
                DataAccess da = new DataAccess();
                string BCC = da.getBasicCurrencyCode();

                // Таблица ТОВАРЫ В НАКЛАДНОЙ
                DataTable dt = new DataTable("mtable");

                // описываем столбцы таблицы
                dt.Columns.Add("Num", typeof(int));
                dt.Columns.Add("WarehouseName", typeof(string));
                dt.Columns.Add("OutgoNum", typeof(string));
                dt.Columns.Add("AccountName", typeof(string));
                dt.Columns.Add("OutgoDate", typeof(string));
                dt.Columns.Add("Q", typeof(int));
                dt.Columns.Add("P", typeof(double));
                dt.Columns.Add("VAT", typeof(string));
                dt.Columns.Add("T", typeof(double));

                // забиваем таблицу данными
                List<SpareInSpareOutgoView> LIST2 = da.GetSpareInSpareOutgoByCodePeriod(Spare.id, dateFrom, dateTo, WarehouseID);
                decimal asum = 0;
                try
                {
                    for (int i = 0; i < LIST2.Count; i++)
                    {
                        asum += LIST2[i].total_sum;
                        string AN = LIST2[i].AccountName;
                        string od = LIST2[i].OutgoDate.Value.ToShortDateString();
                        string on = "нет";
                        int OutgoID = LIST2[i].spare_outgo_id;
                        spare_outgo so = da.SpareOutgoGet(OutgoID);
                        if (so != null)
                            on = so.IDN.ToString();
                        dt.Rows.Add(new object[] {
                            i+1,
                            LIST2[i].WarehouseName,
                            on,
                            AN,
                            od,
                            LIST2[i].quantity,
                            LIST2[i].purchase_price,
                            LIST2[i].VatRateName,
                            LIST2[i].total_sum
                        });
                    }
                }
                catch (Exception exc)
                {
                    throw exc;
                }
                string str_ts = RSDN.RusCurrency.Str(asum, "BYR");
                string strDate = dateFrom.Day.ToString();
                string mnth = "";
                switch (dateFrom.Month)
                {
                    case 1:
                        mnth = "января";
                        break;

                    case 2:
                        mnth = "февраля";
                        break;

                    case 3:
                        mnth = "марта";
                        break;

                    case 4:
                        mnth = "апреля";
                        break;

                    case 5:
                        mnth = "мая";
                        break;

                    case 6:
                        mnth = "июня";
                        break;

                    case 7:
                        mnth = "июля";
                        break;

                    case 8:
                        mnth = "августа";
                        break;

                    case 9:
                        mnth = "сентября";
                        break;

                    case 10:
                        mnth = "октября";
                        break;

                    case 11:
                        mnth = "ноября";
                        break;

                    case 12:
                        mnth = "декабря";
                        break;
                }
                strDate += " " + mnth + " " + dateFrom.Year + " г.";

                data.ReportDocumentValues.Add("ReportDate1", strDate); // print date is now

                // =======================
                strDate = dateTo.Day.ToString();
                mnth = "";
                switch (dateTo.Month)
                {
                    case 1:
                        mnth = "января";
                        break;

                    case 2:
                        mnth = "февраля";
                        break;

                    case 3:
                        mnth = "марта";
                        break;

                    case 4:
                        mnth = "апреля";
                        break;

                    case 5:
                        mnth = "мая";
                        break;

                    case 6:
                        mnth = "июня";
                        break;

                    case 7:
                        mnth = "июля";
                        break;

                    case 8:
                        mnth = "августа";
                        break;

                    case 9:
                        mnth = "сентября";
                        break;

                    case 10:
                        mnth = "октября";
                        break;

                    case 11:
                        mnth = "ноября";
                        break;

                    case 12:
                        mnth = "декабря";
                        break;
                }
                strDate += " " + mnth + " " + dateTo.Year + " г.";
                data.ReportDocumentValues.Add("ReportDate2", strDate); // print date is now

                data.ReportDocumentValues.Add("SpareName", Spare.name);
                data.ReportDocumentValues.Add("SpareCodeShatem", Spare.codeShatem);
                data.ReportDocumentValues.Add("SpareCode", Spare.code);
                data.ReportDocumentValues.Add("asum", asum);
                data.DataTables.Add(dt);

                DateTime dateTimeStart = DateTime.Now; // start time measure here
                XpsDocument xps = reportDocument.CreateXpsDocument(data);
                documentViewer.Document = xps.GetFixedDocumentSequence();
            }
            catch (Exception ex)
            {
                // show exception
                MessageBox.Show(ex.Message + "\r\n\r\n" + ex.GetType() + "\r\n" + ex.StackTrace, ex.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Stop);
            }
        }
        private void Window_Activated(object sender, EventArgs e)
        {
            try
            {
                ReportDocument reportDocument = new ReportDocument();

                StreamReader reader = new StreamReader(new FileStream(@"Templates\DailySalesReport.xaml", FileMode.Open, FileAccess.Read));
                reportDocument.XamlData = reader.ReadToEnd();
                reportDocument.XamlImagePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Templates\");
                reader.Close();

                ReportData data = new ReportData();
                DataAccess da = new DataAccess();
                string BCC = da.getBasicCurrencyCode();

                // Таблица ТОВАРЫ В НАКЛАДНОЙ
                DataTable dt = new DataTable("mtable");

                // описываем столбцы таблицы
                dt.Columns.Add("Num", typeof(int));
                dt.Columns.Add("SpareName", typeof(string));
                dt.Columns.Add("WarehouseName", typeof(string));
                dt.Columns.Add("SpareCodeShatem", typeof(string));
                dt.Columns.Add("SpareCode", typeof(string));
                dt.Columns.Add("Q", typeof(int));
                dt.Columns.Add("P", typeof(double));
                dt.Columns.Add("VAT", typeof(string));
                dt.Columns.Add("T", typeof(double));
                dt.Columns.Add("SaleDate", typeof(string));

                // забиваем таблицу данными
                List<SpareInSpareOutgoView> LIST2 = warehouseID > 0 ? da.GetSpareInSpareOutgoByPeriod(date, dateTo, warehouseID) : da.GetSpareInSpareOutgoByPeriod(date, dateTo);
                decimal asum = 0;
                try
                {
                    for (int i = 0; i < LIST2.Count; i++)
                    {
                        asum += LIST2[i].total_sum;
                        dt.Rows.Add(new object[] {
                            i+1,
                            LIST2[i].SpareName,
                            LIST2[i].WarehouseName,
                            LIST2[i].codeShatem,
                            LIST2[i].code,
                            LIST2[i].quantity,
                            LIST2[i].purchase_price,
                            LIST2[i].VatRateName,
                            LIST2[i].total_sum,
                            LIST2[i].OutgoDate.Value.ToString("dd.MM.yyyy")
                        });
                    }
                }
                catch (Exception exc)
                {
                    Marvin.Instance.Log(exc.Message);
                    throw exc;
                }
                string str_ts = RSDN.RusCurrency.Str(asum, "BYR");

                string strDate = "";
                if (date == dateTo)
                {
                    strDate = date.ToString("dd.MM.yyyy");
                }
                else
                {
                    string strDateFrom = date.ToString("dd.MM.yyyy");
                    string strDateTo = dateTo.ToString("dd.MM.yyyy");
                    strDate = strDateFrom + " - " + strDateTo;
                }
                data.ReportDocumentValues.Add("ReportDate", strDate); // print date is now
                data.ReportDocumentValues.Add("asum", asum);
                data.DataTables.Add(dt);

                DateTime dateTimeStart = DateTime.Now; // start time measure here
                XpsDocument xps = reportDocument.CreateXpsDocument(data);
                documentViewer.Document = xps.GetFixedDocumentSequence();
            }
            catch (Exception ex)
            {
                // show exception
                Marvin.Instance.Log(ex.Message);
                MessageBox.Show(ex.Message + "\r\n\r\n" + ex.GetType() + "\r\n" + ex.StackTrace, ex.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Stop);
            }
        }
 private string BasicCurencyCode()
 {
     DataAccess da = new DataAccess();
     return da.getBasicCurrencyCode();
 }
        private void RecalulateBasics()
        {
            MessageBoxResult res = MessageBox.Show("Вы действительно хотите изменить базовую валюту? (Будут обновлены курсы)", "Изменение базовой валюты!", MessageBoxButton.YesNo);
            if (res == MessageBoxResult.Yes)
            {
                DataAccess da = new DataAccess();
                string OldBasicCode = da.getBasicCurrencyCode();

                // изменить базовую валюту
                da.UpdateBasicCurrencyCode(edtBasicCurrency.SelectedItem.ToString());

                // пересчитать приходы
                da.RecalculateBasics(OldBasicCode);
                MessageBox.Show("Пересчет завершен! Базовая валюта изменена.");
            }
        }
        private void Window_Activated(object sender, EventArgs e)
        {
            if (Outgo == null)
                return;
            try
            {
                ReportDocument reportDocument = new ReportDocument();

                StreamReader reader = new StreamReader(new FileStream(@"Templates\InvoiceReport.xaml", FileMode.Open, FileAccess.Read));
                reportDocument.XamlData = reader.ReadToEnd();
                reportDocument.XamlImagePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Templates\");
                reader.Close();

                ReportData data = new ReportData();
                decimal asum = 0;
                DataAccess da = new DataAccess();
                string BCC = da.getBasicCurrencyCode();

                //Income.currencyReference.Load();
                //string CCC = Income.currency.code;

                // Таблица ТОВАРЫ В НАКЛАДНОЙ
                DataTable dt = new DataTable("mtable");

                // описываем столбцы таблицы
                dt.Columns.Add("Num", typeof(int));
                dt.Columns.Add("SpareName", typeof(string));
                dt.Columns.Add("UnitName", typeof(string));
                dt.Columns.Add("Q", typeof(int));
                dt.Columns.Add("P", typeof(double));
                dt.Columns.Add("VR", typeof(string));
                dt.Columns.Add("TS", typeof(double));

                // забиваем таблицу данными
                List<SpareInInvoiceView> LIST2 = da.GetSparesByInvoiceID(InvoiceId);
                try
                {
                    string CompanyName = da.getProfileCurrent().CompanyName;
                    for (int i = 0; i < LIST2.Count; i++)
                    {
                        asum += LIST2[i].TotalWithVat.Value;
                        dt.Rows.Add(new object[] {
                            i+1,
                            (LIST2[i].SpareName +" (" + LIST2[i].SpareCodeShatem+ ")"),
                            "шт.",
                            LIST2[i].quantity,
                            LIST2[i].price.Value,
                            LIST2[i].VatRateName,
                            LIST2[i].TotalWithVat
                        });
                    }
                }
                catch (Exception exc)
                {
                    Marvin.Instance.Log(exc.Message);
                    throw exc;
                }
                string str_ts = RSDN.RusCurrency.Str(asum, "BYR");

                //string str_vs = RSDN.RusCurrency.Str(vs, "BYR");
                // set constant document values
                //string strDate = Outgo.created_on.Value.GetDateTimeFormats('d')[3];
                string strDate = Outgo.InvoiceDate.Value.Day.ToString();
                string mnth = "";
                switch (Outgo.InvoiceDate.Value.Month)
                {
                    case 1:
                        mnth = "января";
                        break;

                    case 2:
                        mnth = "февраля";
                        break;

                    case 3:
                        mnth = "марта";
                        break;

                    case 4:
                        mnth = "апреля";
                        break;

                    case 5:
                        mnth = "мая";
                        break;

                    case 6:
                        mnth = "июня";
                        break;

                    case 7:
                        mnth = "июля";
                        break;

                    case 8:
                        mnth = "августа";
                        break;

                    case 9:
                        mnth = "сентября";
                        break;

                    case 10:
                        mnth = "октября";
                        break;

                    case 11:
                        mnth = "ноября";
                        break;

                    case 12:
                        mnth = "декабря";
                        break;
                }
                strDate += " " + mnth + " " + Outgo.InvoiceDate.Value.Year + " г.";
                data.ReportDocumentValues.Add("ReportDate", strDate); // print date is now

                data.ReportDocumentValues.Add("TTS", asum);
                settings_profile profile = da.getProfileCurrent();
                ProfileBankAccountView ProfileBankAccount = da.getProfileBankAccountCurrent();
                string w1 = "не указано";
                string w2 = "не указано";
                string w3 = "не указано";

                if (ProfileBankAccount != null)
                {
                    w1 = ProfileBankAccount.BankAccount; ;
                    w2 = ProfileBankAccount.BankName;
                    w3 = ProfileBankAccount.BankMFO;
                }

                //string p1 = profile.CompanyName + ", " + profile.AddressJur + ", УНП " + Regex.Replace(profile.UNN, " +", " ");
                //p1 = Regex.Replace(p1, " +", " ");

                // ПРАВИЛЬНЫЕ ПАРАМЕТРЫ
                invoice inv = Outgo;
                string q1 = profile.CompanyName + ", " + profile.AddressJur + ", УНН:" + profile.UNN;
                data.ReportDocumentValues.Add("p1", q1);
                string q2 = w1;
                data.ReportDocumentValues.Add("p2", q2);
                string q3 = w2 + ", МФО:" + w3;
                data.ReportDocumentValues.Add("p3", q3);
                string q4 = profile.CompanyName;
                data.ReportDocumentValues.Add("p4", q4);
                string q5 = profile.LoadPoint;
                data.ReportDocumentValues.Add("p5", q5);
                string q6 = inv.AccountName + ", " + inv.AccountAddress + ", УНН:" + inv.AccountUNN;
                data.ReportDocumentValues.Add("p6", q6);
                string BankAccount = "р/с не указан";
                if (inv.BankAccountID != null)
                {
                    BankAccountView ba = da.BankAccountView(inv.BankAccountID.Value);
                    BankAccount = ba.BankAccount;
                }
                string q7 = BankAccount + ", " + inv.AccountBankName + ", " + inv.AccountBankMFO;
                data.ReportDocumentValues.Add("p7", q7);
                string q8 = inv.AccountName + ", " + inv.AccountAddress;
                data.ReportDocumentValues.Add("p8", q8);
                string q9 = inv.AccountAddress;
                data.ReportDocumentValues.Add("p9", q9);
                string q0 = str_ts;
                data.ReportDocumentValues.Add("p0", q0);
                string q10 = inv.InvoiceNumber.ToString();
                data.ReportDocumentValues.Add("p10", q10);
                string q11 = strDate;
                data.ReportDocumentValues.Add("p11", q11);

                // СТАРЫЕ ПАРАМЕТРЫ
                // Поставщик и его адрес:
                /*
                data.ReportDocumentValues.Add("param1", p1);

                // Номер инвойса
                string param2 = Outgo.id.ToString();
                data.ReportDocumentValues.Add("param2", param2);

                // Номер счета:
                string param3 = Outgo.AccountBankNum;
                data.ReportDocumentValues.Add("param3", param3);

                // дата
                string param4 = strDate;
                data.ReportDocumentValues.Add("param4", param4);

                // Банк:
                string param5 = "########";
                data.ReportDocumentValues.Add("param5", param5);

                // Грузоотправитель:
                string param6 = profile.CompanyName;
                data.ReportDocumentValues.Add("param6", param6);

                // Ст. отправления:
                string param7 = profile.AddressFact;
                data.ReportDocumentValues.Add("param7", param7);

                // Плательщик и его адрес:
                string param8 = Outgo.AccountName;
                data.ReportDocumentValues.Add("param8", param8);

                // Номер счета и банк:
                string param9 = Outgo.AccountBankNum + ", " + Outgo.AccountBankName;
                data.ReportDocumentValues.Add("param9", param9);

                // Грузополучатель:
                string param10 = Outgo.AccountName;
                data.ReportDocumentValues.Add("param10", param10);

                // Ст. назначения, число мест, вес:
                string param11 = "############";
                data.ReportDocumentValues.Add("param11", param11);
                */

                data.DataTables.Add(dt);

                DateTime dateTimeStart = DateTime.Now; // start time measure here

                XpsDocument xps = reportDocument.CreateXpsDocument(data);
                documentViewer.Document = xps.GetFixedDocumentSequence();
            }
            catch (Exception ex)
            {
                Marvin.Instance.Log(ex.Message);

                // show exception
                MessageBox.Show(ex.Message + "\r\n\r\n" + ex.GetType() + "\r\n" + ex.StackTrace, ex.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Stop);
            }
        }
 // CUSTOM FUNCTIONS
 private void LoadComboboxCurrencies()
 {
     DataAccess da = new DataAccess();
     List<currency> x = da.GetCurrency();
     edtCurrency.Items.Clear();
     foreach (currency c in x)
         edtCurrency.Items.Add(c.code);
     edtCurrency.SelectedItem = da.getBasicCurrencyCode();
 }
        private void BuildReportByOutgo()
        {
            if (Outgo == null)
                return;
            try
            {
                ReportDocument reportDocument = new ReportDocument();

                StreamReader reader = new StreamReader(new FileStream(@"Templates\SalesCheckReport.xaml", FileMode.Open, FileAccess.Read));
                reportDocument.XamlData = reader.ReadToEnd();
                reportDocument.XamlImagePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Templates\");
                reader.Close();

                ReportData data = new ReportData();
                decimal ts = 0;
                decimal vs = 0;
                decimal asum = 0;
                DataAccess da = new DataAccess();
                string BCC = da.getBasicCurrencyCode();

                //Income.currencyReference.Load();
                //string CCC = Income.currency.code;

                // Таблица ТОВАРЫ В НАКЛАДНОЙ
                DataTable dt = new DataTable("mtable");

                // описываем столбцы таблицы
                dt.Columns.Add("SpareName", typeof(string));
                dt.Columns.Add("UnitName", typeof(string));
                dt.Columns.Add("Quantity", typeof(string));
                dt.Columns.Add("Price", typeof(string));
                dt.Columns.Add("Amount", typeof(string));
                dt.Columns.Add("VAT", typeof(string));
                dt.Columns.Add("VATAmount", typeof(string));
                dt.Columns.Add("Total", typeof(string));
                decimal TotalAmount = 0;

                // забиваем таблицу данными
                List<ReportOutgo> list = new List<ReportOutgo>();
                list = da.GetReportOutgoes(SpareOutgoId);

                List<SpareInSpareOutgoView> LIST2 = da.SpareInSpareOutgoViewGet(SpareOutgoId);
                try
                {
                    string CompanyName = da.getProfileCurrent().CompanyName;
                    for (int i = 0; i < LIST2.Count; i++)
                    {
                        //decimal Total = list[i].total_sum;
                        //decimal VatSum = Total * list[i].VatRate.Value / 100;
                        //decimal Sum = Total - VatSum;
                        //decimal Price = Sum / list[i].quantity;
                        TotalAmount += list[i].quantity * list[i].PriceOut.Value;

                        //ts += Total;
                        //vs += VatSum;
                        //asum += Sum;

                        dt.Rows.Add(new object[] {
                            list[i].SpareName,
                            list[i].UnitName,
                            list[i].quantity.ToString("0.##"),
                            list[i].PriceOut.Value.ToString("0.##"),
                            (list[i].PriceOut.Value*list[i].quantity).ToString("0.##"),
                            list[i].VatName,
                            0,
                            0
                        });
                    }
                }
                catch (Exception exc)
                {
                    throw exc;
                }
                string str_ts = RSDN.RusCurrency.Str(ts, "BYR");
                string str_vs = RSDN.RusCurrency.Str(vs, "BYR");

                // set constant document values
                //string strDate = Outgo.created_on.Value.GetDateTimeFormats('d')[3];
                string strDate = Outgo.created_on.Value.Day.ToString();
                string mnth = "";
                switch (Outgo.created_on.Value.Month)
                {
                    case 1:
                        mnth = "января";
                        break;

                    case 2:
                        mnth = "февраля";
                        break;

                    case 3:
                        mnth = "марта";
                        break;

                    case 4:
                        mnth = "апреля";
                        break;

                    case 5:
                        mnth = "мая";
                        break;

                    case 6:
                        mnth = "июня";
                        break;

                    case 7:
                        mnth = "июля";
                        break;

                    case 8:
                        mnth = "августа";
                        break;

                    case 9:
                        mnth = "сентября";
                        break;

                    case 10:
                        mnth = "октября";
                        break;

                    case 11:
                        mnth = "ноября";
                        break;

                    case 12:
                        mnth = "декабря";
                        break;
                }
                strDate += " " + mnth + " " + Outgo.created_on.Value.Year + " г.";
                data.ReportDocumentValues.Add("TotalAmount", TotalAmount.ToString("0.##"));
                data.ReportDocumentValues.Add("ReportDate", strDate); // print date is now

                //data.ReportDocumentValues.Add("IncomeNumber", Income.id);
                data.ReportDocumentValues.Add("VATAmountSumStr", str_vs);
                data.ReportDocumentValues.Add("TotalSumStr", str_ts);
                data.ReportDocumentValues.Add("AmountSum", asum.ToString("0.##"));
                data.ReportDocumentValues.Add("VATAmountSum", vs.ToString("0.##"));
                data.ReportDocumentValues.Add("TotalSum", ts.ToString("0.##"));
                data.ReportDocumentValues.Add("accepter", Outgo.accepter);
                data.ReportDocumentValues.Add("address", Outgo.address);
                SpareOutgoView sov = da.GetSpareOutgoView(Outgo.id);
                data.ReportDocumentValues.Add("customer", sov.AccountName);
                data.ReportDocumentValues.Add("deliverer", Outgo.deliverer);
                data.ReportDocumentValues.Add("driver", Outgo.driver);
                data.ReportDocumentValues.Add("trailer", Outgo.trailer);
                data.ReportDocumentValues.Add("tripsheet", Outgo.tripsheet);
                data.ReportDocumentValues.Add("truck", Outgo.truck);
                data.ReportDocumentValues.Add("truckowner", Outgo.truckowner);
                Outgo.currencyReference.Load();
                data.ReportDocumentValues.Add("CurrencyName", Outgo.currency.name);
                settings_profile profile = da.getProfileCurrent();
                string p1 = profile.CompanyName;// +", " + profile.AddressJur;
                p1 = Regex.Replace(p1, " +", " ");
                data.ReportDocumentValues.Add("param1", p1);
                string p2 = sov.AccountName + ", " + Outgo.address;
                data.ReportDocumentValues.Add("param2", p2);
                data.ReportDocumentValues.Add("param3", Outgo.basement);
                data.ReportDocumentValues.Add("param4", Outgo.description);
                data.ReportDocumentValues.Add("param5", profile.CompanyHead);
                data.ReportDocumentValues.Add("param6", p1 = Regex.Replace(profile.UNN, " +", " "));
                data.ReportDocumentValues.Add("param7", Outgo.unn);
                data.ReportDocumentValues.Add("warrant", Outgo.warrant);

                data.DataTables.Add(dt);

                DateTime dateTimeStart = DateTime.Now; // start time measure here

                XpsDocument xps = reportDocument.CreateXpsDocument(data);
                documentViewer.Document = xps.GetFixedDocumentSequence();
            }
            catch (Exception ex)
            {
                // show exception
                MessageBox.Show(ex.Message + "\r\n\r\n" + ex.GetType() + "\r\n" + ex.StackTrace, ex.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Stop);
            }
        }
        private void BuildReportBySale()
        {
            ReportDocument reportDocument = new ReportDocument();

            StreamReader reader = new StreamReader(new FileStream(@"Templates\SalesCheckReport.xaml", FileMode.Open, FileAccess.Read));
            reportDocument.XamlData = reader.ReadToEnd();
            reportDocument.XamlImagePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Templates\");
            reader.Close();

            ReportData data = new ReportData();
            decimal ts = 0;
            decimal vs = 0;
            decimal asum = 0;
            DataAccess da = new DataAccess();
            string BCC = da.getBasicCurrencyCode();

            // Таблица ТОВАРЫ В НАКЛАДНОЙ
            DataTable dt = new DataTable("mtable");

            // описываем столбцы таблицы
            dt.Columns.Add("SpareName", typeof(string));
            dt.Columns.Add("UnitName", typeof(string));
            dt.Columns.Add("Quantity", typeof(string));
            dt.Columns.Add("Price", typeof(string));
            dt.Columns.Add("Amount", typeof(string));
            dt.Columns.Add("VAT", typeof(string));
            dt.Columns.Add("VATAmount", typeof(string));
            dt.Columns.Add("Total", typeof(string));

            // забиваем таблицу данными

            List<ReportOutgo> listx = new List<ReportOutgo>();
            listx = da.GetReportOutgoes(sale);
            List<ReportItem> list = new List<ReportItem>();
            foreach (ReportOutgo s in listx)
            {
                if (list.FirstOrDefault(x => x.SpareID == s.SpareID) == null)
                {
                    ReportItem ri = new ReportItem();
                    ri.SpareName = s.SpareName;
                    ri.UnitName = s.UnitName;
                    ri.Quantity = s.quantity;
                    ri.total_sum = s.total_sum;
                    ri.VatRate = s.VatRate.Value;
                    ri.VAT = s.VatName;
                    ri.SpareID = s.SpareID;
                    ri.Price = CurrencyHelper.GetPrice("BYR", s.PriceOutBasic.Value);

                    list.Add(ri);
                }
                else
                {
                    list.FirstOrDefault(x => x.SpareID == s.SpareID).Quantity += s.quantity;
                }
            }
            if (list.Count == 0)
                return;

            //SpareOutgoId = list[0].OutgoID;
            //Outgo = da.SpareOutgoGet(SpareOutgoId);
            decimal TotalAmount = 0;
            string CompanyName = da.getProfileCurrent().CompanyName;
            for (int i = 0; i < list.Count; i++)
            {
                //decimal Total = list[i].total_sum;
                //decimal VatSum = Total * list[i].VatRate / 100;
                //decimal Sum = Total - VatSum;
                //decimal Price = Sum / list[i].Quantity;
                TotalAmount += list[i].Quantity * list[i].Price;

                //ts += Total;
                //vs += VatSum;
                //asum += Sum;

                dt.Rows.Add(new object[] {
                            list[i].SpareName,
                            list[i].UnitName,
                            list[i].Quantity.ToString("0.##"),
                            list[i].Price.ToString("0.##"),
                            (list[i].Quantity*list[i].Price).ToString("0.##"),
                            list[i].VAT,
                            0,
                            0
                        });
            }
            string str_ts = RSDN.RusCurrency.Str(ts, "BYR");
            string str_vs = RSDN.RusCurrency.Str(vs, "BYR");

            // set constant document values
            //string strDate = Outgo.created_on.Value.GetDateTimeFormats('d')[3];
            DateTime date = sale.SaleDate;
            string strDate = date.Day.ToString();
            string mnth = "";
            switch (date.Month)
            {
                case 1:
                    mnth = "января";
                    break;

                case 2:
                    mnth = "февраля";
                    break;

                case 3:
                    mnth = "марта";
                    break;

                case 4:
                    mnth = "апреля";
                    break;

                case 5:
                    mnth = "мая";
                    break;

                case 6:
                    mnth = "июня";
                    break;

                case 7:
                    mnth = "июля";
                    break;

                case 8:
                    mnth = "августа";
                    break;

                case 9:
                    mnth = "сентября";
                    break;

                case 10:
                    mnth = "октября";
                    break;

                case 11:
                    mnth = "ноября";
                    break;

                case 12:
                    mnth = "декабря";
                    break;
            }
            strDate += " " + mnth + " " + date.Year + " г.";

            data.ReportDocumentValues.Add("ReportDate", strDate); // print date is now

            //data.ReportDocumentValues.Add("IncomeNumber", Income.id);
            data.ReportDocumentValues.Add("VATAmountSumStr", str_vs);
            data.ReportDocumentValues.Add("TotalSumStr", str_ts);
            data.ReportDocumentValues.Add("AmountSum", asum.ToString("0.##"));
            data.ReportDocumentValues.Add("TotalAmount", TotalAmount.ToString("0.##"));
            data.ReportDocumentValues.Add("VATAmountSum", vs.ToString("0.##"));
            data.ReportDocumentValues.Add("TotalSum", ts.ToString("0.##"));
            settings_profile profile = da.getProfileCurrent();
            string p1 = profile.CompanyName;// +", " + profile.AddressJur;
            p1 = Regex.Replace(p1, " +", " ");
            data.ReportDocumentValues.Add("param1", p1);
            data.ReportDocumentValues.Add("param5", profile.CompanyHead);
            data.ReportDocumentValues.Add("param6", p1 = Regex.Replace(profile.UNN, " +", " "));

            data.DataTables.Add(dt);

            DateTime dateTimeStart = DateTime.Now; // start time measure here

            XpsDocument xps = reportDocument.CreateXpsDocument(data);
            documentViewer.Document = xps.GetFixedDocumentSequence();
        }
Exemple #9
0
        public static decimal GetBasicPrice(string CurrencyCode, decimal Price)
        {
            decimal BasicPrice = 0;
            DataAccess da = new DataAccess();
            string BasicCurrencyCode = da.getBasicCurrencyCode();
            decimal RateUsd = da.getCurrencyRateValue("USD");
            decimal RateEur = da.getCurrencyRateValue("EUR");
            decimal RateRur = da.getCurrencyRateValue("RUR");

            if (BasicCurrencyCode.Equals(CurrencyCode))
            {
                BasicPrice = Price;
            }
            else
            {
                if (BasicCurrencyCode.Contains("USD"))
                {
                    if (CurrencyCode.Contains("BYR"))
                    {
                        BasicPrice = Price / RateUsd;
                    }
                    if (CurrencyCode.Contains("EUR"))
                    {
                        BasicPrice = Price * RateEur / RateUsd;
                    }
                    if (CurrencyCode.Contains("RUR"))
                    {
                        BasicPrice = Price * RateRur / RateUsd;
                    }
                }
                if (BasicCurrencyCode.Contains("EUR"))
                {
                    if (CurrencyCode.Contains("BYR"))
                    {
                        BasicPrice = Price / RateEur;
                    }
                    if (CurrencyCode.Contains("USD"))
                    {
                        BasicPrice = Price * RateUsd / RateEur;
                    }
                    if (CurrencyCode.Contains("RUR"))
                    {
                        BasicPrice = Price * RateRur / RateEur;
                    }
                }

                if (BasicCurrencyCode.Contains("RUR"))
                {
                    if (CurrencyCode.Contains("BYR"))
                    {
                        BasicPrice = Price / RateRur;
                    }
                    if (CurrencyCode.Contains("EUR"))
                    {
                        BasicPrice = Price * RateEur / RateRur;
                    }
                    if (CurrencyCode.Contains("USD"))
                    {
                        BasicPrice = Price * RateUsd / RateRur;
                    }
                }

                if (BasicCurrencyCode.Contains("BYR"))
                {
                    if (CurrencyCode.Contains("USD"))
                    {
                        BasicPrice = Price * RateUsd;
                    }
                    if (CurrencyCode.Contains("EUR"))
                    {
                        BasicPrice = Price * RateEur;
                    }
                    if (CurrencyCode.Contains("RUR"))
                    {
                        BasicPrice = Price * RateRur;
                    }
                }
            }
            return BasicPrice;
        }
        private void RecalulateBasics()
        {
            MessageBoxResult res = MessageBox.Show("Вы действительно хотите изменить базовую валюту? (Будут обновлены курсы)", "Изменение базовой валюты!", MessageBoxButton.YesNo);
            if (res == MessageBoxResult.Yes)
            {
                DataAccess da = new DataAccess();
                string OldBasicCode = da.getBasicCurrencyCode();

                // изменить базовую валюту
                da.CurrencyEdit(getItemFromFields());

                // загрузить курсы валют относительно новой валюты
                CurrenciesInput v = new CurrenciesInput();
                v.ShowDialog();

                // пересчитать приходы
                da.RecalculateBasics(OldBasicCode);
                MessageBox.Show("Пересчет завершен! Базовая валюта изменена.");
            }
            else
                edtBasic.IsChecked = false;
        }
        private void Window_Activated(object sender, EventArgs e)
        {
            if (Income == null)
                return;
            try
            {
                ReportDocument reportDocument = new ReportDocument();

                StreamReader reader = new StreamReader(new FileStream(@"Templates\OfferingMovementReport.xaml", FileMode.Open, FileAccess.Read));
                reportDocument.XamlData = reader.ReadToEnd();
                reportDocument.XamlImagePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Templates\");
                reader.Close();

                ReportData data = new ReportData();

                // set constant document values
                data.ReportDocumentValues.Add("IncomeDate", Income.si_date.GetDateTimeFormats('d')[3]); // print date is now
                data.ReportDocumentValues.Add("IncomeNumber", Income.num);

                decimal ts = 0;
                decimal _S = 0;
                decimal _MS = 0;
                decimal _VS = 0;
                DataAccess da = new DataAccess();
                string BCC = da.getBasicCurrencyCode();
                Income.currencyReference.Load();
                string CCC = Income.currency.code;

                // Таблица ТОВАРЫ В НАКЛАДНОЙ
                DataTable dt = new DataTable("OfferingsInMovement");

                // описываем столбцы таблицы
                dt.Columns.Add("Number", typeof(int));
                dt.Columns.Add("SpareName", typeof(string));
                dt.Columns.Add("SpareCodeShatem", typeof(string));
                dt.Columns.Add("SpareCode", typeof(string));
                dt.Columns.Add("UnitName", typeof(string));
                dt.Columns.Add("Quantity", typeof(string));
                dt.Columns.Add("Price", typeof(string));
                dt.Columns.Add("Markup", typeof(string));
                dt.Columns.Add("VAT", typeof(string));
                dt.Columns.Add("Sum", typeof(string));
                dt.Columns.Add("MarkupBasic", typeof(string));
                dt.Columns.Add("VATBasic", typeof(string));
                dt.Columns.Add("PriceOut", typeof(string));
                dt.Columns.Add("Amount", typeof(string));

                // забиваем таблицу данными
                List<ReportIncome> list = new List<ReportIncome>();
                list = da.GetReportIncomes(SpareIncomeID);
                try
                {
                    string CompanyName = da.getProfileCurrent().CompanyName;
                    for (int i = 0; i < list.Count; i++)
                    {
                        decimal Q = list[i].QIn;
                        decimal P = list[i].PIn.Value;
                        decimal S = P * Q;
                        decimal M = list[i].Markup;
                        decimal V = list[i].VatRate;
                        decimal T = list[i].S.Value;
                        decimal MS = S * M / 100;
                        decimal VS = S * V / 100;
                        decimal PriceOut = T / Q;

                        _MS += MS;
                        _VS += VS;
                        _S += S;
                        ts += T;

                        dt.Rows.Add(
                            new object[] {
                            i+1,
                            list[i].SpareName,
                            list[i].codeShatem,
                            list[i].code,
                            list[i].UnitName,
                            Q.ToString ("0.##"),
                            P.ToString ("0.##"),
                            M.ToString ("0.##"),
                            V.ToString ("0.##"),
                            S.ToString ("0.##"),
                            MS.ToString ("0.##"),
                            VS.ToString ("0.##"),
                            PriceOut.ToString ("0.##"),
                            T.ToString ("0.##")
                             });
                    }
                }
                catch (Exception exc)
                {
                    throw exc;
                }
                string sts = RSDN.RusCurrency.Str(ts, CCC);
                data.ReportDocumentValues.Add("StringSum", sts);
                settings_profile profile = da.getProfileCurrent();
                data.ReportDocumentValues.Add("TS", _S.ToString("0.##"));
                data.ReportDocumentValues.Add("TMS", _MS.ToString("0.##"));
                data.ReportDocumentValues.Add("TVS", _VS.ToString("0.##"));
                data.ReportDocumentValues.Add("TTS", ts.ToString("0.##"));
                data.ReportDocumentValues.Add("param1", profile.CompanyHead);
                data.ReportDocumentValues.Add("param2", profile.CompanyName);
                if (Income.base_doc_date.HasValue)
                    data.ReportDocumentValues.Add("BaseDocDate", Income.base_doc_date.Value.GetDateTimeFormats('d')[3]);
                data.ReportDocumentValues.Add("BaseDoc", Income.base_doc);
                string AccName = "";
                if (Income.account == null)
                    Income.accountReference.Load();
                if (Income.account != null)
                    AccName = Income.account.name;
                data.ReportDocumentValues.Add("AccountName", AccName);
                data.DataTables.Add(dt);

                DateTime dateTimeStart = DateTime.Now; // start time measure here

                XpsDocument xps = reportDocument.CreateXpsDocument(data);
                documentViewer.Document = xps.GetFixedDocumentSequence();

                // show the elapsed time in window title
                //Title += " - создано за " + (DateTime.Now - dateTimeStart).TotalMilliseconds + " миллисекунд";
            }
            catch (Exception ex)
            {
                // show exception
                MessageBox.Show(ex.Message + "\r\n\r\n" + ex.GetType() + "\r\n" + ex.StackTrace, ex.GetType().ToString(), MessageBoxButton.OK, MessageBoxImage.Stop);
            }
        }