private void button3_Click(object sender, EventArgs e)
        {
            if (bindingSource1.Count > 0)
            {
                оплаты uRow = bindingSource1.Current as оплаты;
                клОплата.оплата = uRow.оплата;
                клОплата.дата   = uRow.дата;
                клОплата.номер  = uRow.номер;
                клОплата.deRow  = de.оплаты.Single(n => n.оплата == клОплата.оплата);
                клКлиент.клиент = uRow.клиент;
                клУслуга.выбран = false;
                int строка = bindingSource1.Position;
                Cursor = Cursors.WaitCursor;
                возврат1работ оплатаРабот = new возврат1работ();

                оплатаРабот.Text = $"Возвраты за работы {клКлиент.адрес}   {клКлиент.фио}";

                оплатаРабот.ShowDialog();
                if (клОплата.выбран)
                {
                    заполнить2услуги();
                    //  пересчет();
                    dataGridView1.Refresh();
                }
                Cursor = Cursors.Default;
            }
        }
 private void button2_Click(object sender, EventArgs e)
 {
     if (bindingSource1.Count > 0)
     {
         оплаты       uRow = bindingSource1.Current as оплаты;
         DialogResult xy   = MessageBox.Show("Удалить оплату за  " + uRow.дата.ToLongDateString(), "Удаление", MessageBoxButtons.YesNo);
         if (xy == System.Windows.Forms.DialogResult.Yes)
         {
             bindingSource1.RemoveCurrent();
         }
         else
         {
             dataGridView1.Focus();
             return;
         }
     }
     try
     {
         de.SaveChanges();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
     dataGridView1.Focus();
 }
        private void button16_Click(object sender, EventArgs e)
        {
            if (bindingSource1.Count > 0)
            {
                //  записать();
                оплаты uRow = bindingSource1.Current as оплаты;
                клОплата.оплата = uRow.оплата;
                клОплата.deRow  = uRow;
                клКлиент.клиент = uRow.клиент;
                клУслуга.выбран = false;
                int          строка      = bindingSource1.Position;
                выбор4услуги выборУслуги = new выбор4услуги();
                выборУслуги.ShowDialog();
                if (клУслуга.выбран)
                {
                    Cursor = Cursors.WaitCursor;
                    возврат1месяца оплаченыеМесяца = new возврат1месяца();
                    оплаченыеМесяца.Text = "Возврат " + клУслуга.deRow.наимен + " " + uRow.адрес;
                    оплаченыеМесяца.ShowDialog();
                    обновить();

                    //пересчет();

                    bindingSource1.Position = строка;

                    Cursor = Cursors.Default;
                }
            }

            dataGridView1.Focus();
        }
 private void button11_Click(object sender, EventArgs e)
 {
     if (bindingSource1.Count > 0)
     {
         записать();
         оплаты uRow = bindingSource1.Current as оплаты;
         клОплата.оплата = uRow.оплата;
         клОплата.deRow  = uRow;
         клКлиент.клиент = uRow.клиент;
         клУслуга.выбран = false;
         int строка = bindingSource1.Position;
         //////////
         //записать();
         //int строка = bindingSource1.Position;
         //оплаты uRow = bindingSource1.Current as оплаты;
         //клКлиент.клиент = uRow.клиент;
         //клКлиент.выбран = false;
         сведения_о_клиенте сведенияКлиента = new сведения_о_клиенте();
         сведенияКлиента.Text = "сведения о " + uRow.клиенты.ToString();
         //     сведенияКлиента.bindingSource1.DataSource= de.клиенты.Local.Where(n => n.клиент == клКлиент.клиент).ToList();
         //  bindingSource1.DataSource = de.клиенты.Local.ToBindingList();
         сведенияКлиента.ShowDialog();
         обновить();
         bindingSource1.Position = строка;
     }
     //if (клКлиент.выбран)
     //{
     //    try
     //    {
     //        de.SaveChanges();
     //    }
     //    catch(Exception ex)
     //    {
     //        MessageBox.Show(ex.Message);
     //    }
     //}
     //клиенты kRow = de.клиенты.Local.Single(n => n.клиент == клКлиент.клиент);
     //de.Entry(kRow).Reload();
     //    de.Entry(uRow).Reload();
     dataGridView1.Focus();
     //записать_измененые();
     //DataSet.оплатаRow uRow = (оплатаBindingSource.Current as DataRowView).Row as DataSet.оплатаRow;
     //клКлиент.клиент = uRow.клиент;
     //Сведения1клиента формаСведения = new Сведения1клиента();
     //формаСведения.dataSet = this.dataSet;
     //формаСведения.ShowDialog();
 }
        void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                оплаты tRow = bindingSource1.Current as оплаты;
                if (dataGridView1.Columns[e.ColumnIndex] == кассирColumn)
                {
                    клСотрудник.сотрудник = tRow.сотрудник;
                    клСотрудник.выбран    = false;
                    выбор_кассира выборКассира = new выбор_кассира();
                    выборКассира.ShowDialog();



                    if (клСотрудник.выбран)
                    {
                        tRow.сотрудник = клСотрудник.сотрудник;
                        if (de.Entry(tRow).State == EntityState.Unchanged)
                        {
                            de.Entry(tRow).State = EntityState.Modified;
                        }

                        dataGridView1.Refresh();
                        label1.Visible = true;
                        de.SaveChanges();
                    }
                }

                if (dataGridView1.Columns[e.ColumnIndex] == датаColumn)
                {
                    клКалендарь.дата   = tRow.дата;
                    клКалендарь.выбран = false;
                    календарь выборДаты = new календарь();
                    выборДаты.button3.Visible = false;
                    выборДаты.ShowDialog();
                    if (клКалендарь.выбран)
                    {
                        tRow.дата      = клКалендарь.дата.Value;
                        label1.Visible = true;
                        dataGridView1.Refresh();
                        de.SaveChanges();
                    }
                }
            }
        }
        void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                dataGridView1.CurrentCell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                оплаты tRow = bindingSource1.Current as оплаты;
                if (dataGridView1.Columns[e.ColumnIndex] == кассирColumn)
                {
                    клКассир.сотрудник = tRow.сотрудник;
                    клКассир.выбран    = false;
                    изменить_кассира выборКассира = new изменить_кассира();
                    выборКассира.ShowDialog();



                    if (клКассир.выбран || выборКассира.DialogResult == DialogResult.OK)
                    {
                        tRow.сотрудник = клКассир.сотрудник;
                        сотрудники oRow = de.сотрудники.Single(n => n.сотрудник == клКассир.сотрудник);
                        tRow.сотрудники = oRow;

                        dataGridView1.Refresh();
                        label1.Visible = true;
                        de.SaveChanges();
                    }
                }

                if (dataGridView1.Columns[e.ColumnIndex] == датаColumn)
                {
                    клКалендарь.дата   = tRow.дата;
                    клКалендарь.выбран = false;
                    календарь выборДаты = new календарь();
                    выборДаты.button3.Visible = false;
                    выборДаты.ShowDialog();
                    if (клКалендарь.выбран)
                    {
                        tRow.дата      = клКалендарь.дата.Value;
                        label1.Visible = true;
                        dataGridView1.Refresh();
                        de.SaveChanges();
                    }
                }
            }
        }
        private void button17_Click(object sender, EventArgs e)
        {
            //записать();
            оплаты uRow = bindingSource1.Current as оплаты;

            клОплата.оплата = uRow.оплата;

            de = new domofon14Entities();
            int СуммаВозврата = de.возврат
                                .Where(n => n.оплата == клОплата.оплата)
                                .Sum(n => n.сумма);

            Word.Application oWord = new Word.Application();

            string curDir = System.IO.Directory.GetCurrentDirectory();

            object шаблон = curDir + @"\расходник.dot";

            if (!System.IO.File.Exists(шаблон.ToString()))
            {
                MessageBox.Show("Нет файла " + шаблон.ToString());
                return;
            }

            клФирма.init();
            клФилиал.init();

            Word.Document o = oWord.Documents.Add(Template: шаблон);
            o.Bookmarks["кассир"].Range.Text = uRow.сотрудники.фио;

            o.Bookmarks["дата"].Range.Text = uRow.дата.ToLongDateString();

            o.Bookmarks["филиал"].Range.Text = клФилиал.наимен;

            o.Bookmarks["сумма"].Range.Text = СуммаВозврата.ToString();


            o.Bookmarks["номер"].Range.Text = uRow.номер.ToString();

            o.Bookmarks["фио"].Range.Text = uRow.клиенты.фио;

            oWord.Application.Visible = true;
        }
        private void button10_Click(object sender, EventArgs e)
        {
            записать();
            оплаты uRow = bindingSource1.Current as оплаты;

            клОплата.оплата         = uRow.оплата;
            клОплата.deRow          = uRow;
            клКлиент.клиент         = uRow.клиент;
            клУслуга.выбран         = false;
            клВид_оплаты.вид_оплаты = uRow.вид_оплаты;
            клВид_оплаты.наимен     = uRow.виды_оплат.наимен;
            int строка = bindingSource1.Position;


            //    записать_измененые();

            //DataSet.оплатаRow uRow = (оплатаBindingSource.Current as DataRowView).Row as DataSet.оплатаRow;
            клРеестр.дата          = uRow.дата.Date;
            клРеестр.фио_менеджера = uRow.сотрудники.фио;
            клРеестр.выбран        = false;
            клРеестр.вид_оплаты    = uRow.вид_оплаты;
            клВид_услуги.выбран    = false;
            выбор_вида_услуги выборВида = new выбор_вида_услуги();

            выборВида.ShowDialog();
            if (клВид_услуги.выбран)
            {
                Cursor = Cursors.WaitCursor;
                реестр_услуг формаРеестр = new  реестр_услуг();
                формаРеестр.Text  = "Реестр за " + клРеестр.дата.ToLongDateString();
                формаРеестр.Text += " " + клВид_оплаты.наимен.Trim();
                формаРеестр.Text += " " + клВид_услуги.наимен.Trim();
                формаРеестр.Text += " " + клСотрудник.фио.Trim();

                string наименФилиала = de.филиалы
                                       .OrderBy(n => n.порядок)
                                       .First().наимен;
                формаРеестр.Text += " по филиалу " + наименФилиала;

                формаРеестр.ShowDialog();
                Cursor = Cursors.Default;
            }
        }
        private void button7_Click(object sender, EventArgs e)
        {
            int maxNum1 = 0;

            if (de.оплаты.Count() > 0)
            {
                maxNum1 = de.оплаты.Max(n => n.номер);
            }

            int maxNum2 = 0;

            if (de.оплаты.Local.Count > 0)
            {
                maxNum2 = de.оплаты.Local.Max(n => n.номер);
            }

            int maxNum = maxNum1;

            if (maxNum2 > maxNum1)
            {
                maxNum = maxNum2;
            }
            виды_оплат vRow = de.виды_оплат.OrderBy(n => n.порядок).First();

            оплаты NewRow = new оплаты()
            {
                дата       = DateTime.Today,
                клиент     = клКлиент.клиент,
                сотрудник  = клСотрудник.сотрудник,
                номер      = maxNum + 1,
                оплата     = Guid.NewGuid(),
                вид_оплаты = vRow.вид_оплаты
            };


            int строка = bindingSource1.Add(NewRow);

            bindingSource1.Position = строка;
            de.SaveChanges();
            dataGridView1.Focus();
        }
        private void button7_Click(object sender, EventArgs e)
        {
            Cursor          = Cursors.WaitCursor;
            клКлиент.выбран = false;
            новый_клиент новыйКлиент = new новый_клиент();

            новыйКлиент.ShowDialog();
            Cursor = Cursors.Default;
            if (клКлиент.выбран)
            {
                int maxNum1 = 0;
                if (de.оплаты.Count() > 0)
                {
                    maxNum1 = de.оплаты.Max(n => n.номер);
                }

                int maxNum2 = 0;
                if (de.оплаты.Local.Count > 0)
                {
                    maxNum2 = de.оплаты.Local.Max(n => n.номер);
                }

                int maxNum = maxNum1;
                if (maxNum2 > maxNum1)
                {
                    maxNum = maxNum2;
                }
                оплаты NewRow = new оплаты();
                NewRow.дата      = DateTime.Today;
                NewRow.клиент    = клКлиент.клиент;
                NewRow.сотрудник = клСотрудник.сотрудник;
                NewRow.номер     = maxNum + 1;
                NewRow.оплата    = Guid.NewGuid();

                int строка = bindingSource1.Add(NewRow);
                bindingSource1.Position   = строка;
                dataGridView1.CurrentCell = dataGridView1.Rows[строка].Cells[0];
                de.SaveChanges();
            }
            dataGridView1.Focus();
        }
        private void button6_Click(object sender, EventArgs e)
        {
            if (bindingSource1.Count > 0)
            {
                //    записать();
                оплаты uRow = bindingSource1.Current as оплаты;
                клОплата.оплата    = uRow.оплата;
                клОплата.deRow     = uRow;
                клОплата.сотрудник = uRow.сотрудник;
                клКлиент.клиент    = uRow.клиент;
                int строка = bindingSource1.Position;

                Cursor = Cursors.WaitCursor;
                опл1работ оплатаРабот = new опл1работ();
                //      оплатаРабот.tempList = uRow.опл_работы.ToList();
//                   оплатаРабот.de = de;
                //     оплатаРабот.bindingSource1.DataSource = uRow.опл_работы.ToList();
                оплатаРабот.Text = "Оплаты за работы " + клКлиент.фио;
                оплатаРабот.ShowDialog();
                обновить();
                пересчет();
                bindingSource1.Position = строка;
                //   de.Entry(uRow).Reload();
                //      de.Entry(uRow).State = EntityState.Modified;
                //   заполнить_услуги();


                //     uRow.оплатить = s1оплата(uRow.оплата);

                //int kk = de.SaveChanges();
                //Console.WriteLine(kk);

                //   MessageBox.Show(uRow.всего.ToString());
                //     пересчет();
                dataGridView1.Refresh();
                Cursor = Cursors.Default;
            }
            dataGridView1.Focus();
        }
        private void button6_Click(object sender, EventArgs e)
        {
            if (bindingSource1.Count > 0)
            {
                //    записать();
                оплаты uRow = bindingSource1.Current as оплаты;
                клОплата.оплата    = uRow.оплата;
                клОплата.deRow     = uRow;
                клОплата.сотрудник = uRow.сотрудник;
                клКлиент.клиент    = uRow.клиент;
                int строка = bindingSource1.Position;

                Cursor = Cursors.WaitCursor;
                опл1работ оплатаРабот = new опл1работ();
                оплатаРабот.Text = "Оплаты за работы " + клКлиент.фио;
                оплатаРабот.ShowDialog();
                обновить();
                bindingSource1.Position = строка;
                dataGridView1.Refresh();
                Cursor = Cursors.Default;
            }
            dataGridView1.Focus();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (bindingSource1.Count > 0)
            {
                оплаты       uRow = bindingSource1.Current as оплаты;
                DialogResult xy   = MessageBox.Show("Удалить оплату   " + uRow.адрес, uRow.клиенты.фио, MessageBoxButtons.YesNo);
                if (xy == System.Windows.Forms.DialogResult.Yes)
                {
                    bindingSource1.PositionChanged -= bindingSource1_PositionChanged;
                    bindingSource1.RemoveCurrent();
                    bindingSource1.MoveLast();
                    try
                    {
                        de.SaveChanges();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Ошибка записи " + ex.Message);
                    }
                    bindingSource1.PositionChanged += bindingSource1_PositionChanged;
                    обновить();

                    //
                    //                   bindingSource1.MoveLast();
                }
                //else
                //{
                //    dataGridView1.Focus();
                //    return;
                //}
            }



            dataGridView1.Focus();
        }
        private void заполнить_услуги22()
        {
            try
            {
                оплаты uRow = (оплаты)bindingSource1.Current;


                List <temp> query = de.оплачено
                                    .Where(n => n.оплата == uRow.оплата)
                                    .OrderBy(n => n.услуги.порядок)
                                    .GroupBy(n => n.услуги)
                                    .Select(n => new temp
                {
                    услуга  = n.Key.услуга,
                    наимен  = n.Key.наимен,
                    месяцев = n.Count(),
                    сумма   = n.Sum(p => p.сумма)
                }).ToList();
                //     Console.WriteLine(query.Count());
                List <temp> query2 = de.опл_работы
                                     .Where(n => n.оплата == uRow.оплата)
                                     .OrderBy(n => n.работы.порядок)
                                     .Select(n => new temp
                {
                    услуга  = n.работа,
                    наимен  = n.работы.наимен,
                    месяцев = 0,
                    сумма   = (int)n.стоимость,
                    договор = n.сотрудники.фио
                }).ToList();

                //var query3 = de.возврат
                //   .Where(n => n.оплата == uRow.оплата)
                //   .OrderBy(n => n.услуги.порядок)
                //  .GroupBy(n => n.услуги)
                //  .Select(n => new
                //  {
                //      услуга = n.Key.услуга,
                //      наимен = n.Key.наимен,
                //      месяцев = n.Count(),
                //      сумма = n.Sum(p => p.сумма)
                //  });

                Guid КодКлиента2 = uRow.клиент;


                int мСумма = 0;
                tempList = query.Concat(query2).ToList();
                if (tempList.Any())
                {
                    мСумма = tempList.Sum(n => n.сумма);
                }
                //    tempList.Clear();

                //foreach (var mm in query)
                //{

                //    temp NewRow = new temp();
                //    NewRow.услуга = mm.услуга;
                //    NewRow.наимен = mm.наимен;
                //    NewRow.месяцев = mm.месяцев;
                //    NewRow.сумма = mm.сумма;
                //    NewRow.договор = "";
                //    tempList.Add(NewRow);

                //    мСумма += mm.сумма;
                //}

                foreach (подключения pRow in de.подключения
                         .Where(n => n.клиент == uRow.клиент)
                         .OrderBy(n => n.дата_дог))
                {
                    if (tempList.Any(n => n.услуга == pRow.услуга))
                    {
                        temp sRow = tempList.First(n => n.услуга == pRow.услуга);
                        sRow.договор = pRow.номер_пп.ToString("0;#;#");
                    }
                }

                //foreach (var rr in query2)
                //{

                //    temp NewRow = new temp();
                //    NewRow.услуга = rr.работа;
                //    NewRow.наимен = rr.наимен;
                //    NewRow.месяцев = 0;
                //    NewRow.сумма = (int)rr.оплачено;
                //    NewRow.договор = rr.фио;
                //    tempList.Add(NewRow);
                //    мСумма += NewRow.сумма;
                //}

                //  foreach (var vv in query3)
                //  {
                //    //  dsДолги.подробностиRow NewRow = dsДолги1.подробности.NewподробностиRow();
                //      temp NewRow = new temp();
                //      NewRow.услуга = vv.услуга;
                //      NewRow.наимен = "ВОЗВРАТ " + vv.наимен.Trim();
                //      NewRow.месяцев = vv.месяцев;
                //      NewRow.сумма = vv.сумма;
                //      NewRow.договор = "";
                //      tempList.Add(NewRow);
                ////      dsДолги1.подробности.Rows.Add(NewRow);
                //      мСумма -= vv.сумма;
                //  }

                if (uRow.оплатить != мСумма)
                {
                    uRow.оплатить = мСумма;
                }

                textBox1.Text             = мСумма.ToString();
                bindingSource2.DataSource = null;
                bindingSource2.DataSource = tempList;
                dataGridView2.DataSource  = null;
                dataGridView2.DataSource  = bindingSource2;
                bindingSource2.MoveLast();
                dataGridView2.Refresh();

                налTextBox.Text = "";
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка " + ex.Message);
                //tempList.Clear();
                //bindingSource2.DataSource = tempList;
                //dataGridView2.DataSource = bindingSource2;
                //dataGridView2.Refresh();
                //textBox1.Text = "";
            }
        }
        private void button5_Click(object sender, EventArgs e)
        {
            оплаты uRow = bindingSource1.Current as оплаты;

            клОплата.оплата = uRow.оплата;
            de = new domofon14Entities();

            string[] aMez = de.месяцы
                            .OrderBy(n => n.месяц)
                            .Select(n => n.наимен)
                            .ToArray();

            var услугиQuery = de.оплачено
                              .Where(n => n.оплата == клОплата.оплата)
                              .GroupBy(n => new { n.услуги, n.год, n.сумма })
                              .Select(n => new
            {
                n.Key.услуги,
                n.Key.услуги.наимен,
                n.Key.услуги.порядок,
                цена  = n.Key.сумма,
                сумма = n.Sum(p => p.сумма),
                n.Key.год,
                minMez = n.Min(p => p.месяц),
                maxMez = n.Max(p => p.месяц)
            })
                              .OrderBy(n => n.порядок);



            //dsТабель1.квитанция.Clear();
            квитанцияЛист.Clear();
            foreach (var kRow in услугиQuery)
            {
                //  dsТабель1.за_месяца.Clear();
                //           за_месяцЛист.Clear();

                //                dsТабель.квитанцияRow NewRow = dsТабель1.квитанция.NewквитанцияRow();
                квитанция NewRow = new квитанция();


                NewRow.услуга        = kRow.услуги.услуга;
                NewRow.наимен_услуги = kRow.наимен;
                NewRow.тариф         = kRow.цена;
                NewRow.месяцы        = "";
                NewRow.начало        = aMez[kRow.minMez - 1];
                if (kRow.maxMez > kRow.minMez)
                {
                    NewRow.конец = aMez[kRow.maxMez - 1];
                }
                NewRow.сумма = kRow.сумма;
                NewRow.год   = kRow.год;
                квитанцияЛист.Add(NewRow);

                //dsТабель1.квитанция.Rows.Add(NewRow);
            }


            Word.Application oWord = new Word.Application();

            string curDir = System.IO.Directory.GetCurrentDirectory();

            object шаблон = curDir + @"\квитанция.dot";

            if (!System.IO.File.Exists(шаблон.ToString()))
            {
                MessageBox.Show("Нет файла " + шаблон.ToString());
                return;
            }


            клФирма.init();
            клФилиал.init();

            Word.Document o = oWord.Documents.Add(Template: шаблон);
            //  oWord.Application.Visible = true;
            o.Bookmarks["менеджер"].Range.Text  = uRow.сотрудники.фио;
            o.Bookmarks["менеджер2"].Range.Text = uRow.сотрудники.фио;

            o.Bookmarks["дата"].Range.Text  = uRow.дата.ToLongDateString();
            o.Bookmarks["дата2"].Range.Text = uRow.дата.ToLongDateString();

            o.Bookmarks["филиал"].Range.Text          = клФилиал.наимен;
            o.Bookmarks["адрес_филиала"].Range.Text   = клФилиал.адрес.Trim();
            o.Bookmarks["телефон_филиала"].Range.Text = клФилиал.deRow.телефон.Trim();

            o.Bookmarks["филиал2"].Range.Text         = клФилиал.наимен;
            o.Bookmarks["адрес2филиала"].Range.Text   = клФилиал.адрес.Trim();
            o.Bookmarks["телефон2филиала"].Range.Text = клФилиал.deRow.телефон.Trim();


            o.Bookmarks["номер_квитанции"].Range.Text = uRow.номер.ToString();
            o.Bookmarks["номер2квитанции"].Range.Text = uRow.номер.ToString();

            o.Bookmarks["фио"].Range.Text = uRow.клиенты.фио;
            //string адрес_абонента = "ул. " + uRow.наимен_улицы.Trim()
            //    + "   д. " + uRow.номер_дома.Trim() + " "
            //    + uRow.корпус.Trim()
            //    + " кв. " + uRow.квартира.Trim();
            string адрес_абонента = uRow.клиенты.адрес;

            if (uRow.клиенты.ввод > 0)
            {
                адрес_абонента += " ввод " + uRow.клиенты.ввод.ToString();
            }

            o.Bookmarks["адрес"].Range.Text = адрес_абонента;

            o.Bookmarks["фио2"].Range.Text   = uRow.клиенты.фио;
            o.Bookmarks["адрес2"].Range.Text = адрес_абонента;

            o.Bookmarks["наимен_фирмы"].Range.Text   = клФирма.deRow.наимен.Trim();
            o.Bookmarks["наимен2фирмы"].Range.Text   = клФирма.deRow.наимен.Trim();
            o.Bookmarks["инн"].Range.Text            = "ИНН " + клФирма.deRow.инн.Trim();
            o.Bookmarks["инн2"].Range.Text           = "ИНН " + клФирма.deRow.инн.Trim();
            o.Bookmarks["кпп"].Range.Text            = "КПП " + клФирма.deRow.код.Trim();
            o.Bookmarks["кпп2"].Range.Text           = "КПП " + клФирма.deRow.код.Trim();
            o.Bookmarks["расчетный_счет"].Range.Text = "р/с " + клФирма.deRow.р_счет.Trim();
            o.Bookmarks["расчетный2счет"].Range.Text = "р/с " + клФирма.deRow.р_счет.Trim();
            o.Bookmarks["наимен_банка"].Range.Text   = " " + клФирма.deRow.банк.Trim();
            o.Bookmarks["наимен2банка"].Range.Text   = " " + клФирма.deRow.банк.Trim();
            o.Bookmarks["город"].Range.Text          = клФирма.deRow.город.Trim();
            o.Bookmarks["город2"].Range.Text         = клФирма.deRow.город.Trim();
            o.Bookmarks["кор_счет"].Range.Text       = "к/с " + клФирма.deRow.к_счет.Trim();
            o.Bookmarks["кор2счет"].Range.Text       = "к/с " + клФирма.deRow.к_счет.Trim();
            o.Bookmarks["адрес_фирмы"].Range.Text    = клФирма.deRow.адрес.Trim();
            o.Bookmarks["адрес2фирмы"].Range.Text    = клФирма.deRow.адрес.Trim();


            int     j     = 1;
            decimal итого = 0;

            foreach (квитанция kRow in квитанцияЛист)
            {
                string текст1 = kRow.начало + " - " + kRow.конец + " " + kRow.год.ToString();
                j++;
                o.Tables[5].Cell(j, 1).Range.Text = kRow.наимен_услуги;
                o.Tables[5].Cell(j, 2).Range.Text = kRow.тариф.ToString("0.00;#;#");
                o.Tables[5].Cell(j, 3).Range.Text = текст1;
                o.Tables[5].Cell(j, 4).Range.Text = kRow.сумма.ToString("0.00");
                o.Tables[5].Rows.Add();
                итого += kRow.сумма;

                o.Tables[11].Cell(j, 1).Range.Text = kRow.наимен_услуги;
                o.Tables[11].Cell(j, 2).Range.Text = kRow.тариф.ToString("0.00;#;#");
                o.Tables[11].Cell(j, 3).Range.Text = текст1;
                o.Tables[11].Cell(j, 4).Range.Text = kRow.сумма.ToString("0.00");
                o.Tables[11].Rows.Add();
            }
            o.Tables[5].Cell(j + 1, 4).Range.Text  = итого.ToString("0.00");
            o.Tables[11].Cell(j + 1, 4).Range.Text = итого.ToString("0.00");


            клTemp.Caption            = o.ActiveWindow.Caption;
            oWord.Application.Visible = true;
        }
        private void button17_Click(object sender, EventArgs e)
        {
            if (bindingSource1.Count > 0)
            {
                оплаты uRow = bindingSource1.Current as оплаты;
                клОплата.оплата = uRow.оплата;
                string фио = uRow.клиенты.фио;

                de = new domofon14Entities();
                //int СуммаВозврата = de.возврат
                //    .Where(n => n.оплата == клОплата.оплата)
                //    .Sum(n => n.сумма);

                Word.Application oWord = new Word.Application();

                string curDir = System.IO.Directory.GetCurrentDirectory();

                object шаблон = curDir + @"\расходник.dot";
                if (!System.IO.File.Exists(шаблон.ToString()))
                {
                    MessageBox.Show("Нет файла " + шаблон.ToString());
                    return;
                }

                клФирма.init();
                клФилиал.init();

                Word.Document o = oWord.Documents.Add(Template: шаблон);
                o.Bookmarks["кассир"].Range.Text = uRow.сотрудники.фио;

                o.Bookmarks["дата"].Range.Text = uRow.дата.ToLongDateString();

                o.Bookmarks["филиал"].Range.Text = клФилиал.наимен;

                if (de.возврат.Any(n => n.оплата == клОплата.оплата) || de.воз_работы.Any(n => n.оплата == клОплата.оплата))
                {
                    int СуммаВозврата = de.возврат
                                        .Where(n => n.оплата == клОплата.оплата)
                                        .Sum(n => n.сумма);

                    int ВозвратРаботы = de.воз_работы
                                        .Where(n => n.оплата == клОплата.оплата)
                                        .Sum(n => n.сумма);

                    СуммаВозврата += ВозвратРаботы;

                    //  MessageBox.Show(прописью.буквами(СуммаВозврата));
                    if (o.Bookmarks.Exists("сумма"))
                    {
                        o.Bookmarks["сумма"].Range.Text = СуммаВозврата.ToString();
                    }
                    if (o.Bookmarks.Exists("выдано_прописью"))
                    {
                        o.Bookmarks["выдано_прописью"].Range.Text = прописью.буквами(СуммаВозврата) + "____";
                    }
                }
                //      o.Bookmarks["сумма"].Range.Text = СуммаВозврата.ToString();


                if (o.Bookmarks.Exists("номер"))
                {
                    o.Bookmarks["номер"].Range.Text = uRow.номер.ToString();
                }
                if (o.Bookmarks.Exists("фио"))
                {
                    o.Bookmarks["фио"].Range.Text = фио;
                }

                oWord.Application.Visible = true;
            }
        }
        private void заполнить2услуги()
        {
            int мСумма = 0;

            tempList.Clear();

            if (bindingSource1.Count > 0)
            {
                try
                {
                    оплаты uRow = bindingSource1.Current as оплаты;

                    string curDir = System.IO.Directory.GetCurrentDirectory();

                    string шаблон = curDir + @"\заполнить_услуги.sql";

                    if (!System.IO.File.Exists(шаблон.ToString()))
                    {
                        MessageBox.Show("Нет файла " + шаблон.ToString());
                        Cursor = Cursors.Default;
                        return;
                    }
                    StreamReader sr = new StreamReader(шаблон, Encoding.Default);

                    string        запрос = sr.ReadToEnd();
                    StringBuilder sb     = new StringBuilder();
                    sb.AppendLine("declare @оплата  uniqueidentifier ='" + uRow.оплата.ToString() + "';");
                    sb.AppendLine(запрос);

                    string sqlString = sb.ToString();


                    tempList = de.Database.SqlQuery <temp>(sqlString).ToList();

                    //оплаты  uRow = (оплаты)bindingSource1.Current;
                    //tempList = de.Database.SqlQuery<temp>("заполнить_услуги @оплата = @p0", uRow.оплата).ToList();

                    if (tempList.Any())
                    {
                        мСумма = tempList.Sum(n => n.сумма);
                    }

                    if (uRow.оплатить != мСумма)
                    {
                        uRow.оплатить = мСумма;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            textBox1.Text             = мСумма.ToString();
            bindingSource2.DataSource = null;
            bindingSource2.DataSource = tempList;
            dataGridView2.DataSource  = null;
            dataGridView2.DataSource  = bindingSource2;
            bindingSource2.MoveLast();
            dataGridView2.Refresh();
            налTextBox.Text = "";
        }
        private void печать2квитанции_работ()
        {
            //  записать();
            //          DataSet.оплатаRow uRow = (оплатаBindingSource.Current as DataRowView).Row as DataSet.оплатаRow;
            оплаты uRow = bindingSource1.Current as оплаты;

            клОплата.оплата = uRow.оплата;
            de = new domofon14Entities();

            //        domofon10.DataClasses1DataContext db1 = new DataClasses1DataContext();

            //int номерКвитанции = 0;
            //if (db1.опл_работы
            //    .Any(n => n.оплата == клОплата.оплата))
            //{
            //    номерКвитанции = db1.опл_работы
            //    .Where(n => n.оплата == клОплата.оплата)
            //    .Max(n => n.код);
            //}

            //        var yRow = db1.опл_работы
            //.Where(n => n.оплата == клОплата.оплата)
            //.GroupBy(n => n.работа1)
            //.Select(n => new { n.Key, цена = n.Max(z => z.стоимость), сумма = n.Sum(z => z.оплачено) });

            var query = de.опл_работы
                        .Where(n => n.оплата == клОплата.оплата)
                        .OrderBy(n => n.работы.порядок);

            квитанцияЛист.Clear();

            foreach (var kRow in query)
            {
                квитанция NewRow = new квитанция();
                NewRow.услуга        = kRow.работа;
                NewRow.наимен_услуги = kRow.работы.наимен.Trim();
                NewRow.прейскурант   = kRow.работы.прейскурант.Trim();
                //   NewRow.наряд = kRow.задание;
                NewRow.сумма       = kRow.стоимость;
                NewRow.материалы   = (int)kRow.ст_материалов;
                NewRow.зарплата    = (int)NewRow.сумма - NewRow.материалы;
                NewRow.фио_мастера = kRow.сотрудники.фио;
                квитанцияЛист.Add(NewRow);
                //     dsТабель1.квитанция.Rows.Add(NewRow);
            }


            Word.Application oWord = new Word.Application();

            string curDir = System.IO.Directory.GetCurrentDirectory();

            object шаблон = curDir + @"\квитанция3работы.dot";

            if (!System.IO.File.Exists(шаблон.ToString()))
            {
                MessageBox.Show("Нет файла " + шаблон.ToString());
                return;
            }

            клФирма.init();
            клФилиал.init();

            Word.Document o = oWord.Documents.Add(Template: шаблон);
            o.Bookmarks["менеджер"].Range.Text  = uRow.сотрудники.фио;
            o.Bookmarks["менеджер2"].Range.Text = uRow.сотрудники.фио;

            o.Bookmarks["дата"].Range.Text  = uRow.дата.ToLongDateString();
            o.Bookmarks["дата2"].Range.Text = uRow.дата.ToLongDateString();

            o.Bookmarks["филиал"].Range.Text          = клФилиал.наимен;
            o.Bookmarks["адрес_филиала"].Range.Text   = клФилиал.адрес.Trim();
            o.Bookmarks["телефон_филиала"].Range.Text = клФилиал.deRow.телефон.Trim();

            o.Bookmarks["филиал2"].Range.Text         = клФилиал.наимен;
            o.Bookmarks["адрес2филиала"].Range.Text   = клФилиал.адрес.Trim();
            o.Bookmarks["телефон2филиала"].Range.Text = клФилиал.deRow.телефон.Trim();


            o.Bookmarks["номер_квитанции"].Range.Text = uRow.номер.ToString();
            o.Bookmarks["номер2квитанции"].Range.Text = uRow.номер.ToString();

            o.Bookmarks["фио"].Range.Text = uRow.клиенты.фио;
            //string адрес_абонента = "ул. " + uRow.наимен_улицы.Trim()
            //    + "   д. " + uRow.номер_дома.Trim() + " "
            //    + uRow.корпус.Trim() + " кв. " + uRow.квартира.Trim();
            //if (uRow.ввод > 0)
            //{
            //    адрес_абонента += " ввод " + uRow.ввод.ToString();
            //}

            o.Bookmarks["адрес"].Range.Text = uRow.клиенты.адрес;

            o.Bookmarks["фио2"].Range.Text   = uRow.клиенты.фио;
            o.Bookmarks["адрес2"].Range.Text = uRow.клиенты.адрес;

            o.Bookmarks["наимен_фирмы"].Range.Text   = клФирма.deRow.наимен.Trim();
            o.Bookmarks["наимен2фирмы"].Range.Text   = клФирма.deRow.наимен.Trim();
            o.Bookmarks["инн"].Range.Text            = "ИНН " + клФирма.deRow.инн.Trim();
            o.Bookmarks["инн2"].Range.Text           = "ИНН " + клФирма.deRow.инн.Trim();
            o.Bookmarks["кпп"].Range.Text            = "КПП " + клФирма.deRow.код.Trim();
            o.Bookmarks["кпп2"].Range.Text           = "КПП " + клФирма.deRow.код.Trim();
            o.Bookmarks["расчетный_счет"].Range.Text = "р/с " + клФирма.deRow.р_счет.Trim();
            o.Bookmarks["расчетный2счет"].Range.Text = "р/с " + клФирма.deRow.р_счет.Trim();
            o.Bookmarks["наимен_банка"].Range.Text   = " " + клФирма.deRow.банк.Trim();
            o.Bookmarks["наимен2банка"].Range.Text   = " " + клФирма.deRow.банк.Trim();
            o.Bookmarks["город"].Range.Text          = клФирма.deRow.город.Trim();
            o.Bookmarks["город2"].Range.Text         = клФирма.deRow.город.Trim();
            o.Bookmarks["кор_счет"].Range.Text       = "к/с " + клФирма.deRow.к_счет.Trim();
            o.Bookmarks["кор2счет"].Range.Text       = "к/с " + клФирма.deRow.к_счет.Trim();
            o.Bookmarks["адрес_фирмы"].Range.Text    = клФирма.deRow.адрес.Trim();
            o.Bookmarks["адрес2фирмы"].Range.Text    = клФирма.deRow.адрес.Trim();


            int     j     = 1;
            decimal итого = 0;

            foreach (квитанция kRow in квитанцияЛист)
            {
                //   string текст1 = kRow.начало + " - " + kRow.конец + " " + kRow.год.ToString();
                j++;
                o.Tables[5].Cell(j, 1).Range.Text = kRow.наряд.ToString("0;#;#");

                o.Tables[5].Cell(j, 2).Range.Text = kRow.прейскурант;
                o.Tables[5].Cell(j, 3).Range.Text = kRow.наимен_услуги.Trim() + "  мастер " + kRow.фио_мастера.Trim();
                //  o.Tables[5].Cell(j, 4).Range.Text = kRow.материалы.ToString("0.00;#;#");
                o.Tables[5].Cell(j, 4).Range.Text = kRow.сумма.ToString("0.00;#;#");
                o.Tables[5].Rows.Add();
                итого += kRow.сумма;

                o.Tables[11].Cell(j, 1).Range.Text = kRow.наряд.ToString("0;#;#");

                o.Tables[11].Cell(j, 2).Range.Text = kRow.прейскурант;
                o.Tables[11].Cell(j, 3).Range.Text = kRow.наимен_услуги.Trim() + "  мастер " + kRow.фио_мастера.Trim();
                o.Tables[11].Cell(j, 4).Range.Text = kRow.материалы.ToString("0.00;#;#");
                o.Tables[11].Cell(j, 5).Range.Text = kRow.сумма.ToString("0.00;#;#");
                o.Tables[11].Rows.Add();
            }
            o.Tables[5].Cell(j + 1, 4).Range.Text  = итого.ToString("0.00");
            o.Tables[11].Cell(j + 1, 5).Range.Text = итого.ToString("0.00");


            клTemp.Caption            = o.ActiveWindow.Caption;
            oWord.Application.Visible = true;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            виды_оплат vRow          = comboBox1.SelectedItem as виды_оплат;
            Guid       кодВидаОплаты = vRow.вид_оплаты;

            var клиентыЛист = temp3List
                              .Where(n => n.оплачено > 0)
                              .GroupBy(n => n.клиент)
                              .Select(n => n.Key).ToList();

            foreach (temp3 tRow in temp3List)
            {
                foreach (оплачено delRow in de.оплачено
                         .Where(n => n.год == клМесяц.год)
                         .Where(n => n.месяц == tRow.месяц)
                         .Where(n => n.услуга == клУслуга.услуга)
                         .Where(n => n.оплаты.клиент == tRow.клиент))
                {
                    de.оплачено.Remove(delRow);
                }
                de.SaveChanges();
            }
            int maxNum = 0;

            if (de.оплаты.Any())
            {
                maxNum = de.оплаты.Max(n => n.номер);
            }

            foreach (Guid kRow in клиентыЛист)
            {
                maxNum++;
                оплаты newOp = new оплаты()
                {
                    дата       = клКалендарь.дата.Value,
                    клиент     = kRow,
                    номер      = maxNum,
                    оплата     = Guid.NewGuid(),
                    сотрудник  = клСотрудник.сотрудник,
                    вид_оплаты = кодВидаОплаты
                };

                de.оплаты.Add(newOp);
                foreach (temp3 tRow in temp3List.Where(n => n.клиент == kRow))
                {
                    if (tRow.оплачено > 0)
                    {
                        оплачено newMez = new оплачено()
                        {
                            год    = клМесяц.год,
                            оплата = newOp.оплата,
                            месяц  = tRow.месяц,
                            сумма  = tRow.оплачено,
                            услуга = клУслуга.услуга,
                            платеж = Guid.NewGuid()
                        };
                        de.оплачено.Add(newMez);
                    }
                }
            }
            try
            {
                de.SaveChanges();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка записи " + ex.Message);
            }
            Close();
        }