ПЗ (Автоматизированная информационная система предприятия компьютерного сервиса), страница 10
Описание файла
Файл "ПЗ" внутри архива находится в следующих папках: Автоматизированная информационная система предприятия компьютерного сервиса, Черноусов. Документ из архива "Автоматизированная информационная система предприятия компьютерного сервиса", который расположен в категории "". Всё это находится в предмете "дипломы и вкр" из 8 семестр, которые можно найти в файловом архиве ДВГУПС. Не смотря на прямую связь этого архива с ДВГУПС, его также можно найти и в других разделах. .
Онлайн просмотр документа "ПЗ"
Текст 10 страницы из документа "ПЗ"
RadioButton1: TRadioButton;
RadioButton3: TRadioButton;
RadioButton2: TRadioButton;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
bbtGo: TBitBtn;
bbtCalc: TBitBtn;
DBNavigator2: TDBNavigator;
BitBtn1: TBitBtn;
Label4: TLabel;
DBLookupComboBox4: TDBLookupComboBox;
bbtSelectClient: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtCalcClick(Sender: TObject);
procedure DBGrid2Enter(Sender: TObject);
procedure bbtGoClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure bbtSelectClientClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmOrder: TfmOrder;
implementation
uses DMUnit, ReportsUnit, DB, ClientUnit;
{$R *.dfm}
procedure TfmOrder.FormShow(Sender: TObject);
begin
DM.dstJobs.Open;
DM.dstMat.Open;
DM.tbPrice.Sort := 'Работа';
DM.tbStore.Sort := 'Наименование';
end;
procedure TfmOrder.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.dstJobs.Close;
DM.dstMat.Close;
end;
//Пересчет итоговой суммы по заказу с учетом скидки:
procedure TfmOrder.bbtCalcClick(Sender: TObject);
var
Sum1, Sum2: Currency;
begin
DM.dstOrderJobSum.Parameters.ParamByName('pOrderNum').Value := DM.dstOrders.FieldByName('NЗаказа').Value;
DM.dstOrderMatSum.Parameters.ParamByName('pOrderNum').Value := DM.dstOrders.FieldByName('NЗаказа').Value;
DM.dstOrderJobSum.Open; //Запроссуммыработ
DM.dstOrderMatSum.Open; //Запроссуммыматериалов
try
if not DM.dstOrderJobSum.FieldByName('Sum1').IsNull then
Sum1 := DM.dstOrderJobSum.FieldByName('Sum1').Value
else
Sum1 := 0;
if not DM.dstOrderMatSum.FieldByName('Sum1').IsNull then
Sum2 := DM.dstOrderMatSum.FieldByName('Sum1').Value
else
Sum2 := 0;
DM.dstOrders.Edit;
DM.dstOrders.FieldByName('Сумма').Value := Sum1 + Sum2;
DM.dstOrders.Post;
finally
DM.dstOrderJobSum.Close;
DM.dstOrderMatSum.Close;
end;
end;
//Подключение Навигатора к источнику данных, с которым в текущий момент работает
//пользователь:
procedure TfmOrder.DBGrid2Enter(Sender: TObject);
begin
DBNavigator2.DataSource := (Sender As TDBGrid).DataSource;
//Сохранение нового заказа перед добавлением работ или запчастей по нему:
if DM.dstOrders.State = dsInsert then
DM.dstOrders.Post;
end;
//Печать выбранного документа:
procedure TfmOrder.bbtGoClick(Sender: TObject);
begin
if RadioButton1.Checked then
begin
Rep_Contract;
Rep_Order;
end
else if RadioButton2.Checked then
Rep_Bill
else if RadioButton3.Checked then
Rep_Act
else if RadioButton4.Checked then
Rep_Fact
else
begin
Rep_Contract;
Rep_Order;
Rep_Act;
Rep_Bill;
Rep_Fact;
end;
end;
procedure TfmOrder.BitBtn1Click(Sender: TObject);
begin
Close;
end;
end.
Программный модуль Post.pas
unit Post;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;
type
TfmPost = class(TForm)
DBGrid1: TDBGrid;
Panel1: TPanel;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmPost: TfmPost;
implementation
uses DMUnit;
{$R *.dfm}
procedure TfmPost.FormShow(Sender: TObject);
begin
DM.tbSpec.Open;
end;
procedure TfmPost.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.tbSpec.Close;
end;
procedure TfmPost.BitBtn1Click(Sender: TObject);
begin
Close;
end;
end.
Программный модуль Price.pas
unit Price;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, DBGrids, DBCtrls, StdCtrls, Buttons;
type
TfmPrice = class(TForm)
DBGrid1: TDBGrid;
Panel1: TPanel;
bbtPrint: TBitBtn;
DBNavigator1: TDBNavigator;
BitBtn1: TBitBtn;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtPrintClick(Sender: TObject);
procedure DBGrid1TitleClick(Column: TColumn);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmPrice: TfmPrice;
implementation
uses DMUnit, ReportsUnit, ADODB;
{$R *.dfm}
procedure TfmPrice.FormShow(Sender: TObject);
begin
DM.tbPrice.Open;
DM.tbPrice.Sort := 'Работа';
end;
procedure TfmPrice.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.tbPrice.Close;
end;
procedure TfmPrice.bbtPrintClick(Sender: TObject);
begin
Rep_Any(DBGrid1, 5, Self.Caption);
end;
//Сортировка данных в таблице по выбранному столбцу:
procedure TfmPrice.DBGrid1TitleClick(Column: TColumn);
begin
try
(DBGrid1.DataSource.DataSet as TADOTable).Sort := Column.FieldName;
except
Application.MessageBox('Сортировкаподанномуполюневозможна', 'Информация', MB_OK+MB_ICONINFORMATION)
end;
end;
procedure TfmPrice.BitBtn1Click(Sender: TObject);
begin
Close;
end;
end.
Программныймодуль Reports.pas
unit Reports;
interface
uses
Windows, SysUtils, Classes, ComObj, DB, Controls, Forms, ADODB, Math, DBGrids;
procedure Rep_Any(ADBGrid: TDBGrid; NumCol: Integer; ACaption: string);
procedure Rep_JobList(Date1, Date2: TDate);
procedure Rep_Contract;
procedure Rep_Order;
procedure Rep_Act;
procedure Rep_Bill;
procedure Rep_Fact;
function GetRightDate(ADate: TDateTime): string;
implementation
uses
DMUnit, DateUtils, Dialogs, SumStringUnit;
//Формирование списка работ по каждому работнику за указанный диапазон дат:
procedure Rep_JobList(Date1, Date2: TDate);
var
WorkbookName: string;
Excel: Variant;
i, j, PosInc: Integer;
Sum, SumItogo: 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;
SumItogo := 0; //Общая сумма работ
PosInc := 5;
Excel.Cells[1,1] := 'Выполненные объемы работ / услуг в разрезе работников с ' + DateToStr(Date1) +
' по ' + DateToStr(Date2);
tbStaff.Open;
tbStaff.First;
//Циклпоработникам:
while not tbStaff.Eof do
begin
//Запрос перечня работ, выполненных работником за заданный период:
dstEmpJobList.Parameters.ParamByName('pDate1').Value := Date1;
dstEmpJobList.Parameters.ParamByName('pDate2').Value := Date2;
dstEmpJobList.Parameters.ParamByName('pEmpID').Value := tbStaff.FieldByName('ТабN').AsInteger;
dstEmpJobList.Open;
//Если по работнику есть работы, они выводятся в отчет:
if dstEmpJobList.RecordCount > 0 then
begin
//Добавление новой шапки таблицы для работника:
if i <> 0 then
begin
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Insert;
Excel.Selection.Insert;
Excel.Selection.Insert;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc-2].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i].Select;
Excel.ActiveSheet.Paste;
Excel.Rows.Item[PosInc-1].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i+1].Select;
Excel.ActiveSheet.Paste;
Excel.Rows.Item[PosInc].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i+2].Select;
Excel.ActiveSheet.Paste;
Excel.Rows.Item[PosInc+i-1].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i+3].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
i := i + 2;
end;
Excel.Cells[i+PosInc-2,3] := tbStaff.FieldByName('ФИО').AsString;
j := 0;
Sum := 0; //Сумма работ по работнику
dstEmpJobList.First;
//Цикл по работам работника:
while not dstEmpJobList.Eof do
begin
//Добавление новой строки для работы:
if j <> 0 then
begin
Excel.Rows.Item[PosInc+i+j].Select;
Excel.Selection.Insert;
Excel.Rows.Item[PosInc+i].Select;
Excel.Selection.Copy;
Excel.Rows.Item[PosInc+i+j].Select;
Excel.ActiveSheet.Paste;
Excel.Application.CutCopyMode := False;
end;
Excel.Cells[i+PosInc+j,1] := j+1;
Excel.Cells[i+PosInc+j,2] := dstEmpJobList.FieldByName('Работа').AsString;
Excel.Cells[i+PosInc+j,4] := FormatFloat('000', dstEmpJobList.FieldByName('Шифр').AsInteger);
Excel.Cells[i+PosInc+j,5] := FormatFloat('#,00', dstEmpJobList.FieldByName('Количество').AsFloat);
Excel.Cells[i+PosInc+j,6] := dstEmpJobList.FieldByName('Сумма').AsCurrency;
Inc(j);
Sum := Sum + dstEmpJobList.FieldByName('Сумма').AsCurrency;
dstEmpJobList.Next;
end; //while not dstEmpJobList.Eof
Excel.Cells[i+PosInc+j,6] := Sum;
i := i + j + 1;
SumItogo := SumItogo + Sum;
end; //if dstEmpJobList.RecordCount > 0
dstEmpJobList.Close;
tbStaff.Next
end; //while
Excel.Cells[i+6,6] := SumItogo;
tbStaff.Close;
end; //with
Excel.Visible := True;
except
Excel.Quit;
end;
finally
Screen.Cursor := crDefault;
end;
end;
//Формированиедоговора:
procedure Rep_Contract;
var
ObjWord: Variant;
begin
ObjWord := CreateOleObject('Word.Application');
Screen.Cursor := crHourGlass;
try
try
ObjWord.Documents.Open(GetCurrentDir + '\Templates\Договор.dot');
//Данные договора и заказа:
ObjWord.Selection.Goto(Name := 'НомерДог');
ObjWord.Selection.TypeText(Text := 'Д' + FormatFloat('0000', DM.dstOrders.FieldByName('NЗаказа').AsFloat));
ObjWord.Selection.Goto(Name := 'ДатаДог');
ObjWord.Selection.TypeText(Text := GetRightDate(DM.dstOrders.FieldByName('ДатаПриема').AsDateTime));
ObjWord.Selection.Goto(Name := 'ДатаОконч');
ObjWord.Selection.TypeText(Text := GetRightDate(DM.dstOrders.FieldByName('ДатаСдачи').AsDateTime));
//Данныеклиента:
ObjWord.Selection.Goto(Name := 'Заказчик');
ObjWord.Selection.TypeText(Text := DM.tbClients.FieldByName('ФИО_Наименование').AsString);
ObjWord.Selection.Goto(Name := 'Заказчик2');
ObjWord.Selection.TypeText(Text := DM.tbClients.FieldByName('ФИО_Наименование').AsString);
if not DM.tbClients.FieldByName('Паспорт').IsNull then
begin
ObjWord.Selection.Goto(Name := 'Паспорт');
ObjWord.Selection.TypeText(Text := 'Паспорт: ' + DM.tbClients.FieldByName('Паспорт').AsString);
end;
ObjWord.Selection.Goto(Name := 'Адрес');
ObjWord.Selection.TypeText(Text := DM.tbClients.FieldByName('Адрес').AsString);
ObjWord.Selection.Goto(Name := 'ИННЗак');
ObjWord.Selection.TypeText(Text := DM.tbClients.FieldByName('ИНН').AsString);
ObjWord.Selection.Goto(Name := 'РеквизитыЗак');
ObjWord.Selection.TypeText(Text := DM.tbClients.FieldByName('Реквизиты').AsString);
//Реквизиты компании: