Добавил в проект Клиент-Мастер контроль остатков при списании.
Контроль осуществляется на форме frmPartApp, при событии OnClick на кнопке OK
Код:
procedure frmPartApp_Button1_OnClick (Sender: string; var Cancel: boolean);
var
s: string;
begin
// если не выбрали запчасть
if frmPartApp.GridPart.dbItemID = -1 then
begin
Cancel := True;
ShowMessage('Выберите запчасть.');
Exit;
end;
// делаем SQL запрос, чтобы узнать количество выбранной детали в GridPart на складе
s := SQLExecute ('SELECT (SUM(quanity*(id_operation=1)) - SUM(quanity*(id_operation=2))) - '+
'ifnull((SELECT SUM(partsapp.quanty) as result FROM partsapp WHERE partsapp.id_parts = '+ IntToStr(frmPartApp.GridPart.dbItemID) +'),0) '+
'FROM sklad '+
'WHERE sklad.id_parts = ' + IntToStr(frmPartApp.GridPart.dbItemID));
// проверяем, не привышаем ли расход
if StrToInt(frmPartApp.edQunity.Text) > StrToInt(s) then
begin
Cancel := True;
ShowMessage('Вы пытаетесь исрасходовать ' + frmPartApp.edQunity.Text + ' запчастей при наличии только ' + s + ' запчастей.');
end;
end;
Можете скачать проект с данной реализацией по ссылке ниже
Dmitry.