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 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; }