Диплом: Автоматизация обработки заявок отделом техподдержки «Центральная клиническая больница гражданской авиации»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
124
Sum := 0; //Сумма работ
while not dstJobs.Eof do
begin
//Добавление новой строки для работы:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc,1] := i+1;
Excel.Cells[i+PosInc,2] := dstJobs.FieldByName('Работа').AsString;
Excel.Cells[i+PosInc,4] := FormatFloat('000',
dstJobs.FieldByName('РаботаID').AsInteger);
Excel.Cells[i+PosInc,5] := dstJobs.FieldByName('Работник').AsString;
Excel.Cells[i+PosInc,6] :=
dstJobs.FieldByName('ОплатаЗаНорму').AsCurrency;
Excel.Cells[i+PosInc,7] := FormatFloat('#,00',
dstJobs.FieldByName('Количество').AsFloat);
Excel.Cells[i+PosInc,8] := dstJobs.FieldByName('Сумма').AsCurrency;
Inc(i);
Sum := Sum + dstJobs.FieldByName('Сумма').AsCurrency;
dstJobs.Next;
end; //while not dstJobs.Eof
Excel.Cells[i+PosInc,8] := Sum;
Inc(i, 4);
SumItogo := SumItogo + Sum;
//Цикл по мат. ценностям:
dstMat.First;
Sum := 0; //Сумма мат. ценностей
j := 0;
while not dstMat.Eof do
begin
//Добавление новой строки для мат.ценности:
if j <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc+i-1].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc,1] := j+1;
125
Excel.Cells[i+PosInc,2] := dstMat.FieldByName('Материал').AsString;
Excel.Cells[i+PosInc,5] := tbStore.FieldByName('ЕдИзм').AsString;
Excel.Cells[i+PosInc,6] := dstMat.FieldByName('Цена').AsCurrency;
Excel.Cells[i+PosInc,7] := FormatFloat('#,00',
dstMat.FieldByName('Количество').AsFloat);
Excel.Cells[i+PosInc,8] := dstMat.FieldByName('Сумма').AsCurrency;
Inc(j);
Inc(i);
Sum := Sum + dstMat.FieldByName('Сумма').AsCurrency;
dstMat.Next;
end; //while not dstJobs.Eof
if j=0 then
Inc(i);
Excel.Cells[i+PosInc,8] := Sum;
SumItogo := SumItogo + Sum;
Excel.Cells[i+PosInc+2,8] := SumItogo;
Excel.Cells[i+PosInc+4,3] := SumToTxt(Format('%.2f', [SumItogo]));
Excel.Cells[i+PosInc+5,6] := dstOrders.FieldByName('Работник').AsString;
Excel.Cells[i+PosInc+6,6] := dstOrders.FieldByName('Менеджер').AsString;
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
finally
Screen.Cursor := crDefault;
end;
end;
//Формирование акта выполненных работ:
procedure Rep_Act;
var
WorkbookName: string;
Excel: Variant;
i, PosInc: Integer;
Sum: Currency;
begin
//Шаблон хранится в папке Templates:
WorkbookName := GetCurrentDir + '\Templates\' + 'Акт выполненных работ.xlt';
Excel := CreateOleObject('Excel.Application');
Screen.Cursor := crHourGlass;
try
try
Excel.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do
begin
i := 0;
PosInc := 14;
126
//Вывод реквизитов в шапку:
DM.tbRequisite.Open;
Excel.Cells[1,1] := DM.tbRequisite.FieldByName('Наименование').AsString;
Excel.Cells[2,1] := DM.tbRequisite.FieldByName('Адрес').AsString;
Excel.Cells[3,1] := 'ИНН ' + DM.tbRequisite.FieldByName('ИНН').AsString +
', КПП ' + DM.tbRequisite.FieldByName('КПП').AsString;
Excel.Cells[8,3] := DM.tbRequisite.FieldByName('Наименование').AsString;
DM.tbRequisite.Close;
Excel.Cells[2,8] := '№ Д' + FormatFloat('0000',
dstOrders.FieldByName('NЗаказа').AsInteger) +
' от ' + dstOrders.FieldByName('ДатаПриема').AsString;
Excel.Cells[9,3] := dstOrders.FieldByName('Клиент').AsString;
Excel.Cells[10,3] := dstOrders.FieldByName('Клиент').AsString;
Excel.Cells[5,4] := 'А' + FormatFloat('0000',
dstOrders.FieldByName('NЗаказа').AsInteger) +
' от ' +
GetRightDate(DM.dstOrders.FieldByName('ДатаПриема').AsDateTime);
//Цикл по работам:
dstJobs.First;
Sum := 0; //Сумма работ
while not dstJobs.Eof do
begin
//Добавление новой строки для работы:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc,1] := i+1;
Excel.Cells[i+PosInc,2] := dstJobs.FieldByName('Работа').AsString;
Excel.Cells[i+PosInc,4] := FormatFloat('000',
dstJobs.FieldByName('РаботаID').AsInteger);
Excel.Cells[i+PosInc,5] := dstJobs.FieldByName('Работник').AsString;
Excel.Cells[i+PosInc,6] :=
dstJobs.FieldByName('ОплатаЗаНорму').AsCurrency;
Excel.Cells[i+PosInc,7] := FormatFloat('#,00',
dstJobs.FieldByName('Количество').AsFloat);
Excel.Cells[i+PosInc,8] := dstJobs.FieldByName('Сумма').AsCurrency;
Inc(i);
Sum := Sum + dstJobs.FieldByName('Сумма').AsCurrency;
dstJobs.Next;
end; //while not dstJobs.Eof
Excel.Cells[i+PosInc,8] := Sum;
127
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
finally
Screen.Cursor := crDefault;
end;
end;
//Формирование счета:
procedure Rep_Bill;
var
WorkbookName: string;
Excel: Variant;
i, PosInc: Integer;
Sum: Currency;
begin
//Шаблон хранится в папке Templates:
WorkbookName := GetCurrentDir + '\Templates\' + 'Счет.xlt';
Excel := CreateOleObject('Excel.Application');
Screen.Cursor := crHourGlass;
try
try
Excel.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do
begin
i := 0;
PosInc := 9;
Excel.Cells[4,3] := 'С' + FormatFloat('0000',
dstOrders.FieldByName('NЗаказа').AsInteger) +
' от ' + dstOrders.FieldByName('ДатаПриема').AsString;
Excel.Cells[9,3] := dstOrders.FieldByName('Клиент').AsString;
Excel.Cells[6,3] := dstOrders.FieldByName('Клиент').AsString + ', ИНН ' +
DM.tbClients.FieldByName('ИНН').AsString + ', КПП ' +
DM.tbClients.FieldByName('КПП').AsString;
//Цикл по работам:
dstJobs.First;
Sum := 0;
while not dstJobs.Eof do
begin
//Добавление новой строки для работы:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
128
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc,1] := i+1;
Excel.Cells[i+PosInc,2] := dstJobs.FieldByName('Работа').AsString;
Excel.Cells[i+PosInc,4] := 'шт';
Excel.Cells[i+PosInc,5] := FormatFloat('#,00',
dstJobs.FieldByName('Количество').AsFloat);
Excel.Cells[i+PosInc,6] :=
dstJobs.FieldByName('ОплатаЗаНорму').AsCurrency;
Excel.Cells[i+PosInc,7] := dstJobs.FieldByName('Сумма').AsCurrency;
Inc(i);
Sum := Sum + dstJobs.FieldByName('Сумма').AsCurrency;
dstJobs.Next;
end; //while not dstJobs.Eof
//Цикл по материалам:
dstMat.First;
while not dstMat.Eof do
begin
//Добавление новой строки для работы:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc,1] := i+1;
Excel.Cells[i+PosInc,2] := dstMat.FieldByName('Материал').AsString;
Excel.Cells[i+PosInc,4] := tbStore.FieldByName('ЕдИзм').AsString;
Excel.Cells[i+PosInc,5] := FormatFloat('#,00',
dstMat.FieldByName('Количество').AsFloat);
Excel.Cells[i+PosInc,6] := dstMat.FieldByName('Цена').AsCurrency;
Excel.Cells[i+PosInc,7] := dstMat.FieldByName('Сумма').AsCurrency;
Inc(i);
Sum := Sum + dstMat.FieldByName('Сумма').AsCurrency;
dstMat.Next;
end; //while not dstJobs.Eof
Excel.Cells[i+PosInc,7] := Sum;
Excel.Cells[i+PosInc+2,3] := SumToTxt(Format('%.2f', [Sum]));
//Вывод реквизитов в шапку:
DM.tbRequisite.Open;
129
Excel.Cells[1,1] := DM.tbRequisite.FieldByName('Наименование').AsString + ',
' +
DM.tbRequisite.FieldByName('Адрес').AsString + ', ИНН ' +
DM.tbRequisite.FieldByName('ИНН').AsString + ', КПП ' +
DM.tbRequisite.FieldByName('КПП').AsString;
Excel.Cells[2,1] := DM.tbRequisite.FieldByName('Реквизиты').AsString;
Excel.Cells[i+PosInc+4,4] :=
DM.tbRequisite.FieldByName('ГлавВрач').AsString;
DM.tbRequisite.Close;
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
finally
Screen.Cursor := crDefault;
end;
end;
//Формирование счета-фактуры:
procedure Rep_Fact;
var
WorkbookName: string;
Excel: Variant;
i, PosInc: Integer;
Sum: Currency;
begin
//Шаблон хранится в папке Templates:
WorkbookName := GetCurrentDir + '\Templates\' + 'Счет-фактура.xlt';
Excel := CreateOleObject('Excel.Application');
Screen.Cursor := crHourGlass;
try
try
Excel.Workbooks.Open(WorkbookName);
//Экспорт данных из таблицы БД:
with DM do
begin
i := 0;
PosInc := 19;
Excel.Cells[4,2] := 'СФ' + FormatFloat('0000',
dstOrders.FieldByName('NЗаказа').AsInteger);
Excel.Cells[4,4] :=
GetRightDate(DM.dstOrders.FieldByName('ДатаПриема').AsDateTime);
Excel.Cells[10,3] := dstOrders.FieldByName('Клиент').AsString + ', ' +
DM.tbClients.FieldByName('Отдел').AsString;
Excel.Cells[11,3] := 'С' + FormatFloat('0000',
dstOrders.FieldByName('NЗаказа').AsInteger) +
' от ' + dstOrders.FieldByName('ДатаПриема').AsString;
Excel.Cells[12,2] := dstOrders.FieldByName('Клиент').AsString;
Excel.Cells[13,2] := DM.tbClients.FieldByName('Отдел').AsString;
Excel.Cells[14,2] := DM.tbClients.FieldByName('ИНН').AsString + ' / ' +
DM.tbClients.FieldByName('КПП').AsString;
130
//Цикл по работам:
dstJobs.First;
Sum := 0;
while not dstJobs.Eof do
begin
//Добавление новой строки для работы:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc,1] := dstJobs.FieldByName('Работа').AsString;
Excel.Cells[i+PosInc,4] := 'шт';
Excel.Cells[i+PosInc,5] := FormatFloat('#,00',
dstJobs.FieldByName('Количество').AsFloat);
Excel.Cells[i+PosInc,6] :=
dstJobs.FieldByName('ОплатаЗаНорму').AsCurrency / 118 * 100;
Excel.Cells[i+PosInc,7] := dstJobs.FieldByName('Сумма').AsCurrency / 118 *
100;
Excel.Cells[i+PosInc,10] := dstJobs.FieldByName('Сумма').AsCurrency / 118 *
18;
Excel.Cells[i+PosInc,11] := dstJobs.FieldByName('Сумма').AsCurrency;
Inc(i);
Sum := Sum + dstJobs.FieldByName('Сумма').AsCurrency;
dstJobs.Next;
end; //while not dstJobs.Eof
//Цикл по материалам:
dstMat.First;
while not dstMat.Eof do
begin
//Добавление новой строки для работы:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc,1] := dstMat.FieldByName('Материал').AsString;
Excel.Cells[i+PosInc,4] := tbStore.FieldByName('ЕдИзм').AsString;
131
Excel.Cells[i+PosInc,5] := FormatFloat('#,00',
dstMat.FieldByName('Количество').AsFloat);
Excel.Cells[i+PosInc,6] := dstMat.FieldByName('Цена').AsCurrency / 118 *
100;
Excel.Cells[i+PosInc,7] := dstMat.FieldByName('Сумма').AsCurrency / 118 *
100;
Excel.Cells[i+PosInc,10] := dstMat.FieldByName('Сумма').AsCurrency / 118 *
18;
Excel.Cells[i+PosInc,11] := dstMat.FieldByName('Сумма').AsCurrency;
Inc(i);
Sum := Sum + dstMat.FieldByName('Сумма').AsCurrency;
dstMat.Next;
end; //while not dstJobs.Eof
Excel.Cells[i+PosInc,10] := Sum / 118 * 18;
Excel.Cells[i+PosInc,11] := Sum;
//Вывод реквизитов:
DM.tbRequisite.Open;
Excel.Cells[6,2] := DM.tbRequisite.FieldByName('Наименование').AsString;
Excel.Cells[7,2] := DM.tbRequisite.FieldByName('Адрес').AsString;
Excel.Cells[8,2] := DM.tbRequisite.FieldByName('ИНН').AsString + ' / ' +
DM.tbRequisite.FieldByName('КПП').AsString;
Excel.Cells[9,3] := DM.tbRequisite.FieldByName('Наименование').AsString +
', ' + DM.tbRequisite.FieldByName('Адрес').AsString;
Excel.Cells[i+PosInc+3,6] :=
DM.tbRequisite.FieldByName('ГлавВрач').AsString;
Excel.Cells[i+PosInc+3,12] :=
DM.tbRequisite.FieldByName('ГлавБух').AsString;
DM.tbRequisite.Close;
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
finally
Screen.Cursor := crDefault;
end;
end;
//Функция возвращает дату формата "xx месяца xxxx г."
function GetRightDate(ADate: TDateTime): string;
var
Month: string;
begin
case MonthOf(ADate) of
1: Month := 'января';
2: Month := 'февраля';
3: Month := 'марта';
4: Month := 'апреля';
5: Month := 'мая';
132
6: Month := 'июня';
7: Month := 'июля';
8: Month := 'августа';
9: Month := 'сентября';
10: Month := 'октября';
11: Month := 'ноября';
12: Month := 'декабря';
end;
Result := FormatDateTime('dd ' + Month + ' yyyy г.', ADate);
end;
//Формирование отчета по выбранному набору данных (вывод заголовков
видимых
//полей и их значений):
procedure Rep_Any(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);
var
Excel: Variant;
i, j, Width: Integer;
begin
Excel := CreateOleObject('Excel.Application');
Screen.Cursor := crHourGlass;
try
try
Excel.Application.EnableEvents := False;
Excel.Workbooks.Add;
for i:=0 to NumCol-1 do
begin
//Вывод в шапку таблицы названий полей из DBGrid'а:
Excel.Cells[5,i+1] := ADBGrid.Columns[i].Title.Caption;
//Форматирование заголовка:
Width := Min(30, Trunc(ADBGrid.Columns[i].Width * 0.2));
Excel.Cells[5,i+1].ColumnWidth := Width;
Excel.Cells[5,i+1].Font.Bold := True;
Excel.Cells[5,i+1].Borders[7].LineStyle := 1;
Excel.Cells[5,i+1].Borders[8].LineStyle := 1;
Excel.Cells[5,i+1].Borders[9].LineStyle := 1;
Excel.Cells[5,i+1].Borders[10].LineStyle := 1;
end;
Excel.Cells[1,1] := Date;
Excel.Cells[3,1] := ACaption;
Excel.Cells[3,1].Font.Bold := True;
Excel.Cells[3,1].Font.Size := 12;
i := 5;
//Экспорт данных из таблиц БД:
with ADBGrid.DataSource.DataSet do
begin
DisableControls; //Отключаем сетку на время формирования отчета
First;
while not Eof do
begin
Inc(i);
133
//Выводятся NumCol первых полей таблицы, отображенных в DBGrid'е:
for j:=0 to NumCol-1 do
begin
Excel.Cells[i,j+1].NumberFormat := '@'; //Формат "текст"
//Текст выводится так, как он отображен в DBGrid'e:
Excel.Cells[i,j+1] :=
FieldByName(ADBGrid.Columns[j].FieldName).DisplayText;
Excel.Cells[i,j+1].Borders[7].LineStyle := 1;
Excel.Cells[i,j+1].Borders[8].LineStyle := 1;
Excel.Cells[i,j+1].Borders[9].LineStyle := 1;
Excel.Cells[i,j+1].Borders[10].LineStyle := 1;
if ADBGrid.Columns[j].Alignment = taLeftJustify then
Excel.Cells[i,j+1].HorizontalAlignment := 2 //Выравнивание влево
else
Excel.Cells[i,j+1].HorizontalAlignment := 4;//Выравнивание вправо
Excel.Cells[i,j+1].WrapText := True; //Перенос текста в ячейке
end;
Next;
end;
end; //with
Excel.Application.EnableEvents := True;
Excel.Visible := True;
except
Excel.Quit;
end;
finally
ADBGrid.DataSource.DataSet.EnableControls;
Screen.Cursor := crDefault;
ADBGrid.Enabled := True;
end;
end;
end.
unit ReqUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, Buttons;
type
TfmRequisite = class(TForm)
Label1: TLabel;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label6: TLabel;
DBEdit6: TDBEdit;
Label7: TLabel;

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)