⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apinvoiceform.pas

📁 功能全面的商业财会系统源码,清晰,很有参考价值.扩展性强.
💻 PAS
📖 第 1 页 / 共 3 页
字号:
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 + -