unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, IBConnection, sqldb, db, FileUtil, Forms, Controls,
Graphics, Dialogs, StdCtrls, Grids;
type
{ TForm1 }
TForm1 = class(TForm)
Button1_SaveAndExit: TButton;
Button2_ExitWithoutSaving: TButton;
Button3_NewDetailRecord: TButton;
Button4_Save: TButton;
Button5_Cancel: TButton;
Button6_DeleteDetailRecord: TButton;
DataSource1_Master: TDataSource;
DataSource2_Detail: TDataSource;
Edit1_Date: TEdit;
Edit2_CustomerName: TEdit;
Edit3_InvoiceNumber: TEdit;
Edit4_InvoiceValue: TEdit;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
IBConnection1: TIBConnection;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
SQLQuery1_Master: TSQLQuery;
SQLQuery2_Detail: TSQLQuery;
SQLTransaction1: TSQLTransaction;
StringGrid1: TStringGrid;
procedure Button1_SaveAndExitClick(Sender: TObject);
procedure Button2_ExitWithoutSavingClick(Sender: TObject);
procedure Button3_NewDetailRecordClick(Sender: TObject);
procedure Button4_SaveClick(Sender: TObject);
procedure Button5_CancelClick(Sender: TObject);
procedure Button6_DeleteDetailRecordClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
// open dtabase and datasets
// check all basic information
// new invoice:
Edit4_InvoiceValue.Text := '0';
// existing invoice:
// Edit4_InvoiceValue.Text := FloatToStr(StoredProcedureReturnValue());
end;
procedure TForm1.Button1_SaveAndExitClick(Sender: TObject);
begin
// all information is already calculated,
// just save them to database
end;
procedure TForm1.Button2_ExitWithoutSavingClick(Sender: TObject);
begin
// cancel everything and exit
end;
procedure TForm1.Button3_NewDetailRecordClick(Sender: TObject);
begin
SQLQuery2_Detail.Append;
end;
procedure TForm1.Button4_SaveClick(Sender: TObject);
begin
SQLQuery2_Detail.FieldByName('TotalValue').AsFloat := SQLQuery2_Detail.FieldByName('Quantity').AsFloat * SQLQuery2_Detail.FieldByName('UnitValue').AsFloat;
Edit4_InvoiceValue.Text := FloatToStr(StrToFloat(Edit4_InvoiceValue.Text) + SQLQuery2_Detail.FieldByName('TotalValue').AsFloat);
SQLQuery2_Detail.Post;
SQLQuery2_Detail.ApplyUpdates;
SQLTransaction1.Commit;
SQLQuery2_Detail.Open;
SQLQuery2_Detail.Last;
end;
procedure TForm1.Button5_CancelClick(Sender: TObject);
begin
SQLQuery2_Detail.Cancel;
end;
procedure TForm1.Button6_DeleteDetailRecordClick(Sender: TObject);
begin
Edit4_InvoiceValue.Text := FloatToStr(StrToFloat(Edit4_InvoiceValue.Text) - SQLQuery2_Detail.FieldByName('TotalValue').AsFloat);
SQLQuery2_Detail.Delete;
SQLQuery2_Detail.ApplyUpdates;
SQLTransaction1.Commit;
SQLQuery2_Detail.Open;
SQLQuery2_Detail.Last;
end;
end.