- •Оглавление
- •Введение
- •I аналитическая часть
- •Технико-экономическая характеристика предметной области и предприятия. Анализ деятельности «как есть»
- •Характеристика предприятия и его деятельности
- •Организационная структура управления предприятием
- •Информационная и техническая архитектура ис предприятия
- •Характеристика комплекса задач, задачи и обоснование необходимости автоматизации
- •Определение места проектируемой задачи в комплексе задач и ее описание
- •Обоснование необходимости использования вычислительной техники для решения задачи
- •Анализ системы обеспечения информационной безопасности и защиты информации
- •Анализ существующих разработок и выбор стратегии автоматизации «как должно быть»
- •Анализ существующих разработок для автоматизации задачи
- •Выбор и обоснование стратегии автоматизации задачи
- •Выбор и обоснование способа приобретения ис для автоматизации задачи
- •Обоснование проектных решений
- •Обоснование проектных решений по техническому обеспечению
- •Обоснование проектных решений по информационному обеспечению
- •Обоснование проектных решений по программному обеспечению
- •II проектная часть
- •Разработка проекта автоматизации
- •Этапы жизненного цикла проекта автоматизации
- •Ожидаемые риски на этапах жизненного цикла и их описание
- •Организационно-правовые и программно-аппаратные средства обеспечения информационной безопасности и защиты информации
- •Информационное обеспечение задачи
- •Информационная модель и её описание
- •Используемые классификаторы и системы кодирования
- •Характеристика нормативно-справочной, входной и оперативной информации
- •Характеристика результатной информации
- •Формализация расчётов показателей
- •Программное обеспечение задачи
- •Общие положения (дерево функций и сценарий диалога)
- •Описание программных модулей и структурная схема пакета
- •Алгоритмы обработки данных
- •Контрольный пример реализации проекта и его описание
-
Контрольный пример реализации проекта и его описание
Рассмотрим более детально работу с главной формой проекта при регистрации нового заказа клиента на изготовление ювелирного изделия.
При активации главной формы проекта (Приложение Е Рис.Е.1) автоматически выставляется период на текущую неделю. Для того чтобы выставить необходимый период за который должны отображаться заказы, необходимо выбрать на календаре (Рис. 2.19) нужную дату начала периода и нажать на кнопку «С» панели ПЕРИД, затем выбрать дату окончания периода и нажать кнопку «ПО» панели ПЕРИОД.
Рис. 2.19 – Выбор периода отображения данных либо формирования отчетности и документации
Регистрация нового заказа на изготовление ювелирных изделий происходит в форме диалога пользователя с системой.
Для добавления нового заказа, необходимо нажать на кнопку +ЗАКАЗ панели СОЗДАТЬ НОВЫЙ ЗАКАЗ (Рис. 2.20).
Рис. 2.20 – Панель СОЗДАТЬ НОВЫЙ ЗАКАЗ
При этом открывается форма КЛИЕНТЫ. После чего система предлагает пользователю выбрать необходимого клиента, на имя которого будет оформлен заказ (Рис. 2.21).
Рис. 2.21 – Предложение выбрать клиента
После выбора необходимого клиента и нажатия на кнопку ЗАКАЗ (добавить), система закрывает форму КЛИЕНТЫ и возвращается к главной форме проекта. При этом система предлагает пользователю добавить модель к заказу, выбрав её из каталога моделей. (Рис. 2.22).
Рис. 2.22 – Предложение добавить модель к заказу
После нажатия на кнопку +МОДЕЛЬ (Рис. 2.20) открывается форма МОДЕЛИ. Пользователь выбирает необходимую модель и нажимает на кнопку ДОБАВИТЬ МОДЕЛЬ К ЗАКАЗУ, расположенную в нижней правой части формы МОДЕЛИ. После выбора необходимой модели нажатия на кнопку ДОБАВИТЬ МОДЕЛЬ К ЗАКАЗУ, система закрывает форму МОДЕЛИ и возвращается к главной форме проекта. При этом система предлагает пользователю ввести дополнительную информацию об изделии (количество, описание и цену за грамм работы). (Рис. 2.23).
Рис. 2.23 – Предложение ввести дополнительную информацию о заказанном изделии
Если модель предусматривает наличие драгоценных камней, в таблице камней модели появляется дополнительное поле ОСТАТКИ (Рис. 2.24) с кнопкой для резервирования камней.
Рис. 2.24 – Кнопка для резервирования драгоценных камней
При нажатии на эту кнопку система проверяет наличие драгоценных камней на складе мастерской. Если камней не достаточно для изготовления выбранной модели, система предупреждает о необходимости новых поставок данного вида камней (Рис. 2.25) и предлагает выбрать другую модель (Рис. 2.26).
Рис. 2.25 – Предупреждение о недостатке драгоценных камней
Рис. 2.26 – Предложение выбрать другую модель
Если камней достаточно для изготовления изделия, регистрацию заказа можно закончить нажатием на кнопку СОХРАНИТЬ навигатора изделий.
После сохранения добавленного изделия, можно зарегистрировать сдаваемый клиентом металл для изготовления данного изделия. И при необходимости добавить металл мастерской, нажав на кнопку +МЕТАЛЛ (Рис. 2.20).
Для того чтобы аннулировать заказ, необходимо нажать на кнопку АННУЛИРОВАТЬ (Рис. 2.27). Если заказ уже выдан клиенту, аннулирование невозможно, о чем предупреждает соответствующее сообщение (Рис. 2.28).
Рис. 2.27 – Изменить статус заказа
Рис. 2.28 – Предупреждение «Аннулирование невозможно»
Для того чтобы отметить выполнение заказа, необходимо нажать на кнопку ВЫПОЛНИТЬ (Рис. 2.27). Если заказ аннулирован, его невозможно отметить, как выполнен, аналогично отмечается выдача заказа клиенту.
III ОБОСНОВАНИЕ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ ПРОЕКТА
-
-
-
-
Выбор и обоснование методики расчета экономической эффективности
-
Расчет показателей экономической эффективности проекта
-
ЗАКЛЮЧЕНИЕ
В рамках дипломного проекта была разработана информационная система, предназначенная для автоматизации работы приёмщика ювелирной мастерской. Информационная система автоматизирует весь спектр задач приёмщика связанных с приёмом и выдачей заказов на изготовление ювелирных изделий, скупкой драгоценных металлов у населения, и регистрации поставок драгоценных камней.
Система позволяет решать следующие задачи:
-
Учет клиентов ювелирной мастерской
-
Поиск клиентов по базе (автозаполнение по первым буквам)
-
Учет заказов клиентов
-
Анализ данных о заказах
-
Аннулирование заказа
-
Поиск заказа по разным критериям
-
Расчет суммы заказа
-
Расчет потерь от переработки металла
-
Расчет лигатуры и припоя сплава
-
Оперативное планирование производственного процесса
-
Обновление номенклатуры камней
-
Обновление номенклатуры изделий
-
Автоматизация списания из остатков вставок (камней) при создании заказа на изделия с ними
-
Предупреждение о нехватке металла для выполнения заказа
-
Регистрация актов закупа драгметалла
-
Учет и подготовка внешней и внутренней отчетности
-
Учет работы ювелирной мастерской
Преимущества:
-
Возможность анализа работы ювелирной мастерской;
-
Развитые возможности фильтрации, сортировки и поиска информации;
-
Автоматизированный расчет необходимых параметров.
При проектировании базы данных использовалось такое мощное CASE-средство как ERwin 4.0, поскольку от того, насколько хорошо спроектирована база данных, зависит удобство ее дальнейшего использования и администрирования. Также использовалась система управления реляционными базами данных Microsoft Access, которая предоставляет пользователям функциональные возможности, позволяющие осуществлять доступ к важным данным, и производить их глубокий анализ, а также является серьезной средой разработки приложений. Для реализации пользовательского интерфейса была проведена разработка Windows-приложения с учетом принципов создания дружественных интерфейсов и программная реализация проекта с помощью визуальной среды проектирования Borland Delphi 2007, на объектно-ориентированном языке программирования Object Pascal. Для доступа к данным хранящимся в таблицах MS Access используется наиболее передовая технология доступа к данным – технология Microsoft ADO.
В процессе выполнения дипломной работы были достигнуты следующие результаты: спроектирована концептуальная модель базы данных, спроектирована логическая модель с учетом нормализации и ссылочной целостности данных, осуществлена выборка СУБД и построена физическая модель с определением полей и типов данных, выбран комплекс технических средств, реализованы основные программные модули системы, проведен анализ экологических и учет эргономических требований при проектировании пользовательского интерфейса.
Выбрана методика и проведен расчет показателей экономической эффективности проекта. НЕОБХОДИМО ДОПОЛНИТЬ ПОСЛЕ ВЫПОЛНЕНИЯ ТРЕТЬЕЙ ГЛАВЫ ДИПЛОМА!!!!
Таким образом, можно сделать вывод о целесообразности разработки данной системы.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
-
Вендров А.М. Проектирование программного обеспечения экономических информационных систем, Финансы и статистика, М, 2002 г.
-
Гэри Хансен, Джеймс Хансен. Базы данных. Разработка и управление, Бином, М, 2001 г.
-
Джен Л. Харрингтон. Проектирование реляционных баз данных Лори, 2006 г.
-
Джеффри Д. Ульман, Дженнифер Уидом. Основы реляционных баз данных, Лори, М, 2006 г.
-
Информационные системы в экономике: учебник для студентов вузов / Под ред. Г. А. Титоренко. – 2-е изд., перераб. и доп. – М.: ЮНИТИ-ДАНА, 2008. – 463 с.
-
Кен Хендерсон. Профессиональное руководство по SQL Server. Структура и реализация (+ CD-ROM), Вильямс, М, 2006 г.
-
Маклаков С.В. BPwin и ERwin. CASE-средства разработки информационных систем. — М.: Диалог-МИФИ, 2000. — 256 с.
-
Питер Роб, Карлос Коронел. Системы баз данных: проектирование, реализация и управление, БХВ-Петербург, Сп-б, 2004 г.
-
Попов Ф.А., Ануфриева Н.Ю. Интеллектуализация пользовательских интерфейсов информационных систем // Вестник Томского государственного университета. - 2007.- №300(1).- с.130-133.
-
Сибилёв В.Д. Проектирование баз данных: Учеб. пособие. — Томск: Томский межвузовский центр дистанционного образования, 2007. — 201 с.
-
Скрипкин К.Г. Экономическая эффективность информационных систем. М.: ДМК Пресс, 2002.
-
Сорокин А.В. Разработка баз данных, Питер, Сп-б, 2005 г.
-
Томас Коннолли, Каролин Бегг, Анна Страчан. Базы данных. Проектирование, реализация и сопровождение. Теория и практика, Вильямс, М, 2001 г.
-
Фаронов В. В. Программирование баз данных в Delphi 7. Учебный курс. – СПб.: Питер, 2006. – 459 с.: ил
-
Элисон Балтер. Профессиональное программирование в Microsoft Office Access 2003 (+CD-ROM), Вильямс, М, 2006 г..
-
Информационная модель данных: http://www.intuit.ru/department/database/rdbdev/2/rdbdev_2.html
-
Классификаторы и системы кодирования: http://business-process.ru/is/theory/theory_classificator.html
-
Повышение эффективности бизнеса предприятий средствами информационных технологий www.topsbi.ru
-
Прайс-лист CASE-средств: http://www.itshop.ru/dynacatalog.asp?price=short
-
Фирма 1С: http://v8.1c.ru/solutions
ПРИЛОЖЕНИЕ А
Рис. А.1 – Схема информационных потоков ювелирной мастерской «Злато»
ПРИЛОЖЕНИЕ Б
Рис. Б.1 – Модель «AS-TO-BE» («Как должно быть») А-0 деятельности ювелирной мастерской «Злато»
ПРИЛОЖЕНИЕ В
Рис. В.1 – Декомпозиция модели «AS-TO-BE» А-0 (модель «AS-TO-BE» А0)
ПРИЛОЖЕНИЕ Г
Рис. Г.1 – IDEF1X-диаграмма KB-уровня
ПРИЛОЖЕНИЕ Д
Рис. Д.1 – Физическая модель данных
ПРИЛОЖЕНИЕ Е
Рис. Е.1 – Главная форма программы
ПРИЛОЖЕНИЕ Ж
Рис. Ж.1 – Форма МОДЕЛИ
ПРИЛОЖЕНИЕ З
Рис. З.1 – Наряд-заказ
ПРИЛОЖЕНИЕ И
Рис. И.1 – Отчет о ПРИБЫЛИ
ПРИЛОЖЕНИЕ К. Листинг программного кода
МОДУЛЬ ГЛАВНОЙ ФОРМЫ (Uvelir)
unit Uvelir;
implementation
uses DM, UnitKlient, UnitModel, UnitIzdel, UnitSkupkaMetall,
UnitKVITANCE, UnitKamni, Unit2DragKamni, UnitRezervMetall,
UnitLIGATURA, UnitPRIPOI, UnitOSTATKI, UnitMetall, UnitCHEK;
{$R *.dfm}
//Просмотр каталога клиентов
procedure TForm1.SpButKlientClick(Sender: TObject);
begin
FormKlient.Show;
UnitKlient.FormKlient.SpButAddModelZAKAZ.Visible:=True;
UnitKlient.FormKlient.SpButAddKlientZakaz.Visible:=False;
end;
//Просмотр каталога моделей
procedure TForm1.SpButModelClick(Sender: TObject);
begin
FormModel.Show;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
FormSkupkaMet.Show;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
FormKamni.Show;
end;
//Активация формы
procedure TForm1.FormActivate(Sender: TObject);
var
i: Integer;
begin
If start=0 then
Begin
start:=1;
dn:=DayOfWeek(Date);
For i:=0 to 6 do
begin
If dn=2 Then
begin
EditDateS.Text:=DateToStr(Date-i);
break;
end;
If dn=1 Then
begin
EditDateS.Text:=DateToStr(Date-6);
break;
end;
If dn>2 Then
dn:=dn-1;
end;
EditDatePo.Text:=DateToStr(Date);
IF DBEditModel.Text<>'' Then
begin
DM.DataModuleUvelir.ADOQueryKAMNIizdel.Close; DM.DataModuleUvelir.ADOQueryKAMNIizdel.Parameters.ParamByName('ART').Value:=DBEditModel.Text;
DM.DataModuleUvelir.ADOQueryKAMNIizdel.Open;
end;
DM.DataModuleUvelir.ADOQueryZAKAZI.Close; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZAKAZI.Open;
DM.DataModuleUvelir.ADOQueryZakazIzd.Close; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZakazIzd.Open;
End;
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryKam.Close;
DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('KAM').Value:=''; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('FORMA').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('CVET').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('RAZ').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Open;
FormDragKamni.Show;
end;
//Добавляем клиента к новому заказу
procedure TForm1.SpButNewZakazClick(Sender: TObject);
begin
DBNavigatorZakaz.BtnClick(nbInsert);
DBEditDateZ.Text:=DateToStr(Date);
FormKlient.Show;
UnitKlient.FormKlient.SpButAddKlientZakaz.Visible:=True;
UnitKlient.FormKlient.SpButAddModelZakaz.Visible:=False;
ShowMessage('Выберите клиента и нажмите кнопку "ЗАКАЗ-ДОБАВИТЬ"!');
end;
//Добавляем модель к новому заказу
procedure TForm1.SpButAddModelZAKAZClick(Sender: TObject);
begin
DBNavigatorZakazIzd.BtnClick(nbInsert);
DBEditZakzzIzd.Text:=DBEditZakaz.Text;
FormModel.Show;
UnitModel.FormModel.SpButAddModelZakaz.Visible:=True;
ShowMessage('Выберите модель и нажмите кнопку "ЗАКАЗ-ДОБАВИТЬ"!');
end;
//Отображение изделий текущего заказа
procedure TForm1.DBEditZakazChange(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Close; DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Parameters.ParamByName('KOD').Value:=DBEditZakaz.Text;
DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Open;
If DBEditZakaz.Text<>'' Then
begin
DM.DataModuleUvelir.ADOQuerySUMzakaz.Close; DM.DataModuleUvelir.ADOQuerySUMzakaz.Parameters.ParamByName('Z').Value:=DBEditZakaz.Text;
DM.DataModuleUvelir.ADOQuerySUMzakaz.Open;
end;
end;
//Отображение камней текущей модели
procedure TForm1.DBEditModelChange(Sender: TObject);
var
k: single;
begin
DM.DataModuleUvelir.ADOQueryZAKAZIzdModel.Close; DM.DataModuleUvelir.ADOQueryZAKAZIzdModel.Parameters.ParamByName('ART').Value:=DBEditModel.Text;
DM.DataModuleUvelir.ADOQueryZAKAZIzdModel.Open;
If DBEditModel.Text<>'' Then
begin
DM.DataModuleUvelir.ADOQueryUGAR.Close; DM.DataModuleUvelir.ADOQueryUGAR.Parameters.ParamByName('ART').Value:=DBEditModel.Text;
DM.DataModuleUvelir.ADOQueryUGAR.Open;
DM.DataModuleUvelir.ADOQueryMETALL.Close; DM.DataModuleUvelir.ADOQueryMETALL.Parameters.ParamByName('M').Value:=DBEditMet.Text; DM.DataModuleUvelir.ADOQueryMETALL.Parameters.ParamByName('P').Value:=DBEditProba.Text;
DM.DataModuleUvelir.ADOQueryMETALL.Open;
end;
DM.DataModuleUvelir.ADOQueryZakazKamni.Close;
DM.DataModuleUvelir.ADOQueryZakazKamni.Parameters.ParamByName('ART').Value:=DBEditModel.Text;
DM.DataModuleUvelir.ADOQueryZakazKamni.Open;
DBGridZakazKamni.Columns[9].Color:=clWindow;
DBGridZakazKamni.Columns[9].Visible:=False;
IF DBEditModel.Text<>'' Then
begin
DM.DataModuleUvelir.ADOQueryKAMNIizdel.Close; DM.DataModuleUvelir.ADOQueryKAMNIizdel.Parameters.ParamByName('ART').Value:=DBEditModel.Text;
DM.DataModuleUvelir.ADOQueryKAMNIizdel.Open;
end;
IF (DBTextCenaKam.Caption<>'') and (DBEditKol.Text<>'') Then LabelITOGOkam.Caption:=FloatToStr(StrToInt(DBEditKol.Text)*StrToFloat(DBTextCenaKam.Caption));
IF DBTextCenaKam.Caption='' Then
LabelITOGOkam.Caption:='0';
end;
//Отображение имени, адреса и телефонов текущего клиента
procedure TForm1.DBEditKodKlientaChange(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryTelKlient.Close;
DM.DataModuleUvelir.ADOQueryTelKlient.Parameters.ParamByName('TEL').Value:=DBEditKodKlienta.Text;
DM.DataModuleUvelir.ADOQueryTelKlient.Open;
DM.DataModuleUvelir.ADOQueryFIOKlient.Close; DM.DataModuleUvelir.ADOQueryFIOKlient.Parameters.ParamByName('KOD').Value:=DBEditKodKlienta.Text;
DM.DataModuleUvelir.ADOQueryFIOKlient.Open;
end;
//Резервирование металла
procedure TForm1.SpButRezMetClick(Sender: TObject);
var
kl: integer;
begin
If DBEditVip.Text<>'' Then
begin
ShowMessage('Заказ уже выполнен!!!!');
exit;
end;
If DBEditCena.Text='' Then
begin
ShowMessage('Введите цену за грамм работы!');
exit;
end;
If SpButAddModelZAKAZ.Visible=False Then
begin
SpButAddModelZAKAZ.Visible:=True;
//DBNavigatorZakazIzd.BtnClick(nbPost);
end;
try
kl:=StrToInt(DBEditKol.Text);
except
on EConvertError do
begin
ShowMessage('Введите колличество изделий!');
DBEditKol.SetFocus;
exit;
end;
end;
FormRezervMet.Show;
end;
//Резервирование камней
procedure TForm1.DBGridZakazKamniEditButtonClick(Sender: TObject);
var
kl,kn,rez:integer;
begin
DM.DataModuleUvelir.ADOQueryKam.Close; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('KAM').Value:=DBGridZakazKamni.DataSource.DataSet.FieldValues['Камень']; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('FORMA').Value:=DBGridZakazKamni.DataSource.DataSet.FieldValues['Форма']; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('CVET').Value:=DBGridZakazKamni.DataSource.DataSet.FieldValues['Цвет']; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('RAZ').Value:=DBGridZakazKamni.DataSource.DataSet.FieldValues['Размер'];
DM.DataModuleUvelir.ADOQueryKam.Open;
DBNavigator1.BtnClick(nbEdit);
FormDragKamni.Show; DBGridZakazKamni.DataSource.DataSet.FieldValues['РЕЗЕРВ']:=Unit2DragKamni.FormDragKamni.EditOSTREZ.Text;
FormDragKamni.Close;
try rez:=StrToInt(DBGridZakazKamni.DataSource.DataSet.FieldValues['РЕЗЕРВ']);
except
on EConvertError do
begin
ShowMessage('В поле остатков ничего не введено!');
exit;
end;
end;
try
kl:=StrToInt(DBEditKol.Text);
except
on EConvertError do
begin
ShowMessage('Введите колличество изделий!');
DBEditKol.SetFocus;
exit;
end;
end;
DBGridZakazKamni.Columns[9].Width:=95;
DBGridZakazKamni.Columns[9].Visible:=True;
DBGridZakazKamni.DataSource.DataSet.FieldValues['НЕОБХОДИМО']:= IntToStr(StrToInt(DBEditKol.Text)*StrToInt(DBGridZakazKamni.DataSource.DataSet.FieldValues['Количество'])); kn:=StrToInt(DBGridZakazKamni.DataSource.DataSet.FieldValues['НЕОБХОДИМО']);
If (rez-kn)<0 then
begin
DBGridZakazKamni.Columns[9].Color:=$00ADAFFA;
ShowMessage('Для создания заказа необходимо '+DBGridZakazKamni.DataSource.DataSet.FieldValues['НЕОБХОДИМО']+
' камня '+DBGridZakazKamni.DataSource.DataSet.FieldValues['Камень']+
' Так как на остатках '+DBGridZakazKamni.DataSource.DataSet.FieldValues['РЕЗЕРВ']+' камней, то продолжение создания заказа НЕВОЗМОЖНО!!!');
DBNavigatorZakazIzd.BtnClick(nbCancel);
SpButRezMet.Visible:=False;
SpButAddModelZAKAZ.Visible:=True;
Form1.SpButNewZakaz.Visible:=True;
DBGridZakazKamni.Columns[8].Visible:=True;
end;
end;
//Калькулятор ЛИГАТУРА
procedure TForm1.SpButLigaturaClick(Sender: TObject);
begin
FormLIGATURA.Show;
end;
//Калькулятор ПРИПОЙ
procedure TForm1.SpButPRIPOIClick(Sender: TObject);
begin
FormPRIPOI.Show;
end;
//Выполнить заказ
procedure TForm1.SpButVIPClick(Sender: TObject);
begin
IF DBGridZakaz.DataSource.DataSet.FieldValues['Анулировать']=True Then
begin
ShowMessage('Заказ анулирован!');
exit;
end;
IF DBEditVip.Text<>'' Then
begin
ShowMessage('Заказ уже выполнен!');
exit;
end;
DBNavigatorZakaz.BtnClick(nbEdit);
DBEditVip.Text:=DateToStr(Date);
DBGridZakaz.DataSource.DataSet.FieldValues['Выполнен']:=1;
DBNavigatorZakaz.BtnClick(nbPost);
end;
//Выдать заказ
procedure TForm1.SpButVIDClick(Sender: TObject);
begin
IF DBGridZakaz.DataSource.DataSet.FieldValues['Анулировать']=True Then
begin
ShowMessage('Заказ анулирован!');
exit;
end;
IF DBEditVip.Text='' Then
begin
ShowMessage('Заказ еще не выполнен!');
exit;
end;
If DBEditVid.Text<>'' Then
begin
ShowMessage('Заказ уже выдан!');
exit;
end;
DBNavigatorZakaz.BtnClick(nbEdit);
DBGridZakaz.DataSource.DataSet.FieldValues['Выдан']:=1;
DBEditVid.Text:=DateToStr(Date);
DBNavigatorZakaz.BtnClick(nbPost);
end;
procedure TForm1.SpButRaschetClick(Sender: TObject);
var k: single;
begin
if DBEditCena.Text='' Then
begin
ShowMessage('Для рассчета цены изделия введите цену за грамм работы!');
DBEditCena.SetFocus;
exit;
end;
IF DBEditModel.Text<>'' Then
BEGIN
DM.DataModuleUvelir.ADOQueryVesMetMASTER.Close; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('N').Value:=DBEditZakzzIzd.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('ART').Value:=DBEditModel.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('R').Value:=DBEditRazmer.Text;
DM.DataModuleUvelir.ADOQueryVesMetMASTER.Open;
If DBEditVesmaster.Text='' Then
EditVesMaster.Text:='0'
Else
begin
k:=StrToFloat(DBEditVesmaster.Text);
EditVesMaster.Text:=Format('%f',[k]);
end;
DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('N').Value:=DBEditZakzzIzd.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('ART').Value:=DBEditModel.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('R').Value:=DBEditRazmer.Text;
DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Open;
If DBEditVesKlient.Text='' Then
EditVesKlientUgar.Text:='0'
Else
begin
k:=StrToFloat(DBEditVesKlient.Text)-StrToFloat(DBEditVesKlient.Text)*StrToInt(DBEditUGAR.Text)/100;
EditVesKlientUgar.Text:=Format('%f',[k]);
end; k:=(StrToFloat(EditVesKlientUgar.Text)+StrToFloat(EditVesMaster.Text))*StrToFloat(DBEditCena.Text);
EditCenaRab.Text:=Format('%f',[k]);
k:=StrToFloat(EditVesMaster.Text)*StrToFloat(DBEditCenaMET.Text);
EditCeneDobMET.Text:= Format('%f',[k]);
DBNavigatorZakazIzd.BtnClick(nbEdit); k:=StrToFloat(EditCenaRab.Text)+StrToFloat(EditCeneDobMET.Text)+StrToFloat(LabelITOGOkam.Caption);
DBTextCenaIZD.Caption:=Format('%f',[k]);
DBEditCenaIZD.Text:=DBTextCenaIZD.Caption;
DBNavigatorZakazIzd.BtnClick(nbPost);
END;
end;
//Каталог металлов
procedure TForm1.SpButMETALLClick(Sender: TObject);
begin
FormMetall.Show;
end;
//Напечатать чек
procedure TForm1.SpButCHEKClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Close;
DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Parameters.ParamByName('KOD').Value:=DBEditZakaz.Text;
DM.DataModuleUvelir.ADOQueryZakazIzdAdd.Open;
DM.DataModuleUvelir.ADOQueryFIOKlient.Close;
DM.DataModuleUvelir.ADOQueryFIOKlient.Parameters.ParamByName('KOD').Value:=DBEditKodKlienta.Text;
DM.DataModuleUvelir.ADOQueryFIOKlient.Open;
DM.DataModuleUvelir.ADOQuerySUMzakaz.Close;
DM.DataModuleUvelir.ADOQuerySUMzakaz.Parameters.ParamByName('Z').Value:=DBEditZakaz.Text;
DM.DataModuleUvelir.ADOQuerySUMzakaz.Open;
UnitCHEK.FormCHEK.QuickRepCHEK.Preview;
end;
//Анулировать заказ
procedure TForm1.SpButAnulClick(Sender: TObject);
begin
if DBEditVid.Text<>'' Then
begin
ShowMessage('Заказ уже выдан!');
exit;
end;
DBNavigatorZakaz.BtnClick(nbEdit);
DBGridZakaz.DataSource.DataSet.FieldValues['Анулировать']:=1;
DBNavigatorZakaz.BtnClick(nbPost);
end;
//Вставить период С
procedure TForm1.BitBtnSClick(Sender: TObject);
begin
EditDateS.Text:=DateToStr(MonCal.Date);
DM.DataModuleUvelir.ADOQueryZAKAZI.Close; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZAKAZI.Open;
DM.DataModuleUvelir.ADOQueryZakazIzd.Close; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZakazIzd.Open;
end;
//Вставить период ПО
procedure TForm1.BitBtnPoClick(Sender: TObject);
begin
EditDatePo.Text:=DateToStr(MonCal.Date);
DM.DataModuleUvelir.ADOQueryZAKAZI.Close; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZAKAZI.Open;
DM.DataModuleUvelir.ADOQueryZakazIzd.Close; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZakazIzd.Open;
end;
//При выходе из программы обнуляем счетчик
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
start:=0;
end;
//Фильтр по заказам
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
If RadioGroup1.ItemIndex=0 Then
begin
DM.DataModuleUvelir.ADOQueryZAKAZI.Close; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZAKAZI.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZAKAZI.Open;
DM.DataModuleUvelir.ADOQueryZakazIzd.Close; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZakazIzd.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZakazIzd.Open;
DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZAKAZI; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZakazIzd;
end;
If RadioGroup1.ItemIndex=1 Then
begin
DM.DataModuleUvelir.ADOQueryZO.Close; DM.DataModuleUvelir.ADOQueryZO.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZO.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZO.Open; DM.DataModuleUvelir.ADOQueryZIO.Close; DM.DataModuleUvelir.ADOQueryZIO.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIO.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZIO.Open;
DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZO;
DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIO;
end;
If RadioGroup1.ItemIndex=2 Then
begin
DM.DataModuleUvelir.ADOQueryZVIP.Close; DM.DataModuleUvelir.ADOQueryZVIP.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIP.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZVIP.Open;
DM.DataModuleUvelir.ADOQueryZIVIP.Close; DM.DataModuleUvelir.ADOQueryZIVIP.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIVIP.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZIVIP.Open;
DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZVIP; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIVIP;
end;
If RadioGroup1.ItemIndex=3 Then
begin
DM.DataModuleUvelir.ADOQueryZVIPNVID.Close; DM.DataModuleUvelir.ADOQueryZVIPNVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIPNVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZVIPNVID.Open;
DM.DataModuleUvelir.ADOQueryZIVIPNVID.Close; DM.DataModuleUvelir.ADOQueryZIVIPNVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIVIPNVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZIVIPNVID.Open;
DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZVIPNVID; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIVIPNVID;
end;
If RadioGroup1.ItemIndex=4 Then
begin
DM.DataModuleUvelir.ADOQueryZVIPVID.Close; DM.DataModuleUvelir.ADOQueryZVIPVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIPVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZVIPVID.Open;
DM.DataModuleUvelir.ADOQueryZIVIPVID.Close; DM.DataModuleUvelir.ADOQueryZIVIPVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIVIPVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZIVIPVID.Open;
DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZVIPVID; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIVIPVID;
end;
If RadioGroup1.ItemIndex=5 Then
begin
DM.DataModuleUvelir.ADOQueryZA.Close; DM.DataModuleUvelir.ADOQueryZA.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZA.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZA.Open;
DM.DataModuleUvelir.ADOQueryZIA.Close; DM.DataModuleUvelir.ADOQueryZIA.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIA.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZIA.Open;
DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZA;
DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZIA;
end;
end;
//Отчет о прибыли
procedure TForm1.SpButOtchetClick(Sender: TObject);
var
FileName, FileNameSave, a, b: OleVariant;
T, TT: integer;
S: string;
SUM, SUM1: single;
begin
T:=1;
SUM1:=0;
DM.DataModuleUvelir.ADOQueryZVIP.Close; DM.DataModuleUvelir.ADOQueryZVIP.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIP.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZVIP.Open;
DM.DataModuleUvelir.ADOQueryZVIPVID.Close; DM.DataModuleUvelir.ADOQueryZVIPVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIPVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZVIPVID.Open;
DM.DataModuleUvelir.ADOQueryZVIPNVID.Close; DM.DataModuleUvelir.ADOQueryZVIPNVID.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZVIPNVID.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZVIPNVID.Open;
FileName:='C:\Ювелирная мастерская\ОТЧЕТЫ\ОТЧЕТ О ПРИБЫЛИ.doc';
FileNameSave:='C:\Ювелирная мастерская\ОТЧЕТЫ\ОТЧЕТ О ПРИБЫЛИ_от '+
DateToStr(Date)+'.doc';
DM.DataModuleUvelir.WordApplication1.Connect;
If DM.DataModuleUvelir.ADOQueryZVIP.FieldValues['НомерЗаказа']=Null Then
begin
ShowMessage('За данный период не было выполненно ни одного заказа');
exit;
end
Else
begin
Try
DM.DataModuleUvelir.WordApplication1.Documents.Open(FileName,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); DM.DataModuleUvelir.WordDocument1.ConnectTo(DM.DataModuleUvelir.WordApplication1.ActiveDocument);
DM.DataModuleUvelir.WordDocument1.SaveAs(FileNameSave);
a:=41; DM.DataModuleUvelir.WordDocument1.Range(a).InsertBefore(EditDateS.Text);
a:=65;
DM.DataModuleUvelir.WordDocument1.Range(a).InsertBefore(' '+EditDatePo.Text);
//Вывод всех выполненных заказов
With DM.DataModuleUvelir.ADOQueryZVIP do
begin
First;
while not EOF do
begin
S:=IntToStr(T); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,1).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZVIP.FieldValues['НомерЗаказа']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,2).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZVIP.FieldValues['ФИОклиента']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,3).Range.InsertBefore(S);
DM.DataModuleUvelir.ADOQuerySUMZOT.Close; DM.DataModuleUvelir.ADOQuerySUMZOT.Parameters.ParamByName('Z').Value:=DM.DataModuleUvelir.ADOQueryZVIP.FieldValues['НомерЗаказа'];
DM.DataModuleUvelir.ADOQuerySUMZOT.Open;
S:=DBEdit1.Text;
if DBEdit1.Text<>'' Then
begin
SUM:=StrToFloat(DBEdit1.Text);
SUM1:=SUM1+SUM;
end; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,4).Range.InsertBefore(S);
DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Rows.Add(EmptyParam);
inc(T);
Next;
end;
end;
DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,3).Select;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,3).Range.InsertBefore('ИТОГО НА СУММУ :');
DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,4).Select;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14;
S:=FloatToStr(SUM1); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+1,4).Range.InsertBefore(S);
T:=1;
SUM1:=0;
//Вывод всех выданных заказов
With DM.DataModuleUvelir.ADOQueryZVIPVID do
begin
First;
while not EOF do
begin
S:=IntToStr(T); DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,1).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZVIPVID.FieldValues['НомерЗаказа']; DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,2).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZVIPVID.FieldValues['ФИОклиента']; DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,3).Range.InsertBefore(S);
DM.DataModuleUvelir.ADOQuerySUMZOT.Close; DM.DataModuleUvelir.ADOQuerySUMZOT.Parameters.ParamByName('Z').Value:=DM.DataModuleUvelir.ADOQueryZVIPVID.FieldValues['НомерЗаказа'];
DM.DataModuleUvelir.ADOQuerySUMZOT.Open;
S:=DBEdit1.Text;
if DBEdit1.Text<>'' Then
begin
SUM:=StrToFloat(DBEdit1.Text);
SUM1:=SUM1+SUM;
end; DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,4).Range.InsertBefore(S);
DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Rows.Add(EmptyParam);
inc(T);
Next;
end;
end;
DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,3).Select;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14; DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,3).Range.InsertBefore('ИТОГО НА СУММУ :');
DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,4).Select;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14;
S:=FloatToStr(SUM1); DM.DataModuleUvelir.WordDocument1.Tables.Item(2).Cell(T+1,4).Range.InsertBefore(S);
T:=1;
SUM1:=0;
//Вывод всех невыданных заказов
With DM.DataModuleUvelir.ADOQueryZVIPNVID do
begin
First;
while not EOF do
begin
S:=IntToStr(T); DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,1).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZVIPNVID.FieldValues['НомерЗаказа']; DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,2).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZVIPNVID.FieldValues['ФИОклиента']; DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,3).Range.InsertBefore(S);
DM.DataModuleUvelir.ADOQuerySUMZOT.Close; DM.DataModuleUvelir.ADOQuerySUMZOT.Parameters.ParamByName('Z').Value:=DM.DataModuleUvelir.ADOQueryZVIPNVID.FieldValues['НомерЗаказа'];
DM.DataModuleUvelir.ADOQuerySUMZOT.Open;
S:=DBEdit1.Text;
if DBEdit1.Text<>'' Then
begin
SUM:=StrToFloat(DBEdit1.Text);
SUM1:=SUM1+SUM;
end; DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,4).Range.InsertBefore(S);
DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Rows.Add(EmptyParam);
inc(T);
Next;
end;
end;
DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,3).Select;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14; DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,3).Range.InsertBefore('ИТОГО НА СУММУ :');
DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,4).Select;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Color:=clRed;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Italic:=1;
DM.DataModuleUvelir.WordApplication1.Selection.Font.Size:=14;
S:=FloatToStr(SUM1); DM.DataModuleUvelir.WordDocument1.Tables.Item(3).Cell(T+1,4).Range.InsertBefore(S);
T:=1;
SUM1:=0;
Except
begin
ShowMessage('Документа с именем "ОТЧЕТ О ПРИБЫЛИ"'+
' на диске С в папке Ювелирная мастерская\ОТЧЕТЫ не существует! '+
' Либо у него другое расширение! Либо он удален! Создайте новый документ Word на диске С '+
' в папке Ювелирная мастерская\ОТЧЕТЫ с именем '+
'"ОТЧЕТ О ПРИБЫЛИ" и расширением .doc');
exit;
end; DM.DataModuleUvelir.WordDocument1.ConnectTo(DM.DataModuleUvelir.WordApplication1.ActiveDocument);
end;
End;
end;
//Печать наряд-заказа
procedure TForm1.SpButNARYDClick(Sender: TObject);
var
FileName, FileNameSave, a, b: OleVariant;
T, TT, N, i: integer;
S: string;
begin
T:=1;
N:=1;
DM.DataModuleUvelir.ADOQueryZIO.Close; DM.DataModuleUvelir.ADOQueryZIO.Parameters.ParamByName('D1').Value:=EditDateS.Text; DM.DataModuleUvelir.ADOQueryZIO.Parameters.ParamByName('D2').Value:=EditDatePo.Text;
DM.DataModuleUvelir.ADOQueryZIO.Open;
FileName:='C:\Ювелирная мастерская\НАРЯД-ЗАКАЗ\НАРЯД.doc';
FileNameSave:='C:\Ювелирная мастерская\НАРЯД-ЗАКАЗ\НАРЯД_от '+
DateToStr(Date)+'.doc';
DM.DataModuleUvelir.WordApplication1.Connect;
If DM.DataModuleUvelir.ADOQueryZIO.FieldValues['НомерЗаказа']=Null Then
begin
ShowMessage('За данный период не было оформлено ни одного заказа');
exit;
end
Else
begin
Try
DM.DataModuleUvelir.WordApplication1.Documents.Open(FileName,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam); DM.DataModuleUvelir.WordDocument1.ConnectTo(DM.DataModuleUvelir.WordApplication1.ActiveDocument);
DM.DataModuleUvelir.WordDocument1.SaveAs(FileNameSave);
a:=30; DM.DataModuleUvelir.WordDocument1.Range(a).InsertBefore(EditDateS.Text+' ');
a:=44;
DM.DataModuleUvelir.WordDocument1.Range(a).InsertBefore(' '+EditDatePo.Text);
//Вывод всех заказанных изделий
With DM.DataModuleUvelir.ADOQueryZIO do
begin
First;
while not EOF do
begin
S:=IntToStr(N); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,1).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['НомерЗаказа']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,2).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['АртикулМодели']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,3).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['Количество']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,4).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['РазмерДлина']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,5).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['ВесИзделия']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,6).Range.InsertBefore(S);
//Камни изделия
DM.DataModuleUvelir.ADOQueryKAMREPORT.Close; DM.DataModuleUvelir.ADOQueryKAMREPORT.Parameters.ParamByName('ART').Value:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['АртикулМодели'];
DM.DataModuleUvelir.ADOQueryKAMREPORT.Open;
TT:=0;
With DM.DataModuleUvelir.ADOQueryKAMREPORT do
begin
First;
while not EOF do
begin
S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Камень']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,7).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Форма']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,8).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Цвет']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,9).Range.InsertBefore(S);
S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Размер']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,10).Range.InsertBefore(S); S:=DM.DataModuleUvelir.ADOQueryKAMREPORT.FieldValues['Количество']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+T,11).Range.InsertBefore(S); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Rows.Add(EmptyParam);
inc(TT);
Next;
end;
end;
If DM.DataModuleUvelir.ADOQueryZIO.FieldValues['Пометки']<>Null Then
begin
S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['Пометки']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,12).Range.InsertBefore(' '+S);
end;
If DM.DataModuleUvelir.ADOQueryZIO.FieldValues['ВесНаВыходе']<>Null Then
begin
S:=DM.DataModuleUvelir.ADOQueryZIO.FieldValues['ВесНаВыходе']; DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,13).Range.InsertBefore(' '+S);
end;
//Объединием ячейки
IF TT>1 Then
begin DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,1).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,1)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,2).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,2)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,3).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,3)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,4).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,4)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,5).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,5)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,6).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,6)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,12).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,12)); DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2,13).Merge(DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Cell(T+2+TT-1,13));
end;
T:=T+TT;
IF TT=0 Then
begin DM.DataModuleUvelir.WordDocument1.Tables.Item(1).Rows.Add(EmptyParam);
inc(T);
end;
inc(N);
Next;
end;
end;
Except
begin
ShowMessage('Документа с именем "НАРЯД"'+
' на диске С в папке Ювелирная мастерская\НАРЯД-ЗАКАЗ не существует! '+
' Либо у него другое расширение! Либо он удален! Создайте новый документ Word на диске С '+
' в папке Ювелирная мастерская\НАРЯД-ЗАКАЗ с именем '+
'"НАРЯД" и расширением .doc');
exit;
end; DM.DataModuleUvelir.WordDocument1.ConnectTo(DM.DataModuleUvelir.WordApplication1.ActiveDocument);
end;
End;
end;
//Поиск по номеру заказа
procedure TForm1.Edit1Change(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryZNomer.Close; DM.DataModuleUvelir.ADOQueryZNomer.Parameters.ParamByName('N').Value:=Edit1.Text;
DM.DataModuleUvelir.ADOQueryZNomer.Open;
DM.DataModuleUvelir.ADOQueryZizdNomer.Close; DM.DataModuleUvelir.ADOQueryZizdNomer.Parameters.ParamByName('N').Value:=Edit1.Text;
DM.DataModuleUvelir.ADOQueryZizdNomer.Open;
DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZNomer; DBGridIzdelieZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZizdNomer;
end;
end.
Модуль формы ДРАГОЦЕННЫЕ КАМНИ (Unit2DragKamni)
unit Unit2DragKamni;
implementation
uses Uvelir, DM, UnitKamni;
{$R *.dfm}
//Активация формы
procedure TFormDragKamni.FormActivate(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamPrihod.Open;
DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;
DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamRashod.Open;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Close;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;
If DBEditPrihod.Text='' Then
EditPrihod2.Text:='0'
Else
EditPrihod2.Text:=DBEditPrihod.Text;
If DBEditRashod.Text='' Then
EditRashod2.Text:='0'
Else
EditRashod2.Text:=DBEditRashod.Text;
If DBEditRezerv.Text='' Then
EditRezerv2.Text:='0'
Else
EditRezerv2.Text:=DBEditRezerv.Text;
EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));
EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));
SpButSavePoz.Visible:=False;
SpButDeletPozKam.Visible:=True;
SpButAddPoz.Visible:=True;
DBNavigatorOstKam.Enabled:=True;
DBEditKam.ReadOnly:=True;
DBEditKamForm.ReadOnly:=True;
DBEditKamCvet.ReadOnly:=True;
DBEditKamRazmer.ReadOnly:=True;
DBEditCena.ReadOnly:=False;
end;
//Передвижение по записям
procedure TFormDragKamni.DBNavigatorOstKamClick(Sender: TObject;
Button: TNavigateBtn);
begin
DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamPrihod.Open;
DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text;
DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text;
DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamRashod.Open;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Close; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;
If DBEditPrihod.Text='' Then
EditPrihod2.Text:='0'
Else
EditPrihod2.Text:=DBEditPrihod.Text;
If DBEditRashod.Text='' Then
EditRashod2.Text:='0'
Else
EditRashod2.Text:=DBEditRashod.Text;
If DBEditRezerv.Text='' Then
EditRezerv2.Text:='0'
Else
EditRezerv2.Text:=DBEditRezerv.Text;
EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));
EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));
end;
//Обработка щелчка по строке таблицы
procedure TFormDragKamni.DBGridOstatokKamCellClick(Column: TColumn);
begin
DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamPrihod.Open;
DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text;
DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamRashod.Open;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Close; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;
If DBEditPrihod.Text='' Then
EditPrihod2.Text:='0'
Else
EditPrihod2.Text:=DBEditPrihod.Text;
If DBEditRashod.Text='' Then
EditRashod2.Text:='0'
Else
EditRashod2.Text:=DBEditRashod.Text;
If DBEditRezerv.Text='' Then
EditRezerv2.Text:='0'
Else
EditRezerv2.Text:=DBEditRezerv.Text;
EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));
EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));
end;
//Фильтр по каталогу камней
procedure TFormDragKamni.DBLookupComBoxKamFClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryKam.Close; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('KAM').Value:=DBLookupComBoxKamF.Text; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('FORMA').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('CVET').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('RAZ').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Open;
DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text;
DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamPrihod.Open;
DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamRashod.Open;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Close; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text);
DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;
If DBEditPrihod.Text='' Then
EditPrihod2.Text:='0'
Else
EditPrihod2.Text:=DBEditPrihod.Text;
If DBEditRashod.Text='' Then
EditRashod2.Text:='0'
Else
EditRashod2.Text:=DBEditRashod.Text;
If DBEditRezerv.Text='' Then
EditRezerv2.Text:='0'
Else
EditRezerv2.Text:=DBEditRezerv.Text;
EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));
EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));
SpButSbros.Visible:=True;
end;
//Отображение фактических остатков
procedure TFormDragKamni.EditOstatokChange(Sender: TObject);
begin
If StrToInt(EditOstatok.Text)=0 Then
begin
ShowMessage('Фактических остатков данного вида камней, не достаточно для резервирования заказов!.Нужны поставки данных драгоценных камней');
EditOstatok.Color:=clSkyBlue;
end;
If StrToInt(EditOstatok.Text)<0 Then
begin
ShowMessage('Фактических остатков не хватает!');
EditOstatok.Color:=clRed;
end;
If StrToInt(EditOstatok.Text)>0 Then
EditOstatok.Color:=clMoneyGreen;
end;
//Добавляем новый камень
procedure TFormDragKamni.SpButAddPozClick(Sender: TObject);
begin
SpButSavePoz.Visible:=True;
SpButDeletPozKam.Visible:=False;
SpButAddPoz.Visible:=False;
DBEditKam.ReadOnly:=False;
DBEditKamForm.ReadOnly:=False;
DBEditKamCvet.ReadOnly:=False;
DBEditKamRazmer.ReadOnly:=False;
DBEditCena.ReadOnly:=False;
DBGridOstatokKam.ReadOnly:=False;
ShowMessage('Введите данные о новом камне и сохраните!');
DBNavigatorOstKam.BtnClick(nbLast);
DBNavigatorOstKam.BtnClick(nbInsert);
DBEditKam.SetFocus;
end;
//Сохраняем новый камень
procedure TFormDragKamni.SpButSavePozClick(Sender: TObject);
begin
If DBEditKam.Text='' Then
begin
ShowMessage('Введите название камня!');
DBEditKam.SetFocus;
exit;
end;
If DBEditKamCvet.Text='' Then
begin
ShowMessage('Введите цвет камня!');
DBEditKamCvet.SetFocus;
exit;
end;
If DBEditKamForm.Text='' Then
begin
ShowMessage('Введите форму камня!');
DBEditKamForm.SetFocus;
exit;
end;
If DBEditKamRazmer.Text='' Then
begin
ShowMessage('Введите размеп камня!');
DBEditKamRazmer.SetFocus;
exit;
end;
If DBEditCena.Text='' Then
begin
ShowMessage('Введите цену камня!');
DBEditCena.SetFocus;
exit;
end;
try
PROVERKA:=StrToFloat(DBEditCena.Text); //Считываем введенную цену камня
except
on EConvertError do
begin
ShowMessage('В поле для цены одного камня введено не числовое значение!');
DBEditCena.Text := '';
exit;
end;
end;
try
PROVERKA:=StrToFloat(DBEditKamRazmer.Text); //Считываем введенный размер камня
except
on EConvertError do
begin
ShowMessage('В поле размер камня введено не числовое значение!');
DBEditKamRazmer.Text := '';
exit;
end;
end;
DBNavigatorOstKam.BtnClick(nbPost);
SpButSavePoz.Visible:=False;
SpButDeletPozKam.Visible:=True;
SpButAddPoz.Visible:=True;
DBNavigatorOstKam.Enabled:=True;
DBEditKam.ReadOnly:=True;
DBEditKamForm.ReadOnly:=True;
DBEditKamCvet.ReadOnly:=True;
DBEditKamRazmer.ReadOnly:=True;
DBGridOstatokKam.ReadOnly:=True;;
DBEditCena.ReadOnly:=True;
end;
//Изменение цены камней
procedure TFormDragKamni.SpButDeletPozKamClick(Sender: TObject);
begin
DBNavigatorOstKam.BtnClick(nbEdit);
SpButSavePoz.Visible:=True;
SpButDeletPozKam.Visible:=False;
SpButAddPoz.Visible:=False;
DBNavigatorOstKam.Enabled:=False;
DBEditKam.ReadOnly:=False;
DBEditKamForm.ReadOnly:=False;
DBEditKamCvet.ReadOnly:=False;
DBEditKamRazmer.ReadOnly:=False;
DBEditCena.ReadOnly:=True;
ShowMessage('Измените цену камня и сохраните изменения!');
DBEditCena.SetFocus;
end;
//Сброс параметров поиска
procedure TFormDragKamni.SpButSbrosClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryKam.Close;
DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('KAM').Value:=''; DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('FORMA').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('CVET').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Parameters.ParamByName('RAZ').Value:='';
DM.DataModuleUvelir.ADOQueryKam.Open;
DM.DataModuleUvelir.ADOQueryKamPrihod.Close; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text;
DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;
If DBEditKamRazmer.Text<>'' Then DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text)
Else DM.DataModuleUvelir.ADOQueryKamPrihod.Parameters.ParamByName('RAZ').Value:=0;
DM.DataModuleUvelir.ADOQueryKamPrihod.Open;
DM.DataModuleUvelir.ADOQueryKamRashod.Close; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;
If DBEditKamRazmer.Text<>'' Then DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text)
Else DM.DataModuleUvelir.ADOQueryKamRashod.Parameters.ParamByName('RAZ').Value:=0;
DM.DataModuleUvelir.ADOQueryKamRashod.Open;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Close; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('KAM').Value:=DBEditKam.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('FORMA').Value:=DBEditKamForm.Text; DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('CVET').Value:=DBEditKamCvet.Text;
If DBEditKamRazmer.Text<>'' Then DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=StrToFloat(DBEditKamRazmer.Text)
Else DM.DataModuleUvelir.ADOQueryKamniRezerv.Parameters.ParamByName('RAZ').Value:=0;
DM.DataModuleUvelir.ADOQueryKamniRezerv.Open;
If DBEditPrihod.Text='' Then
EditPrihod2.Text:='0'
Else
EditPrihod2.Text:=DBEditPrihod.Text;
If DBEditRashod.Text='' Then
EditRashod2.Text:='0'
Else
EditRashod2.Text:=DBEditRashod.Text;
If DBEditRezerv.Text='' Then
EditRezerv2.Text:='0'
Else
EditRezerv2.Text:=DBEditRezerv.Text;
EditOstatok.Text:=IntToStr(StrToInt(EditPrihod2.Text)-StrToInt(EditRashod2.Text));
EditOSTREZ.Text:=IntToStr(StrToInt(EditOstatok.Text)-StrToInt(EditRezerv2.Text));
SpButSbros.Visible:=False;
end;
//Отображение остатков с учетом зарезервированных камней
procedure TFormDragKamni.EditOSTREZChange(Sender: TObject);
begin
If StrToInt(EditOSTREZ.Text)=0 Then
begin
ShowMessage('Остатков с учетом зарезервированных камней не достаточно для продолжения работы!.Нужны поставки данных драгоценных камней!');
EditOSTREZ.Color:=clSkyBlue;
end;
If StrToInt(EditOSTREZ.Text)<0 Then
begin
ShowMessage('На данный момент зарезервированно больше камней чем, есть в наличии! Срочно нужны поставки камней!');
EditOSTREZ.Color:=clRed;
end;
If StrToInt(EditOSTREZ.Text)>0 Then
EditOSTREZ.Color:=clMoneyGreen;
end;
end.
Модуль формы МЕТАЛЛЫ (UnitMetall)
unit UnitMetall;
implementation
uses Uvelir, UnitModel, DM, UnitOSTATKI;
{$R *.dfm}
//Активация формы
procedure TFormMetall.FormActivate(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryOSTMET.Close;
DM.DataModuleUvelir.ADOQueryOSTMET.Open;
end;
//Отчет по остаткам
procedure TFormMetall.SpButReportClick(Sender: TObject);
begin
UnitOSTATKI.FormOSTMET.QuickRepOSTMET.Preview;
end;
end.
Модуль формы ПОСТАВКА КАМНЕЙ (UnitKamni)
unit UnitKamni;
implementation
uses Uvelir, DM, UnitPOSTAVSHIK, Unit2DragKamni;
{$R *.dfm}
//Отображение поставщиков и поставок при изменении Фильтра по поставщикам
procedure TFormKamni.DBLookupComBoxPostKamClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryPostKam.Close; DM.DataModuleUvelir.ADOQueryPostKam.Parameters.ParamByName('POST').Value:=DBLookupComBoxPostKam.Text;
DM.DataModuleUvelir.ADOQueryPostKam.Open;
DM.DataModuleUvelir.ADOQueryPostavkaKam.Close; DM.DataModuleUvelir.ADOQueryPostavkaKam.Parameters.ParamByName('POST').Value:=DBLookupComBoxPostKam.Text;
DM.DataModuleUvelir.ADOQueryPostavkaKam.Open;
end;
//Добавление новой поставки
procedure TFormKamni.SpButAddPostClick(Sender: TObject);
begin
DBNavigatorPost.BtnClick(nbInsert); DBGridPostKam.DataSource.DataSet.FieldValues['ДатаПоставки']:=DateToStr(Date); DBGridPostKam.DataSource.DataSet.FieldValues['Поставщик']:=DBEditPost.Text;
DBNavigatorPost.BtnClick(nbPost);
ShowMessage('Добавьте позиции к поставке! (Кнопка "ПОЗИЦИЯ")');
end;
//Отображение данных о текущей поставке
procedure TFormKamni.DBEditKodPostChange(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryPostKamPoz.Close; DM.DataModuleUvelir.ADOQueryPostKamPoz.Parameters.ParamByName('KOD').Value:=DBEditKodPost.Text;
DM.DataModuleUvelir.ADOQueryPostKamPoz.Open;
end;
//Отображение данных о камнях при изменении фильтра камней
procedure TFormKamni.DBLookupComBoxKamFClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryKatalogKam.Close; DM.DataModuleUvelir.ADOQueryKatalogKam.Parameters.ParamByName('KAM').Value:=DBLookupComBoxKamF.Text;
DM.DataModuleUvelir.ADOQueryKatalogKam.Open;
end;
//Добавление новой позиции к поставке камней
procedure TFormKamni.SpButAddPozClick(Sender: TObject);
begin
DBNavigatorPostKamPoz.BtnClick(nbInsert);
DBEditKodPostPoz.Text:=DBEditKodPost.Text;
DBEdiKamPoz.Text:=DBEditKamMod.Text;
DBEditKamFormPoz.Text:=DBEditFormaKamMod.Text;
DBEditKamCvetPoz.Text:=DBEditCvetKamMod.Text;
DBEditKamRazmPoz.Text:=DBEditRazKamMod.Text;
ShowMessage('Введите колличество камней и цену одного камня, а затем сохраните добавленную позицию! (Кнопка "СОХРАНИТЬ.позиция")');
DBEditKamKolPoz.ReadOnly:=False;
DBEditKamCenaPoz.ReadOnly:=False;
DBEditKamKolPoz.SetFocus;
SpButSavePoz.Visible:=True;
SpButDeletPozKam.Visible:=False;
DBNavigatorPost.Enabled:=False;
end;
//Сохранение добавленной позиции к поставке камней
procedure TFormKamni.SpButSavePozClick(Sender: TObject);
begin
If DBEditKamKolPoz.Text='' Then
begin
ShowMessage('Введите колличество камней!');
DBEditKamKolPoz.SetFocus;
exit;
end;
If DBEditKamCenaPoz.Text='' Then
begin
ShowMessage('Введите цену одного камня!');
DBEditKamCenaPoz.SetFocus;
exit;
end;
try
k:=StrToInt(DBEditKamKolPoz.Text); //Считываем введенное колличество камней
except
on EConvertError do
begin
ShowMessage('В поле для колличества камней введено неверное значение! Колличество камней должно быть целым положительным числом!');
DBEditKamKolPoz.Text := '';
exit;
end;
end;
try
c:=StrToFloat(DBEditKamCenaPoz.Text); //Считываем введенную цену камня
except
on EConvertError do
begin
ShowMessage('В поле для цены одного камня введено не числовое значение!');
DBEditKamCenaPoz.Text := '';
exit;
end;
end;
DBNavigatorPostKamPoz.BtnClick(nbPost);
DBEditKamKolPoz.ReadOnly:=True;
DBEditKamCenaPoz.ReadOnly:=True;
SpButSavePoz.Visible:=False;
DM.DataModuleUvelir.ADOQueryPostKamPoz.Close;
DM.DataModuleUvelir.ADOQueryPostKamPoz.Parameters.ParamByName('KOD').Value:=DBEditKodPost.Text;
DM.DataModuleUvelir.ADOQueryPostKamPoz.Open;
DM.DataModuleUvelir.ADOQueryPostavkaKam.Close; DM.DataModuleUvelir.ADOQueryPostavkaKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;
DM.DataModuleUvelir.ADOQueryPostavkaKam.Open;
SpButDeletPozKam.Visible:=True;
DBNavigatorPost.Enabled:=True;
end;
//Удалить позицию из поставки камней
procedure TFormKamni.SpButDeletPozKamClick(Sender: TObject);
begin
DBNavigatorPostKamPoz.BtnClick(nbDelete);
DM.DataModuleUvelir.ADOQueryPostavkaKam.Close; DM.DataModuleUvelir.ADOQueryPostavkaKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;
DM.DataModuleUvelir.ADOQueryPostavkaKam.Open;
end;
//Переход к форме поставщики камней
procedure TFormKamni.SpButPostClick(Sender: TObject);
begin
FormPOSTAVSHIK.Show;
end;
//Обновление данных о поставках текущего поставщика
procedure TFormKamni.DBEditPostChange(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryPostavkaKam.Close; DM.DataModuleUvelir.ADOQueryPostavkaKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;
DM.DataModuleUvelir.ADOQueryPostavkaKam.Open;
end;
//Активация формы
procedure TFormKamni.FormActivate(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryPostKam.Close; DM.DataModuleUvelir.ADOQueryPostKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;
DM.DataModuleUvelir.ADOQueryPostKam.Open;
DM.DataModuleUvelir.ADOQueryPostKamPoz.Close; DM.DataModuleUvelir.ADOQueryPostKamPoz.Parameters.ParamByName('KOD').Value:=DBEditKodPost.Text;
DM.DataModuleUvelir.ADOQueryPostKamPoz.Open;
end;
//Переход к форме остптки драгоценных камней
procedure TFormKamni.SpButDragKamniClick(Sender: TObject);
begin
FormDragKamni.Show;
end;
end.
Модуль формы ПОСТАВЩИКИ (UnitPOSTAVSHIK)
unit UnitPOSTAVSHIK;
implementation
uses DM, UnitKamni;
{$R *.dfm}
//Поиск поставщиков
procedure TFormPOSTAVSHIK.SpButPoiskPostClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryPOSTAVSHIK.Close; DM.DataModuleUvelir.ADOQueryPOSTAVSHIK.Parameters.ParamByName('POST').Value:=EditPoiskPost.Text;
DM.DataModuleUvelir.ADOQueryPOSTAVSHIK.Open;
DBEditPost.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryPOSTAVSHIK;
SpButSbros.Visible:=True;
end;
//Сброс параметров поиска
procedure TFormPOSTAVSHIK.SpButSbrosClick(Sender: TObject);
begin
DBEditPost.DataSource.DataSet:=DM.DataModuleUvelir.ADOTablePOSTAVSHIK;
SpButSbros.Visible:=False;
EditPoiskPost.Text:='';
end;
//Закрытие формы
procedure TFormPOSTAVSHIK.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DM.DataModuleUvelir.ADOQueryPostKamList.Close;
DM.DataModuleUvelir.ADOQueryPostKamList.Open;
FormKamni.DBLookupComBoxPostKam.ListSource.DataSet.Close;
FormKamni.DBLookupComBoxPostKam.ListSource.DataSet.Open;
DM.DataModuleUvelir.ADOQueryPostKam.Close; DM.DataModuleUvelir.ADOQueryPostKam.Parameters.ParamByName('POST').Value:=DBEditPost.Text;
DM.DataModuleUvelir.ADOQueryPostKam.Open;
end;
end.
Модуль формы СКУПКА МЕТАЛЛОВ (UnitSkupkaMetall)
unit UnitSkupkaMetall;
implementation
uses Uvelir, UnitMetall, DM, UnitAddPoz, UnitKVITANCE;
{$R *.dfm}
//Процедура отображения позиций квитанции и итоговой суммы
procedure TFormSkupkaMet.DBEditKvitSkupChange(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQuerySkupkaMet.Close; DM.DataModuleUvelir.ADOQuerySkupkaMet.Parameters.ParamByName('KOD').Value:=DBEditKvitSkup.Text;
DM.DataModuleUvelir.ADOQuerySkupkaMet.Open;
DM.DataModuleUvelir.ADOQuerySumKvit.Close; DM.DataModuleUvelir.ADOQuerySumKvit.Parameters.ParamByName('KODITOG').Value:=DBEditKvitSkup.Text;
DM.DataModuleUvelir.ADOQuerySumKvit.Open;
end;
//Поиск квитанции по дате
procedure TFormSkupkaMet.SpButPoiskKvitDateClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQuerySkupDate.Close;
DM.DataModuleUvelir.ADOQuerySkupDate.Parameters.ParamByName('DATE').Value:=DateToStr(DTPickPoiskDATE.Date);
DM.DataModuleUvelir.ADOQuerySkupDate.Open;
DBEditKvitSkup.DataSource.DataSet:=DM.DataModuleUvelir.ADOQuerySkupDate;
end;
//Поиск квитанции по коду
procedure TFormSkupkaMet.SpButPoiskKviyKodClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQuerySkupKvit.Close;
DM.DataModuleUvelir.ADOQuerySkupKvit.Parameters.ParamByName('KVITANCIY').Value:=EditPoiskKOD.Text;
DM.DataModuleUvelir.ADOQuerySkupKvit.Open;
DBEditKvitSkup.DataSource.DataSet:=DM.DataModuleUvelir.ADOQuerySkupKvit;
end;
//Процедура открытия отчета
procedure TFormSkupkaMet.SpButReportClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQuerySkupkaMet.Close;
DM.DataModuleUvelir.ADOQuerySkupkaMet.Parameters.ParamByName('KOD').Value:=DBEditKvitSkup.Text;
DM.DataModuleUvelir.ADOQuerySkupkaMet.Open;
DM.DataModuleUvelir.ADOQuerySumKvit.Close; DM.DataModuleUvelir.ADOQuerySumKvit.Parameters.ParamByName('KODITOG').Value:=DBEditKvitSkup.Text;
DM.DataModuleUvelir.ADOQuerySumKvit.Open;
UnitKVITANCE.FormKVITANCE.QuickRepKVITANCE.Preview;
end;
//Процедура добавления новой квитанции
procedure TFormSkupkaMet.SpButAddKvitClick(Sender: TObject);
begin
DBNavigatorSkupKvit.BtnClick(nbInsert);
DBEditSkDate.Text:=DateToStr(Date);
end;
//Процедура сохраняет позицию в квитанцию
procedure TFormSkupkaMet.SpButSavePozClick(Sender: TObject);
begin
DBNavigatorSkupKvit.Enabled:=True;
DBNavigatorPosKvit.Enabled:=True;
DBNavigatorPosKvit.BtnClick(nbPost);
SpButDelPoz.Visible:=True;
SpButAddKvit.Visible:=True;
SpButReport.Visible:=True;
SpButMET.Visible:=True;
SpButSavePoz.Visible:=False;
SpButAddPoz.Visible:=True;
DM.DataModuleUvelir.ADOQuerySumKvit.Close; DM.DataModuleUvelir.ADOQuerySumKvit.Parameters.ParamByName('KODITOG').Value:=DBEditKvitSkup.Text;
DM.DataModuleUvelir.ADOQuerySumKvit.Open;
DM.DataModuleUvelir.ADOQuerySkupkaMet.Close; DM.DataModuleUvelir.ADOQuerySkupkaMet.Parameters.ParamByName('KOD').Value:=DBEditKvitSkup.Text;
DM.DataModuleUvelir.ADOQuerySkupkaMet.Open;
end;
//Процедура добавляет новую позицию в квитанцию
procedure TFormSkupkaMet.SpButAddPozClick(Sender: TObject);
begin
DBNavigatorPosKvit.BtnClick(nbInsert);
SpButDelPoz.Visible:=False;
SpButAddKvit.Visible:=False;
SpButReport.Visible:=False;
SpButMET.Visible:=False;
SpButAddPoz.Visible:=False;
FormAddPos.Show;
end;
//Сброс параметров поиска
procedure TFormSkupkaMet.SpButSbrosClick(Sender: TObject);
begin
DBEditKvitSkup.DataSource.DataSet:=DM.DataModuleUvelir.ADOTableSkupkaMet;
EditPoiskKOD.Text:='';
end;
//Открываем остатки металлов
procedure TFormSkupkaMet.SpButMETClick(Sender: TObject);
begin
FormMetall.Show;
end;
procedure TFormSkupkaMet.SpButDelPozClick(Sender: TObject);
begin
DBNavigatorPosKvit.BtnClick(nbDelete);
DM.DataModuleUvelir.ADOQuerySkupkaMet.Close;
DM.DataModuleUvelir.ADOQuerySkupkaMet.Parameters.ParamByName('KOD').Value:=DBEditKvitSkup.Text;
DM.DataModuleUvelir.ADOQuerySkupkaMet.Open;
DM.DataModuleUvelir.ADOQuerySumKvit.Close; DM.DataModuleUvelir.ADOQuerySumKvit.Parameters.ParamByName('KODITOG').Value:=DBEditKvitSkup.Text;
DM.DataModuleUvelir.ADOQuerySumKvit.Open;
end;
end.
Модуль формы ДОБАВИТЬ ПОЗИЦИЮ (UnitAddPoz)
unit UnitAddPoz;
implementation
uses Uvelir, UnitSkupkaMetall, DM;
{$R *.dfm}
//Отображаем список проб текущего металла
procedure TFormAddPos.DBLookupComBoxMetPozClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryProba.Close; DM.DataModuleUvelir.ADOQueryProba.Parameters.ParamByName('METAL').Value:=DBLookupComBoxMetPoz.Text;
DM.DataModuleUvelir.ADOQueryProba.Open;
end;
//Записывает введенные данные в новую позицию квитанции
procedure TFormAddPos.BitBtnOKPozClick(Sender: TObject);
begin
If (EditVesPoz.Text='') Then
begin
ShowMessage('Введите вeс изделий!');
EditVesPoz.SetFocus;
exit;
end;
If (EditKolPoz.Text='') Then
begin
ShowMessage('Введите колличество изделий!');
EditKolPoz.SetFocus;
exit;
end;
If (EditCenaPoz.Text='') Then
begin
ShowMessage('Введите цену за грамм добаляемого металла!');
EditCenaPoz.SetFocus;
exit;
end;
If (DBLookupComBoxMetPoz.Text='') Then
begin
ShowMessage('Выберите металл!');
exit;
end;
If (ComBoxVidPoz.Text='') Then
begin
ShowMessage('Выберите вид добаляемой позиции!');
exit;
end;
If (DBLookupComBoxProbaPoz.Text='') Then
begin
ShowMessage('Выберите пробу металла добаляемой позиции!');
exit;
end;
If (EditKomment.Text='') Then
begin
ShowMessage('Введите описание добаляемой позиции!');
exit;
end;
try
Kol:=StrToInt(EditKolPoz.Text); //Считываем введенное колличество
except
on EConvertError do
begin
ShowMessage('В поле для колличества изделий введено неверное значение! Колличество изделий должно быть целым положительным числом!');
EditKolPoz.Text := '';
exit;
end;
end;
try
Cena:=StrToFloat(EditCenaPoz.Text); //Считываем цену за грамма
except
on EConvertError do
begin
ShowMessage('В поле для цены одного грамма добавляемого металла введено не числовое значение!');
EditCenaPoz.Text := '';
exit;
end;
end;
try
Ves:=StrToFloat(EditVesPoz.Text); //Считываем вес металла
except
on EConvertError do
begin
ShowMessage('В поле для веса добавляемого металла введено не числовое значение!');
EditVesPoz.Text := '';
exit;
end;
end; UnitSkupkaMetall.FormSkupkaMet.DBEditSkMet.Text:=DBLookupComBoxMetPoz.Text;
UnitSkupkaMetall.FormSkupkaMet.DBEditSkVid.Text:=ComBoxVidPoz.Text; UnitSkupkaMetall.FormSkupkaMet.DBEditSkProba.Text:=DBLookupComBoxProbaPoz.Text;
UnitSkupkaMetall.FormSkupkaMet.DBEditSKVes.Text:=EditVesPoz.Text;
UnitSkupkaMetall.FormSkupkaMet.DBEditSkKol.Text:=EditKolPoz.Text;
UnitSkupkaMetall.FormSkupkaMet.DBEditSkCena.Text:=EditCenaPoz.Text;
UnitSkupkaMetall.FormSkupkaMet.DBEditKommentPoz.Text:=EditKomment.Text; UnitSkupkaMetall.FormSkupkaMet.DBEditKodKvit.Text:=UnitSkupkaMetall.FormSkupkaMet.DBEditKvitSkup.Text;
FormAddPos.Close;
UnitSkupkaMetall.FormSkupkaMet.SpButSavePoz.Visible:=True;
FormAddPos.Close;
ShowMessage('Сохраните добавленную позицию!');
end;
//Закрытие формы
procedure TFormAddPos.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnitSkupkaMetall.FormSkupkaMet.DBNavigatorSkupKvit.Visible:=True;
UnitSkupkaMetall.FormSkupkaMet.DBNavigatorPosKvit.Visible:=True;
UnitSkupkaMetall.FormSkupkaMet.SpButDelPoz.Visible:=True;
UnitSkupkaMetall.FormSkupkaMet.SpButAddKvit.Visible:=True;
UnitSkupkaMetall.FormSkupkaMet.SpButReport.Visible:=True;
UnitSkupkaMetall.FormSkupkaMet.SpButMET.Visible:=True;
UnitSkupkaMetall.FormSkupkaMet.SpButAddPoz.Visible:=True;
// FormAddPos.Close;
end;
end.
Модуль формы ЗАРЕЗЕРВИРОВАТЬ МЕТАЛЛ (UnitRezervMetall)
unit UnitRezervMetall;
implementation
uses Uvelir, DM, UnitLIGATURA, UnitPRIPOI;
{$R *.dfm}
//Активация формы
procedure TFormRezervMet.FormActivate(Sender: TObject);
var
k: integer;
v1, v2: single;
begin
EditM.Text:=Uvelir.Form1.DBEditModel.Text;
EditR.Text:=Uvelir.Form1.DBEditRazmer.Text;
EditV.Text:=Uvelir.Form1.DBEditVes.Text;
EditK.Text:=Uvelir.Form1.DBEditKol.Text;
EditMet.Text:=Uvelir.Form1.DBEditMet.Text;
EditPr.Text:=Uvelir.Form1.DBEditProba.Text;
EditZ.Text:=Uvelir.Form1.DBEditZakzzIzd.Text;
EditUgarIZD.Text:=Uvelir.Form1.DBEditUGAR.Text;
DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Close; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('N').Value:= EditZ.Text; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Open;
DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Open;
DM.DataModuleUvelir.ADOQueryNeobhVES.Close; DM.DataModuleUvelir.ADOQueryNeobhVES.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryNeobhVES.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryNeobhVES.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryNeobhVES.Open;
DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Open;
GroupBox4.Caption:='ИТОГО ВЕС '+EditPr.Text+' ПРОБЫ';
DM.DataModuleUvelir.ADOQueryVesMetMASTER.Close; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryVesMetMASTER.Open;
GroupBox5.Caption:='ИТОГО ВЕС '+EditPr.Text+' ПРОБЫ';
If DBTextmetKlient.Caption<>'' Then
begin
v1:=StrToFloat(DBTextmetKlient.Caption)-StrToFloat(DBTextmetKlient.Caption)*StrToFloat(EditUgarIZD.Text)/100;
LabelSUgarom.Caption:=Format('%f',[v1]);
end
Else
LabelSUgarom.Caption:='0';
If DBTextmetKlient.Caption='' Then
DBTextMetSklient.Caption:=DBTextITOGOmet.Caption
Else
begin
v1:=StrToFloat(DBTextITOGOmet.Caption)-StrToFloat(LabelSUgarom.Caption);
DBTextMetSklient.Caption:=Format('%f',[v1]);
end;
If DBTextITOGOmetMaster.Caption='' Then
DBTextMetMaster.Caption:=DBTextMetSklient.Caption
Else
begin
v1:=StrToFloat(DBTextMetSklient.Caption)-StrToFloat(DBTextITOGOmetMaster.Caption);
DBTextMetMaster.Caption:=Format('%f',[v1]);
end;
end;
//Добавление металла клиента
procedure TFormRezervMet.SpButAddPozClick(Sender: TObject);
begin
DBNavigatorMetKLIENT.BtnClick(nbInsert);
DBGrid2.DataSource.DataSet.FieldValues['НомерЗаказа']:=EditZ.Text;
DBGrid2.DataSource.DataSet.FieldValues['АрттикулМодели']:=EditM.Text;
DBGrid2.DataSource.DataSet.FieldValues['РазмерДлина']:=EditR.Text;
SpButSavePoz.Visible:=True;
SpButAddPoz.Visible:=False;
ShowMessage('Выберите вид, металл, пробу вес!');
ComBoxVid.SetFocus;
end;
//Удаление металла клиента
procedure TFormRezervMet.SpButDelPozClick(Sender: TObject);
begin
DBNavigatorMetKLIENT.BtnClick(nbDelete);
end;
//Список проб текущего металла
procedure TFormRezervMet.DBLComboBoxMetKlientClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryProba.Close; DM.DataModuleUvelir.ADOQueryProba.Parameters.ParamByName('METAL').Value:=DBLComboBoxMetKlient.Text;
DM.DataModuleUvelir.ADOQueryProba.Open;
end;
//Сохранить металл клиента
procedure TFormRezervMet.SpButSavePozClick(Sender: TObject);
var
k: single;
begin
If ComBoxVid.Text='' Then
begin
ShowMessage('Выберите вид сдаваемого металла!');
ComBoxVid.SetFocus;
exit;
end;
If DBLComboBoxMetKlient.Text='' Then
begin
ShowMessage('Выберите сдаваемый металл!');
exit;
end;
If DBLComBoxProba.Text='' Then
begin
ShowMessage('Выберите пробу сдаваемого металла!');
exit;
end;
try
k:=StrToFloat(EditVes.Text); //Считываем вес металла
except
on EConvertError do
begin
ShowMessage('В поле для веса металла введено не числовое значение!');
EditVes.Text := '';
EditVes.SetFocus;
exit;
end;
end;
DBGrid2.DataSource.DataSet.FieldValues['Вид']:=ComBoxVid.Text; DBGrid2.DataSource.DataSet.FieldValues['Металл']:=DBLComboBoxMetKlient.Text; DBGrid2.DataSource.DataSet.FieldValues['ЗаказМеталлКлиента.Проба']:=DBLComBoxProba.Text;
DBGrid2.DataSource.DataSet.FieldValues['Вес']:=EditVes.Text;
DBNavigatorMetKLIENT.BtnClick(nbPost);
DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryRezervMetKLIENT.Open;
DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Close; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryItogoVesMetKLIENT.Open;
If DBTextmetKlient.Caption<>'' Then
begin
k:=StrToFloat(DBTextmetKlient.Caption)-StrToFloat(DBTextmetKlient.Caption)*StrToFloat(EditUgarIZD.Text)/100;
LabelSUgarom.Caption:=Format('%f',[k]);
end
Else
LabelSUgarom.Caption:='0';
If DBTextmetKlient.Caption='' Then
DBTextMetSklient.Caption:=DBTextITOGOmet.Caption
Else
begin
k:=StrToFloat(DBTextITOGOmet.Caption)-StrToFloat(LabelSUgarom.Caption);
DBTextMetSklient.Caption:=Format('%f',[k]);
end;
end;
//Добавление металла мастерской
procedure TFormRezervMet.SpButMetMasterAddClick(Sender: TObject);
begin
DBNavigatorMetMASTER.BtnClick(nbInsert);
DBGrid1.DataSource.DataSet.FieldValues['НомерЗаказа']:=EditZ.Text;
DBGrid1.DataSource.DataSet.FieldValues['АртикулМодели']:=EditM.Text;
DBGrid1.DataSource.DataSet.FieldValues['РазмерДлина']:=EditR.Text;
SpButMetMasterSave.Visible:=True;
SpButMetMasterAdd.Visible:=False;
ShowMessage('Выберите металл и пробу, и введите вес добавляемого металла!');
EditMetMasterVES.SetFocus;
end;
//Удаление металла мастерской
procedure TFormRezervMet.SpButMetMasterDeleteClick(Sender: TObject);
begin
DBNavigatorMetMASTER.BtnClick(nbDelete);
end;
//Сохранить металл мастерской
procedure TFormRezervMet.SpButMetMasterSaveClick(Sender: TObject);
var
k: single;
begin
If DBLComBoxMetMaster.Text='' Then
begin
ShowMessage('Выберите добавляемый металл!');
exit;
end;
If DBLComBoxMetMasterPROBA.Text='' Then
begin
ShowMessage('Выберите пробу добавляемого металла!');
exit;
end;
try
k:=StrToFloat(EditMetMasterVES.Text); //Считываем вес металла
except
on EConvertError do
begin
ShowMessage('В поле для веса металла введено не числовое значение!');
EditMetMasterVES.Text := '';
EditMetMasterVES.SetFocus;
exit;
end;
end; DBGrid1.DataSource.DataSet.FieldValues['Металл']:=DBLComBoxMetMaster.Text; DBGrid1.DataSource.DataSet.FieldValues['ЗаказМеталлМастерской.Проба']:=DBLComBoxMetMasterPROBA.Text;
DBGrid1.DataSource.DataSet.FieldValues['Вес']:=EditMetMasterVES.Text;
DBNavigatorMetMASTER.BtnClick(nbPost);
DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Close; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryRezervMetMASTER.Open;
DM.DataModuleUvelir.ADOQueryVesMetMASTER.Close; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('N').Value:=EditZ.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('ART').Value:=EditM.Text; DM.DataModuleUvelir.ADOQueryVesMetMASTER.Parameters.ParamByName('R').Value:=EditR.Text;
DM.DataModuleUvelir.ADOQueryVesMetMASTER.Open;
SpButMetMasterSave.Visible:=False;
SpButMetMasterAdd.Visible:=True;
If DBTextITOGOmetMaster.Caption='' Then
DBTextMetMaster.Caption:=DBTextMetSklient.Caption
Else
begin
k:=StrToFloat(DBTextMetSklient.Caption)-StrToFloat(DBTextITOGOmetMaster.Caption);
DBTextMetMaster.Caption:=Format('%f',[k]);
end;
end;
//Отображаем остаток металла
procedure TFormRezervMet.DBLComBoxMetMasterPROBAClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryOSTATOK.Close; DM.DataModuleUvelir.ADOQueryOSTATOK.Parameters.ParamByName('M').Value:=DBLComBoxMetMaster.Text; DM.DataModuleUvelir.ADOQueryOSTATOK.Parameters.ParamByName('P').Value:=DBLComBoxMetMasterPROBA.Text;
DM.DataModuleUvelir.ADOQueryOSTATOK.Open;
If DBEditOST.Text='' Then
EditOST.Text:='0'
Else
EditOST.Text:=DBEditOST.Text;
end;
procedure TFormRezervMet.DBLComBoxMetMasterClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryProba.Close; DM.DataModuleUvelir.ADOQueryProba.Parameters.ParamByName('METAL').Value:=DBLComBoxMetMaster.Text;
DM.DataModuleUvelir.ADOQueryProba.Open;
end;
//Калькулятор ЛИГАТУРА
procedure TFormRezervMet.SpButLigaturaClick(Sender: TObject);
begin
FormLIGATURA.Show
end;
//Калькулятор ПРИПОЙ
procedure TFormRezervMet.SpButPRIPOIClick(Sender: TObject);
begin
FormPRIPOI.Show;
end;
end.
Модуль формы МОДЕЛИ (UnitModel)
unit UnitModel;
implementation
uses Uvelir, UnitRazmerModel, UnitKamniModel, UnitIzdel,
UnitMetall, DM;
{$R *.dfm}
//Отображаем данные о текущей модели при активации формы
procedure TFormModel.FormActivate(Sender: TObject);
begin
//Отображаем камни текущей модели
DM.DataModuleUvelir.ADOQueryModKamni.Close; DM.DataModuleUvelir.ADOQueryModKamni.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;
DM.DataModuleUvelir.ADOQueryModKamni.Open;
//Отображаем размеры текущей модели
DM.DataModuleUvelir.ADOQueryModRazmer.Close; DM.DataModuleUvelir.ADOQueryModRazmer.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;
DM.DataModuleUvelir.ADOQueryModRazmer.Open;
//Загружаем эскиз модели
Try ImageModelEskiz.Picture.LoadFromFile('model\'+DBEditArtikul.Text+'.jpg');
Except
begin
ShowMessage('Для текущей модели нет изображения!');
ImageModelEskiz.Picture.LoadFromFile('model\model.jpg');
exit;
end;
End;
end;
//Процедура отображает данные о текущей модели
procedure TFormModel.DBEditArtikulChange(Sender: TObject);
begin
//Отображаем камни текущей модели
DM.DataModuleUvelir.ADOQueryModKamni.Close; DM.DataModuleUvelir.ADOQueryModKamni.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;
DM.DataModuleUvelir.ADOQueryModKamni.Open;
//Отображаем размеры текущей модели
DM.DataModuleUvelir.ADOQueryModRazmer.Close; DM.DataModuleUvelir.ADOQueryModRazmer.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;
DM.DataModuleUvelir.ADOQueryModRazmer.Open;
If DBEditArtikul.Text<>'' Then
begin
DM.DataModuleUvelir.ADOQueryUGAR.Close;
DM.DataModuleUvelir.ADOQueryUGAR.Parameters.ParamByName('ART').Value:=DBEditArtikul.Text;
DM.DataModuleUvelir.ADOQueryUGAR.Open;
end;
//Отображаем эскиз текущей модели
If DBEditArtikul.Text<>'' Then
//Загружаем эскиз модели
Try ImageModelEskiz.Picture.LoadFromFile('model\'+DBEditArtikul.Text+'.jpg');
Except
begin
ShowMessage('Для текущей модели нет изображения!');
ImageModelEskiz.Picture.LoadFromFile('model\model.jpg');
exit;
end;
End;
IF DBCheckBox1.Checked=True Then
SpButKamenModel.Visible:=True;
IF DBCheckBox1.Checked=False Then
SpButKamenModel.Visible:=False;
end;
//Процедура поиска модели по артикулу
procedure TFormModel.SpButPoiskModelClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryModel.Close;
DM.DataModuleUvelir.ADOQueryModel.Parameters.ParamByName('ART').Value:=EditPoiskModel.Text;
DM.DataModuleUvelir.ADOQueryModel.Open;
DBEditArtikul.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryModel;
end;
//Процедура сбрасывает параметры поиска
procedure TFormModel.BitBtnSbrosClick(Sender: TObject);
begin
DBEditArtikul.DataSource.DataSet:=DM.DataModuleUvelir.ADOTabModel;
EditPoiskModel.Text:='';
end;
//Процедура сбрасывает параметры фильтров
procedure TFormModel.BitBtnSbrosFClick(Sender: TObject);
begin
DBEditArtikul.DataSource.DataSet:=DM.DataModuleUvelir.ADOTabModel;
end;
//Процедура для фильтров по моделям
procedure TFormModel.BitBtnFiltrClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryModF.Close; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('IZD').Value:=DBLookupComBoxIzdList.Text; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('MET').Value:=DBLookupComBoxIzdMet.Text;
If ComBoxKamen.Text='Изделия с камнями' Then
begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM0').Value:=1; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM1').Value:=1;
end;
If ComBoxKamen.Text='Изделия без камней' Then
begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM0').Value:=0; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM1').Value:=0;
end;
If ComBoxKamen.Text='Все изделия' Then
begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM0').Value:=0; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('KAM1').Value:=1;
end;
If ComBoxIzdR.Text='Изделия литьём' Then
begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT0').Value:=0; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT1').Value:=0;
end;
If ComBoxIzdR.Text='Ручная работа' Then
begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT0').Value:=1; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT1').Value:=1;
end;
If ComBoxIzdR.Text='Все изделия' Then
begin DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT0').Value:=0; DM.DataModuleUvelir.ADOQueryModF.Parameters.ParamByName('LIT1').Value:=1;
end;
DM.DataModuleUvelir.ADOQueryModF.Open;
DBEditArtikul.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryModF;
end;
//Процедура отображает размеры текущей модели
procedure TFormModel.SpButRazmerModelClick(Sender: TObject);
begin
UnitRazmerModel.FormRazmer.DBEditArtRazmer.Text:=DBEditArtikul.Text;
FormRazmer.Show;
end;
//Процедура отображает камни текущей модели
procedure TFormModel.SpButKamenModelClick(Sender: TObject);
begin
FormKamniModel.Show;
end;
//Процедура добавления новой модели
procedure TFormModel.SpButAddModClick(Sender: TObject);
begin
ShowMessage('Введите артикул новой модели!');
EditNewArt.Visible:=True;
EditNewArt.SetFocus;
DBNavigatorModel.BtnClick(nbInsert);
DBNavigatorModel.Enabled:=False;
SpButSaveMOD.Visible:=True;
SpButAddMod.Visible:=False;
DBLookupComBoxIzdAdd.Visible:=True;
DBLookupComBoxMetAdd.Visible:=True;
DBLookupComBoxProbaAdd.Visible:=True;
DBEditArtikul.Visible:=False;
DBEditModelIzd.Visible:=False;
DBEditModelMetal.Visible:=False;
DBEditModelProba.Visible:=False;
end;
procedure TFormModel.DBLookupComBoxMetAddClick(Sender: TObject);
begin
//Отображаем список проб текущего металла
DM.DataModuleUvelir.ADOQueryProba.Close; DM.DataModuleUvelir.ADOQueryProba.Parameters.ParamByName('METAL').Value:=DBLookupComBoxMetAdd.Text;
DM.DataModuleUvelir.ADOQueryProba.Open;
end;
procedure TFormModel.SpeedButton1Click(Sender: TObject);
begin
FormIzdel.Show;
end;
procedure TFormModel.SpeedButton2Click(Sender: TObject);
begin
FormMetall.Show;
end;
//Добавляем модель к заказу
procedure TFormModel.SpButAddModelZakazClick(Sender: TObject);
begin
Uvelir.Form1.DBEditModel.Text:=DBEditArtikul.Text; Uvelir.Form1.DBEditRazmer.Text:=DBGridModelRazmer.DataSource.DataSet.FieldValues['РазмерДлина']; Uvelir.Form1.DBEditVes.Text:=DBGridModelRazmer.DataSource.DataSet.FieldValues['Вес'];
FormModel.Close;
Form1.Show;
ShowMessage('Введите необходимое количество изделий, описание и цену за грамм работы!');
Uvelir.Form1.DBEditKol.SetFocus;
If DBCheckBox1.Checked=True Then
begin
Uvelir.Form1.DBGridZakazKamni.Columns[8].Width:=80;
Uvelir.Form1.DBGridZakazKamni.Columns[8].Visible:=True;
end;
Uvelir.Form1.SpButAddModelZAKAZ.Visible:=True;
Uvelir.Form1.SpButRezMet.Visible:=True;
end;
//Процедура сохранения новой модели
procedure TFormModel.SpButSaveMODClick(Sender: TObject);
begin
DBEditArtikul.Text:=EditNewArt.Text;
DBEditModelIzd.Text:=DBLookupComBoxIzdAdd.Text;
DBEditModelMetal.Text:=DBLookupComBoxMetAdd.Text;
DBEditModelProba .Text:=DBLookupComBoxProbaAdd.Text;
EditNewArt.Visible:=False;
DBLookupComBoxIzdAdd.Visible:=False;
DBLookupComBoxMetAdd.Visible:=False;
DBLookupComBoxProbaAdd.Visible:=False;
DBEditArtikul.Visible:=True;
DBEditModelIzd.Visible:=True;
DBEditModelMetal.Visible:=True;
DBEditModelProba.Visible:=True;
SpButSaveMOD.Visible:=False;
SpButAddMod.Visible:=True;
DBNavigatorModel.Enabled:=True;
DBNavigatorModel.BtnClick(nbPost);
end;
//Отменить добавление новой модели
procedure TFormModel.SpeedButton3Click(Sender: TObject);
begin
EditNewArt.Visible:=False;
DBLookupComBoxIzdAdd.Visible:=False;
DBLookupComBoxMetAdd.Visible:=False;
DBLookupComBoxProbaAdd.Visible:=False;
SpButSaveMOD.Visible:=False;
SpButAddMod.Visible:=True;
DBEditArtikul.Visible:=True;
DBEditModelIzd.Visible:=True;
DBEditModelMetal.Visible:=True;
DBEditModelProba.Visible:=True;
DBNavigatorModel.Enabled:=True;
DBNavigatorModel.BtnClick(nbCancel);
end;
end.
Модуль формы РАЗМЕР МОДЕЛИ (UnitRazmerModel)
unit UnitRazmerModel;
interface
implementation
uses Uvelir, UnitModel, DM;
{$R *.dfm}
procedure TFormRazmer.SpButAddRModClick(Sender: TObject);
begin
DBNavigatorRazmer.BtnClick(nbInsert);
DBEditArtRazmer.Text:=UnitModel.FormModel.DBEditArtikul.Text;
end;
end.
Модуль формы КАМНИ МОДЕЛИ (UnitKamniModel)
unit UnitKamniModel;
implementation
uses Uvelir, UnitModel, DM;
{$R *.dfm}
procedure TFormKamniModel.SpButAddKamModClick(Sender: TObject);
begin
DBNavigatorKamModel.BtnClick(nbInsert);
DBEditArtModKam.Text:=UnitModel.FormModel.DBEditArtikul.Text;
DBEditModKamAdd.Text:=DBEditKamMod.Text;
DBEditModKamFAdd.Text:=DBEditFormaKamMod.Text;
DBEditModKamCAdd.Text:=DBEditCvetKamMod.Text;
DBEditModKamRAdd.Text:=DBEditRazKamMod.Text;
ShowMessage('Введите колличество камней данной модели!');
DBEditModKamKAdd.SetFocus;
end;
procedure TFormKamniModel.BitBtnFiltrKamModClick(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryKatalogKam.Close;
DM.DataModuleUvelir.ADOQueryKatalogKam.Parameters.ParamByName('KAM').Value:=DBLookupComBoxKamF.Text;
DM.DataModuleUvelir.ADOQueryKatalogKam.Open;
end;
end.
Модуль формы КЛИЕНТЫ (UnitKlient)
unit UnitKlient;
implementation
uses DM, Uvelir;
{$R *.dfm}
//Процедура отображает номера телефонов текущего клиента
procedure TFormKlient.DBEditKodKlientChange(Sender: TObject);
begin
DM.DataModuleUvelir.ADOQueryTelKlient.Close; DM.DataModuleUvelir.ADOQueryTelKlient.Parameters.ParamByName('TEL').Value:=DBEditKodKlient.Text;
DM.DataModuleUvelir.ADOQueryTelKlient.Open;
end;
//Добавить заказ
procedure TFormKlient.SpButAddKlientZakazClick(Sender: TObject);
begin
Uvelir.Form1.DBEditKodKlienta.Text:=DBEditKodKlient.Text;
SpButAddKlientZakaz.Visible:=False;
FormKlient.Close;
Form1.Show;
ShowMessage('Выберите модель изделия для заказа. КНОПКА "Новое изделие"!');
Uvelir.Form1.SpButAddModelZAKAZ.Visible:=True;
Uvelir.Form1.SpButNewZakaz.Visible:=False;
Uvelir.Form1.DBNavigatorZakaz.BtnClick(nbPost);
end;
//Просмотр заказов клиента
procedure TFormKlient.SpButAddModelZAKAZClick(Sender: TObject);
begin
FormKlient.Close;
Form1.Show;
DM.DataModuleUvelir.ADOQueryZklient.Close; DM.DataModuleUvelir.ADOQueryZklient.Parameters.ParamByName('K').Value:=DBEditKodKlient.Text;
DM.DataModuleUvelir.ADOQueryZklient.Open; Uvelir.Form1.DBGridZakaz.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryZklient;
end;
//Поиск клиента по фамилии
procedure TFormKlient.SpButPoiskKlientClick(Sender: TObject);
begin
If EditPoiskModel.Text='' Then
begin
ShowMessage('Введите первые буквы фамилии клиента!');
EditPoiskModel.SetFocus;
end
ELSE
begin
DM.DataModuleUvelir.ADOQueryKlient.Close; DM.DataModuleUvelir.ADOQueryKlient.Parameters.ParamByName('KLIENT').Value:=EditPoiskModel.Text;
DM.DataModuleUvelir.ADOQueryKlient.Open;
end;
DBEditKodKlient.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryKlient;
end;
//Сброс параметров поиска
procedure TFormKlient.BitBtnSbrosClick(Sender: TObject);
begin
DBEditKodKlient.DataSource.DataSet:=DM.DataModuleUvelir.ADOTabKlient;
end;
//Автозаполнение по первым буквам фамилии
procedure TFormKlient.EditPoiskModelChange(Sender: TObject);
begin
DBEditKodKlient.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryKlient;
DM.DataModuleUvelir.ADOQueryKlient.Close; DM.DataModuleUvelir.ADOQueryKlient.Parameters.ParamByName('KLIENT').Value:=EditPoiskModel.Text;
DM.DataModuleUvelir.ADOQueryKlient.Open;
end;
end.
Модуль формы КАТАЛОГ ИЗДЕЛИЙ (UnitIzdel)
unit UnitIzdel;
implementation
uses Uvelir, UnitModel, DM;
{$R *.dfm}
//Фильтр по изделиям с камнями
procedure TFormIzdel.CheckBox1Click(Sender: TObject);
begin
If CheckBox2.Checked=False Then
begin
if CheckBox1.Checked=False Then
DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDBKAM;
if CheckBox1.Checked=True Then
DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDSKAM;
end;
If CheckBox2.Checked=True Then
begin
if CheckBox1.Checked=False Then
DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDRBKAM;
if CheckBox1.Checked=True Then
DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDRSKAM;
end;
end;
//Фильтр по изделиям ручной работы
procedure TFormIzdel.CheckBox2Click(Sender: TObject);
begin
If CheckBox2.Checked=False Then
begin
if CheckBox1.Checked=False Then
DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDBKAM;
if CheckBox1.Checked=True Then
DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDSKAM;
end;
If CheckBox2.Checked=True Then
begin
if CheckBox1.Checked=False Then
DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDRBKAM;
if CheckBox1.Checked=True Then
DBGrid1.DataSource.DataSet:=DM.DataModuleUvelir.ADOQueryIZDRSKAM;
end;
end;
//Добавить изделие
procedure TFormIzdel.SpButAddPozClick(Sender: TObject);
begin
DBNavigatorIzd.BtnClick(nbInsert);
DBNavigatorIzd.Enabled:=False;
SpButSavePoz.Visible:=True;
SpButAddPoz.Visible:=False;
end;
procedure TFormIzdel.SpButSavePozClick(Sender: TObject);
begin
If CheckBox1.Checked=True Then
DBGrid1.DataSource.DataSet.FieldValues['НаличиеКамней']:=1;
If CheckBox1.Checked=False Then
DBGrid1.DataSource.DataSet.FieldValues['НаличиеКамней']:=0;
If CheckBox2.Checked=True Then
DBGrid1.DataSource.DataSet.FieldValues['РучнаяРабота']:=1;
If CheckBox2.Checked=False Then
DBGrid1.DataSource.DataSet.FieldValues['РучнаяРабота']:=0;
DBNavigatorIzd.BtnClick(nbPost);
DBNavigatorIzd.Enabled:=True;
SpButSavePoz.Visible:=False;
SpButAddPoz.Visible:=True;
end;
//Отменить
procedure TFormIzdel.SpButDelPozClick(Sender: TObject);
begin
DBNavigatorIzd.BtnClick(nbCancel);
DBNavigatorIzd.Enabled:=True;
SpButSavePoz.Visible:=False;
SpButAddPoz.Visible:=True;
end;
end.
Модуль формы КАЛЬКУЛЯТОР ПРИПОЯ (UnitPRIPOI)
unit UnitPRIPOI;
implementation
uses Uvelir, DM, UnitRezervMetall;
{$R *.dfm}
//Рассчет припоя для золота 999 пробы
procedure TFormPRIPOI.SpBut999Click(Sender: TObject);
var
k1, k2, k3, k4: single;
begin
IF EditVes999.Text='' Then
begin
ShowMessage('Введите вес золота 999 пробы!');
EditVes999.SetFocus;
exit;
end;
try
k1:=StrToFloat(EditVes999.Text); //Считываем вес металла
except
on EConvertError do
begin
ShowMessage('В поле для веса металла введено не числовое значение!');
EditVes999.Text := '';
EditVes999.SetFocus;
exit;
end;
end;
k1:=(StrToFloat(EditVes999.Text)/58.5)*13;
LabelVesSerebro999.Caption:=Format('%f',[k1]);
k2:=(StrToFloat(EditVes999.Text)/58.5)*18.5;
LabelVesMed999.Caption:=Format('%f',[k2]);
k3:=(StrToFloat(EditVes999.Text)/58.5)*10;
LabelVesKadmii999.Caption:=Format('%f',[k3]);
k4:=k1+k2+k3+StrToFloat(EditVes999.Text);
LabelVesITOGO999.Caption:=Format('%f',[k4]);
end;
//Рассчет припоя для золота 900 пробы
procedure TFormPRIPOI.SpBut900Click(Sender: TObject);
var
k1, k2, k3, k4, k12, k22: single;
p1: single;
begin
IF EditVes900.Text='' Then
begin
ShowMessage('Введите вес золота 900 пробы!');
EditVes900.SetFocus;
exit;
end;
try
k1:=StrToFloat(EditVes900.Text); //Считываем вес металла
except
on EConvertError do
begin
ShowMessage('В поле для веса металла введено не числовое значение!');
EditVes900.Text := '';
EditVes900.SetFocus;
exit;
end;
end;
p1:=(StrToFloat(EditVes900.Text)/999)*900;
k1:=(p1/58.5)*13;
LabelVesSerebro900.Caption:=Format('%f',[k1]);
k2:=(p1/58.5)*18.5;
LabelVesMed900.Caption:=Format('%f',[k2]);
k3:=(p1/58.5)*10;
LabelVesKadmii900.Caption:=Format('%f',[k3]);
k12:=k1-(StrToFloat(EditVes900.Text)-p1)/2;
k22:=k2-(StrToFloat(EditVes900.Text)-p1)/2;
k4:=k12+k22+k3+StrToFloat(EditVes900.Text);
LabelVesITOGO900.Caption:=Format('%f',[k4]);
end;
end.
Модуль формы КАЛЬКУЛЯТОР ЛИГАТУРЫ (UnitLIGATURA)
unit UnitLIGATURA;
implementation
uses Uvelir, DM, UnitRezervMetall;
{$R *.dfm}
//Рассчет золота 585 пробы из одного металла
procedure TFormLIGATURA.SpeedButton1Click(Sender: TObject);
var
k: single;
begin
IF DBLComBoxPROBA1.Text='' Then
begin
ShowMessage('Выберите пробу!');
exit;
end;
IF EditVes.Text='' Then
begin
ShowMessage('Введите вес!');
EditVes.SetFocus;
exit;
end;
try
k:=StrToFloat(EditVes.Text); //Считываем вес металла
except
on EConvertError do
begin
ShowMessage('В поле для веса металла введено не числовое значение!');
EditVes.Text := '';
EditVes.SetFocus;
exit;
end;
end;
k:=(StrToFloat(EditVes.Text)/585)*StrToInt(DBLComBoxPROBA1.Text);
LabelVes585.Caption:=Format('%f',[k]);
end;
//Рассчет золота 585 пробы из двух металло
procedure TFormLIGATURA.SpeedButton2Click(Sender: TObject);
var
p1, p2: integer;
k: single;
begin
IF DBLComBoxPROBA2.Text='' Then
begin
ShowMessage('Выберите пробу первого металла!');
exit;
end;
IF DBLComBoxPROBA3.Text='' Then
begin
ShowMessage('Выберите пробу второго металла!');
exit;
end;
IF EditVes1.Text='' Then
begin
ShowMessage('Введите вес первого металла!');
EditVes1.SetFocus;
exit;
end;
try
k:=StrToFloat(EditVes1.Text); //Считываем вес металла
except
on EConvertError do
begin
ShowMessage('В поле для веса металла введено не числовое значение!');
EditVes1.Text := '';
EditVes1.SetFocus;
exit;
end;
end;
p1:=StrToInt(DBLComBoxPROBA2.Text)-585;
p2:=585-StrToInt(DBLComBoxPROBA3.Text);
k:=StrToFloat(EditVes1.Text)*(p1/p2);
LabelVesPR585.Caption:=Format('%f',[k]);
GroupBox585.Caption:='Вес '+DBLComBoxPROBA3.Text;
end;
end.