Файл: Проектирование реализации операций бизнес-процесса «Запасы-склад (приходование товара) »..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 26.05.2023

Просмотров: 97

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

form_prihod_prod.docum_number.Text:= dm.table_prihod.FieldByName('number_docum').value;

form_prihod_prod.DateTimePicker1.Date:= dm.table_prihod.FieldByName('date_prihoda').Value;

end;

//показываем форму prihod_prod

form_prihod_prod.Caption:='Приход: '+dm.table_prihod.FieldByName('number_docum').AsString;

form_prihod_prod.Showmodal;

end;

procedure TForm_prihod.FormActivate(Sender: TObject);

begin

//так как таблица приход использует данные из таблиц единицы измерения, категории продуктов, поставщики //и продукты

//то мы должны проверить заполнены они или нет

if form_general.table_ed_izmer.RecordCount=0 then begin ShowMessage('У Вас не заполнен справочник "Единиц измерения". Для продолжения работы Вам необходимо заполнить справочник.');close;end

else begin

if form_general.table_product_group.RecordCount=0 then begin ShowMessage('У Вас не заполнен справочник "Категории продуктов". Для продолжения работы Вам необходимо заполнить справочник.');close;end

else begin

if form_general.table_postav_ik.RecordCount=0 then begin ShowMessage('У Вас не заполнен справочник "Поставщики". Для продолжения работы Вам необходимо заполнить справочник.');close;end

else begin

if form_general.table_products.RecordCount=0 then begin ShowMessage('У Вас не заполнен справочник "Продукты". Для продолжения работы Вам необходимо заполнить справочник.');close;end

else begin

//обновляем данные

form_general.table_ed_izmer.Refresh;

form_general.table_product_group.Refresh;

form_general.table_postav_ik.Refresh;

form_general.table_products.Refresh;

//установка фокуса при активации формы

dbgrid1.SetFocus;

end;

end;

end;

end;

end;

procedure TForm_prihod.FormClose(Sender: TObject; var Action: TCloseAction);

begin

//процедура закрытия формы

Action:=cafree;

end;

procedure TForm_prihod_prod.Button1Click(Sender: TObject);

begin

//новая запись

if docum_number.Text='' then begin ShowMessage('Не заполнено поле "Номер документа"'); docum_number.SetFocus; end

else begin

if (table_copy_prihod.Lookup('number_docum', docum_number.text, 'number_docum')<>null) and (dm.table_prihod.FieldByName('number_docum').AsString<>docum_number.Text) then begin ShowMessage('Такой номер уже существует');docum_number.Text:=''; docum_number.SetFocus; end

else begin

if dblookup_postav_ik.Text='' then begin ShowMessage('Не заполнено поле "Поставщик"'); dblookup_postav_ik.SetFocus;end

else begin

if DateTimePicker1.ToString='' then begin ShowMessage('Не заполнено поле "Дата прихода"'); DateTimePicker1.SetFocus;end

else begin

dm.table_prihod.FieldByName('date_prihoda').Value:=DateTimePicker1.Date;

dm.table_prihod.FieldByName('number_docum').Value:=docum_number.text;

dm.table_prihod.Post;

dm.table_prihod.edit;

table_storage.Edit;

table_storage.append;

table_storage.FieldByName('id_prihod').Value:= dm.table_prihod.FieldByName('id').AsInteger;

form_select_prod.Showmodal;

end;

end;

end;

end;

end;

procedure TForm_prihod_prod.Button2Click(Sender: TObject);

begin

//удалить запись

if dbgrid1.DataSource.DataSet.RecordCount<>0 then

begin

if (MessageBox(Handle, 'Удалить запись?', 'Внимание !!!', MB_YESNO) = IDYES) then

begin

table_storage.Edit;

table_storage.Delete;

adoquery_summa.Active:=false;

adoquery_summa.Active:=true;

end;

end

else ShowMessage('Нет записей для удаления');


end;

procedure TForm_prihod_prod.Button3Click(Sender: TObject);

begin

//закрытие формы

Close;

end;

procedure TForm_prihod_prod.DBGrid1DblClick(Sender: TObject);

begin

//двойной клик для редактирования записи

if docum_number.Text='' then begin ShowMessage('Не заполнено поле "Номер документа"'); docum_number.SetFocus; end

else begin

if (table_copy_prihod.Lookup('number_docum', docum_number.text, 'number_docum')<>null) and (dm.table_prihod.FieldByName('number_docum').AsString<>docum_number.Text) then begin ShowMessage('Такой номер уже существует'); docum_number.Text:=''; docum_number.SetFocus; end

else begin

if dblookup_postav_ik.Text='' then begin ShowMessage('Не заполнено поле "Поставщик"'); dblookup_postav_ik.SetFocus;end

else begin

if DateTimePicker1.ToString='' then begin ShowMessage('Не заполнено поле "Дата прихода"'); DateTimePicker1.SetFocus;end

else begin

dm.table_prihod.FieldByName('date_prihoda').Value:= DateTimePicker1.Date;

dm.table_prihod.FieldByName('number_docum').Value:= docum_number.text;

dm.table_prihod.Post;

dm.table_prihod.edit;

table_storage.Edit;

table_storage.FieldByName('id_prihod').Value:= dm.table_prihod.FieldByName('id').AsInteger;

if table_storage.FieldByName('id_product_group').AsInteger<>0 then

form_select_prod.DBLookup_product_group.KeyValue:= table_storage.FieldByName('id_product_group').Value;

//открываем форму редактирования

form_select_prod.Showmodal;

end;

end;

end;

end;

end;

procedure TForm_prihod_prod.FormActivate(Sender: TObject);

begin

//пересчет итоговой суммы при активации формы

adoquery_summa.Active:=false;

adoquery_summa.Active:=true;

end;

procedure TForm_prihod_prod.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

//проверка перед закрытием формы и закрытие формы

//сохранение формы

if ( MessageBox(Handle, 'Cохранить документ?', 'Внимание !!!', MB_OkCANCEL)= IDOk) then begin

if docum_number.Text='' then begin ShowMessage('Не заполнено поле "Номер документа"'); CanClose:=false;docum_number.SetFocus; end

else begin

if (table_copy_prihod.Lookup('number_docum',docum_number.Text,'number_docum')<>null) and (dm.table_prihod.FieldByName('number_docum').AsString<>docum_number.Text)then begin ShowMessage('Такой номер уже существует');CanClose:=false;docum_number.Text:=''; docum_number.SetFocus; end

else begin

if dblookup_postav_ik.Text='' then begin ShowMessage('Не заполнено поле "Поставщик"');CanClose:=false;dblookup_postav_ik.SetFocus;end

else begin

if DateTimePicker1.ToString='' then begin ShowMessage('Не заполнено поле "Дата прихода"');CanClose:=false;DateTimePicker1.SetFocus;end

else begin

dm.table_prihod.Edit;

dm.table_prihod.FieldByName('date_prihoda').Value:=DateTimePicker1.Date;

dm.table_prihod.FieldByName('number_docum').Value:=docum_number.text;

dm.table_prihod.FieldByName('sum').Value:=dbedit_summa.Field.Value;

dm.table_prihod.post;

end;

end;

end;

end;

end

//при отказе от сохранения, проверяем, если уже заполненные записи продуктов и если такие есть, то не даем закрыть форму, пока все не будет заполнено правильно

else if dbgrid1.DataSource.DataSet.RecordCount<>0 then

begin

if docum_number.Text='' then begin ShowMessage('Не заполнено поле "Номер документа"'); CanClose:=false;docum_number.SetFocus; end

else begin

if (table_copy_prihod.Lookup('number_docum',docum_number.Text, 'number_docum')<>null) and (dm.table_prihod.FieldByName('number_docum').AsString <> docum_number.Text) then begin ShowMessage('Такой номер уже существует');CanClose:=false;docum_number.Text:=''; docum_number.SetFocus; end


else begin

if dblookup_postav_ik.Text='' then begin ShowMessage('Не заполнено поле "Поставщик"');CanClose:=false;dblookup_postav_ik.SetFocus;end

else begin

if DateTimePicker1.ToString='' then begin ShowMessage('Не заполнено поле "Дата прихода"');CanClose:=false;DateTimePicker1.SetFocus;end

else begin

dm.table_prihod.Edit;

dm.table_prihod.FieldByName('date_prihoda').Value:= DateTimePicker1.Date;

dm.table_prihod.FieldByName('number_docum').Value:= docum_number.text;

dm.table_prihod.FieldByName('sum').Value:= dbedit_summa.Field.Value;

dm.table_prihod.post;

end;

end;

end;

end;

end

//если записей нет, отменяем изменения

else dm.table_prihod.cancel;

end;

для события OnCalcFields компонента table_storage:

procedure TForm_prihod_prod.table_storageCalcFields(DataSet: TDataSet);

begin

//вычисляемое поле сумма

table_storage.FieldByName('summa').Value:= table_storage.FieldByName('price').Value* table_storage.FieldByName('quantity').Value;

end;

procedure TForm_select_prod.Button1Click(Sender: TObject);

begin

//Нажатие на кнопку ОК. Проверяем и сохраняем.

if dblookup_products.Text='' then begin ShowMessage('Не заполнено поле "Продукт"');dblookup_products.SetFocus;end

else begin

if dblookup_ed_izmer.Text='' then begin ShowMessage('Не заполнено поле "Ед.изм."');dblookup_ed_izmer.SetFocus;end

else begin

if quantity.Text='' then begin ShowMessage('Не заполнено поле "Количество"');quantity.SetFocus;end

else begin

if price.Text='' then begin ShowMessage('Не заполнено поле "Цена"'); price.SetFocus;end

else begin

if DateTimePicker1.ToString='' then begin ShowMessage('Не заполнено поле "Срок реализации"'); DateTimePicker1.SetFocus;end

else begin

if ( MessageBox(Handle, 'Cохранить документ?', 'Внимание !!!', MB_OkCANCEL)= IDOk) then begin

form_prihod_prod.table_storage.Edit; form_prihod_prod.table_storage.FieldByName('id_product_group').Value:= form_general.table_products.FieldByName('id_product_group').Value;

form_prihod_prod.table_storage.FieldByName('date_realization').Value:= DateTimePicker1.Date;

form_prihod_prod.table_storage.Post;

end

else form_prihod_prod.table_storage.Cancel;

close;

end;

end;

end;

end;

end;

end;

для события OnClick кнопки Button2 (Отмена):

procedure TForm_select_prod.Button2Click(Sender: TObject);

begin

//кнопка отмена

form_prihod_prod.table_storage.Cancel;

form_select_prod.Close;

end;

для события OnClick компонента DBLookup_products:

procedure TForm_select_prod.DBLookup_productsClick(Sender: TObject);

begin

//заполняем поля по умолчанию при выборе продукта

DBLookup_ed_izmer.KeyValue:=products.DataSet.FieldByName('id_ed_izmer').Value;

form_prihod_prod.table_storage.FieldByName('id_ed_izmer').Value:= dblookup_ed_izmer.KeyValue;

DateTimePicker1.Date:=sysutils.Date+ products.DataSet.FieldByName('time_hraneniya').Value;

end;

для события OnClick компонента DBLookup_product_group:

procedure TForm_select_prod.DBLookup_product_groupClick(Sender: TObject);

begin

//включем фильтр при выборе группы продукта

form_general.table_products.Filtered:=true;

form_general.table_products.Filter:='id_product_group='+ inttostr(DBLookup_product_group.KeyValue);

//отключаем фильтр, если в выбранной категории нет продуктов

if products.DataSet.RecordCount=0 then

begin ShowMessage('Список продуктов пустой, выберите другую категорию или заполните справочник "Продукты".');

form_general.table_products.Filtered:=false;

end;

end;

для события OnClose формы form_select_prod: