📄 apinvoiceform.pas
字号:
unit APInvoiceForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, ExtCtrls, DB, DBTables, Mask, DBCtrls, Buttons,
Menus, BDE;
type
TfrmAPInvoice = class(TForm)
Panel1: TPanel;
panelMiddle: TPanel;
Panel2: TPanel;
Panel4: TPanel;
btnOK: TButton;
btnCancel: TButton;
tblAPInv: TTable;
dsAPInv: TDataSource;
tblAPInvDet: TTable;
dsAPInvDet: TDataSource;
tblAPInvInvoiceNo: TStringField;
tblAPInvDescription: TStringField;
tblAPInvInvoiceDate: TDateField;
tblAPInvDueDate: TDateField;
tblAPInvDiscountDate: TDateField;
tblAPInvInvoiceAmount: TCurrencyField;
tblAPInvPaidAmount: TCurrencyField;
tblAPInvDiscountAmount: TCurrencyField;
tblAPInvDiscPC: TFloatField;
tblAPInvOwing: TCurrencyField;
tblAPInvPurchaseOrderNo: TStringField;
tblAPInvGLYear: TSmallintField;
tblAPInvGLPeriod: TSmallintField;
tblAPInvDetSeq: TAutoIncField;
tblAPInvDetGLAccount: TStringField;
tblAPInvDetGLAmount: TCurrencyField;
tblAPInvDetAccountName: TStringField;
Label1: TLabel;
Label2: TLabel;
editInvoiceNo: TDBEdit;
lblDescription: TLabel;
editDescription: TDBEdit;
lblInvoiceDate: TLabel;
editInvoiceDate: TDBEdit;
lblDueDate: TLabel;
editDueDate: TDBEdit;
lblDiscountDate: TLabel;
editDiscountDate: TDBEdit;
lblInvoiceAmount: TLabel;
editInvoiceAmount: TDBEdit;
lblDiscountAmount: TLabel;
editDiscountAmount: TDBEdit;
lblGLPeriod: TLabel;
editGLPeriod: TDBEdit;
lblDiscPC: TLabel;
editDiscPC: TDBEdit;
lblPurchaseOrderNo: TLabel;
editPurchaseOrderNo: TDBEdit;
lblPaidAmount: TLabel;
editPaidAmount: TDBEdit;
lblOwing: TLabel;
editOwing: TDBEdit;
panelLeft: TPanel;
cboVendor: TDBLookupComboBox;
DBGrid1: TDBGrid;
panelRight: TPanel;
btnVendor: TSpeedButton;
txtAddress: TDBText;
editGLYear: TDBEdit;
txtTerms: TDBText;
tblAPInvDiscountTaken: TBooleanField;
tblAPInvCtl: TTable;
tblAPInvCtlNextInvoiceID: TIntegerField;
tblAPInvVendorID: TIntegerField;
editVendorNo: TEdit;
tblAPInvVendorNo: TStringField;
qryLastDetailLineNo: TQuery;
btnInvoiceDate: TSpeedButton;
btnDueDate: TSpeedButton;
btnDiscountDate: TSpeedButton;
tblAPInvAPInvoiceID: TIntegerField;
tblAPInvDetAPInvoiceID: TIntegerField;
tblAPInvPosted: TBooleanField;
PopupMenu1: TPopupMenu;
mnuNew: TMenuItem;
mnuDelete: TMenuItem;
lblPosted: TLabel;
tblAPInvAddress: TStringField;
tblAPInvTerms: TStringField;
tblAPInvDelayDays: TIntegerField;
tblAPInvDiscDays: TIntegerField;
procedure btnOKClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Panel2DblClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnVendorClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1ColExit(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGrid1Exit(Sender: TObject);
procedure DBGrid1Enter(Sender: TObject);
procedure dsAPInvUpdateData(Sender: TObject);
procedure editInvoiceDateKeyPress(Sender: TObject; var Key: Char);
procedure tblAPInvInvoiceDateChange(Sender: TField);
procedure editDueDateKeyPress(Sender: TObject; var Key: Char);
procedure editDiscountDateKeyPress(Sender: TObject; var Key: Char);
procedure tblAPInvVendorIDChange(Sender: TField);
procedure cboVendorKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure dsAPInvDataChange(Sender: TObject; Field: TField);
procedure tblAPInvInvoiceAmountChange(Sender: TField);
procedure tblAPInvDiscPCChange(Sender: TField);
procedure editDiscountAmountKeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure tblAPInvDetNewRecord(DataSet: TDataSet);
procedure tblAPInvNewRecord(DataSet: TDataSet);
procedure tblAPInvUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure tblAPInvDetUpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure tblAPInvDetGLAccountValidate(Sender: TField);
procedure editVendorNoExit(Sender: TObject);
procedure editVendorNoKeyPress(Sender: TObject; var Key: Char);
procedure tblAPInvBeforeInsert(DataSet: TDataSet);
procedure tblAPInvBeforeEdit(DataSet: TDataSet);
procedure tblAPInvDetBeforePost(DataSet: TDataSet);
procedure tblAPInvDetBeforeEdit(DataSet: TDataSet);
procedure tblAPInvDetBeforeInsert(DataSet: TDataSet);
procedure tblAPInvDetBeforeDelete(DataSet: TDataSet);
procedure tblAPInvGLYearGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure tblAPInvGLYearSetText(Sender: TField; const Text: string);
procedure tblAPInvBeforePost(DataSet: TDataSet);
procedure tblAPInvDetAfterPost(DataSet: TDataSet);
procedure tblAPInvDetAfterDelete(DataSet: TDataSet);
procedure btnInvoiceDateClick(Sender: TObject);
procedure btnDueDateClick(Sender: TObject);
procedure btnDiscountDateClick(Sender: TObject);
procedure DBGrid1EditButtonClick(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure mnuNewClick(Sender: TObject);
procedure mnuDeleteClick(Sender: TObject);
procedure tblAPInvVendorIDValidate(Sender: TField);
procedure DBGrid1ColEnter(Sender: TObject);
procedure tblAPInvInvoiceDateSetText(Sender: TField;
const Text: string);
procedure tblAPInvDueDateSetText(Sender: TField; const Text: string);
procedure tblAPInvDiscountDateSetText(Sender: TField;
const Text: string);
private
{ Private declarations }
NextDetailLineNo: Integer;
TotalGLAmount, OldGLAmount: Currency;
public
{ Public declarations }
end;
var
frmAPInvoice: TfrmAPInvoice;
implementation
uses BS1Form, APInvoicesForm, VendorsForm, CalendarForm,
GLAccountSearchForm, VendorsFilterForm, LookUpsData;
var
intClientHeight, intClientWidth: Integer;
{$R *.DFM}
procedure TfrmAPInvoice.btnOKClick(Sender: TObject);
begin
if tblAPInv.State in [dsInsert, dsEdit] then tblAPInv.post;
if tblAPInvDet.State in [dsInsert, dsEdit] then tblAPInvDet.post;
tblAPInv.Database.ApplyUpdates([tblAPInv, tblAPInvDet]);
DbiSaveChanges(tblAPInv.handle);
DbiSaveChanges(tblAPInvDet.handle);
try
with frmAPInvoices.qryAPInv do begin close; open; end; //Refresh, etc.
frmAPInvoices.qryAPInv.Locate('APInvoiceID', tblAPInvAPInvoiceID.value, []);
except; end;
if (tblAPInv.UpdatesPending = false) and (tblAPInvDet.UpdatesPending = false) then Close;
end;
procedure TfrmAPInvoice.btnCancelClick(Sender: TObject);
begin
tblAPInv.DisableControls;
tblAPInv.cancel;
tblAPInv.CancelUpdates;
tblAPInvDet.cancel;
tblAPInvDet.CancelUpdates;
Close;
end;
procedure TfrmAPInvoice.FormCreate(Sender: TObject);
var
x, intHeightAdjustment: integer;
begin
tblAPInv.DatabaseName := strDatabaseName;
tblAPInvCtl.DatabaseName := strDatabaseName;
tblAPInvDet.DatabaseName := strDatabaseName;
//tblVendor.DatabaseName := strDatabaseName;
//tblGLAccnt.DatabaseName := strDatabaseName;
qryLastDetailLineNo.DatabaseName := strDatabaseName;
tblAPInv.Active := true;
tblAPInvDet.Active := true;
//tblVendor.Active := true; //Data Module used instead.
//tblGLAccnt.Active := true; //Data Module used instead.
tblAPInv.Database.TransIsolation := tiDirtyRead;
editPurchaseOrderNo.visible := frmBS1.tblCompanyAPInvPONumbers.value;
lblPurchaseOrderNo.visible := frmBS1.tblCompanyAPInvPONumbers.value;
editDescription.visible := frmBS1.tblCompanyAPInvDescriptions.value;
lblDescription.visible := frmBS1.tblCompanyAPInvDescriptions.value;
if frmBS1.tblCompanyAPInvDescriptions.value = false then begin
intHeightAdjustment := Trunc(24*FontFactor);
editInvoiceAmount.Top := editInvoiceAmount.Top - intHeightAdjustment;
lblInvoiceAmount.Top := lblInvoiceAmount.Top - intHeightAdjustment;
editPaidAmount.Top := editPaidAmount.Top - intHeightAdjustment;
lblPaidAmount.Top := lblPaidAmount.Top - intHeightAdjustment;
editOwing.Top := editOwing.Top - intHeightAdjustment;
lblOwing.Top := lblOwing.Top - intHeightAdjustment;
editInvoiceDate.Top := editInvoiceDate.Top - intHeightAdjustment;
lblInvoiceDate.Top := lblInvoiceDate.Top - intHeightAdjustment;
btnInvoiceDate.Top := btnInvoiceDate.Top - intHeightAdjustment;
editDueDate.Top := editDueDate.Top - intHeightAdjustment;
lblDueDate.Top := lblDueDate.Top - intHeightAdjustment;
btnDueDate.Top := btnDueDate.Top - intHeightAdjustment;
editDiscountDate.Top := editDiscountDate.Top - intHeightAdjustment;
lblDiscountDate.Top := lblDiscountDate.Top - intHeightAdjustment;
btnDiscountDate.Top := btnDiscountDate.Top - intHeightAdjustment;
editGLPeriod.Top := editGLPeriod.Top - intHeightAdjustment;
lblGLPeriod.Top := lblGLPeriod.Top - intHeightAdjustment;
editGLYear.Top := editGLYear.Top - intHeightAdjustment;
editDiscPC.Top := editDiscPC.Top - intHeightAdjustment;
lblDiscPC.Top := lblDiscPC.Top - intHeightAdjustment;
editDiscountAmount.Top := editDiscountAmount.Top - intHeightAdjustment;
lblDiscountAmount.Top := lblDiscountAmount.Top - intHeightAdjustment;
ClientHeight := ClientHeight - intHeightAdjustment;
panel1.height := panel1.height - intHeightAdjustment;
end;
if FontFactor <> 1 then begin //If using large fonts, resize form.
//intClientWidth := Trunc(13*FontFactor) + Trunc(20*FontFactor) + DBGrid1.Columns.Count -1 + panelLeft.width + panelRight.width + (panelMiddle.borderWidth)*2; //Row selector + scrollbar + grid lines + borders.
for x := 0 to DBGrid1.Columns.Count - 1 do begin
DBGrid1.Columns[x].width := Trunc(DBGrid1.Columns[x].width*FontFactor);
//intClientWidth := intClientWidth + DBGrid1.Columns[x].width;
end;
//ClientWidth := intClientWidth;
ClientHeight := Trunc(ClientHeight*FontFactor);
ClientWidth := Trunc(ClientWidth*FontFactor);
end;
intClientHeight := ClientHeight; //Store form size.
intClientWidth := ClientWidth;
end;
procedure TfrmAPInvoice.Panel2DblClick(Sender: TObject);
begin
ClientHeight := intClientHeight; //Resize form.
ClientWidth := intClientWidth;
end;
procedure TfrmAPInvoice.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if (tblAPInv.State in [dsInsert, dsEdit]) or (tblAPInvDet.State in [dsInsert, dsEdit])
or (tblAPInv.UpdatesPending = true) or (tblAPInvDet.UpdatesPending = true) then btnOKClick(sender);
try frmAPInvoices.DBGrid1.Setfocus; except; end;
Action := caFree;
end;
procedure TfrmAPInvoice.btnVendorClick(Sender: TObject);
var
aComponent: TComponent;
begin
screen.cursor := crHourglass;
aComponent := Application.FindComponent('frmVendors');
if Assigned (aComponent) then try frmVendors.qryVendor.close; frmVendors.qryVendor.open; except; end
else frmVendors := TfrmVendors.Create(Application);
aComponent := Application.FindComponent('frmVendorsFilter');
if Assigned (aComponent) then try frmVendorsFilter.btnResetClick(sender); except; end;
frmVendors.mnuFilter.Checked := false;
frmVendors.qryVendor.Filtered := false;
frmVendors.tblVendor.Filtered := false;
if frmVendors.WindowState = wsMinimized then frmVendors.WindowState := wsNormal;
if frmVendors.visible = true then frmVendors.FormShow(sender)
else frmVendors.Show;
if not frmVendors.qryVendor.Locate('VendorID', tblAPInvVendorID.value, []) then frmVendors.qryVendor.First;
screen.cursor := crDefault;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -