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

📄 arinvoiceform.pas

📁 功能全面的商业财会系统源码,清晰,很有参考价值.扩展性强.
💻 PAS
📖 第 1 页 / 共 4 页
字号:
unit ARInvoiceForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, DBGrids, ExtCtrls, DB, DBTables, Mask, DBCtrls, Buttons,
  Menus, BDE;

type
  TfrmARInvoice = class(TForm)
    Panel1: TPanel;
    panelMiddle: TPanel;
    Panel2: TPanel;
    Panel4: TPanel;
    btnOK: TButton;
    btnCancel: TButton;
    tblARInv: TTable;
    dsARInv: TDataSource;
    tblARInvDet: TTable;
    dsARInvDet: TDataSource;
    Label1: TLabel;
    Label2: TLabel;
    editInvoiceNo: TDBEdit;
    lblInvoiceDate: TLabel;
    editInvoiceDate: TDBEdit;
    lblInvoiceAmount: TLabel;
    editInvoiceAmount: TDBEdit;
    lblGLPeriod: TLabel;
    editGLPeriod: TDBEdit;
    lblPurchaseOrderNo: TLabel;
    editPurchaseOrderNo: TDBEdit;
    lblPaidAmount: TLabel;
    editPaidAmount: TDBEdit;
    lblOwing: TLabel;
    editOwing: TDBEdit;
    panelLeft: TPanel;
    cboCustomer: TDBLookupComboBox;
    DBGrid1: TDBGrid;
    panelRight: TPanel;
    btnCustomer: TSpeedButton;
    txtAddress: TDBText;
    editGLYear: TDBEdit;
    txtTerms: TDBText;
    tblARInvCtl: TTable;
    tblARInvCtlNextInvoiceID: TIntegerField;
    editCustomerNo: TEdit;
    qryLastDetailLineNo: TQuery;
    btnInvoiceDate: TSpeedButton;
    PopupMenu1: TPopupMenu;
    mnuNew: TMenuItem;
    mnuDelete: TMenuItem;
    lblPosted: TLabel;
    tblARInvARInvoiceID: TIntegerField;
    tblARInvCustomerID: TIntegerField;
    tblARInvBillToID: TIntegerField;
    tblARInvInvoiceNo: TStringField;
    tblARInvOriginalInvNo: TStringField;
    tblARInvInvoiceDate: TDateField;
    tblARInvInvoiceAmount: TCurrencyField;
    tblARInvPaidAmount: TCurrencyField;
    tblARInvDiscTakenAmount: TCurrencyField;
    tblARInvWriteOffAmount: TCurrencyField;
    tblARInvOwing: TCurrencyField;
    tblARInvDiscPC: TFloatField;
    tblARInvDiscDays: TSmallintField;
    tblARInvNetDays: TSmallintField;
    tblARInvCOD: TBooleanField;
    tblARInvPurchaseOrderNo: TStringField;
    tblARInvGLPeriod: TSmallintField;
    tblARInvGLYear: TSmallintField;
    tblARInvPrinted: TBooleanField;
    tblARInvPosted: TBooleanField;
    tblARInvDetARInvoiceID: TIntegerField;
    tblARInvDetSeq: TIntegerField;
    tblARInvDetQuantity: TFloatField;
    tblARInvDetUnitPrice: TCurrencyField;
    tblARInvDetTaxCodes: TStringField;
    tblARInvCtlNextInvoiceNo: TIntegerField;
    tblARInvCustomerNo: TStringField;
    tblARInvDetExtAmount: TCurrencyField;
    tblARInvDescription: TStringField;
    tblARInvDetItemNo: TStringField;
    tblARInvDetItemDescription: TStringField;
    Label3: TLabel;
    editOriginalInvNo: TDBEdit;
    Label4: TLabel;
    chkPrinted: TDBCheckBox;
    Label5: TLabel;
    editDescription: TDBEdit;
    tblBillTo: TTable;
    tblBillToCustomerID: TIntegerField;
    tblBillToCustomerNo: TStringField;
    tblBillToCustomerName: TStringField;
    tblBillToAddressLine1: TStringField;
    tblBillToAddressLine2: TStringField;
    tblBillToCity: TStringField;
    tblBillToStateProv: TStringField;
    tblBillToZipCode: TStringField;
    tblBillToCountry: TStringField;
    tblBillToDiscPC: TFloatField;
    tblBillToDiscDays: TSmallintField;
    tblBillToNetDays: TSmallintField;
    tblBillToCOD: TBooleanField;
    tblBillToSuspended: TBooleanField;
    tblBillToAddress: TStringField;
    tblARInvTerms: TStringField;
    editBillToNo: TEdit;
    editBillToName: TEdit;
    lblBillToAddress: TLabel;
    tblARInvAddress: TStringField;
    tblARInvDetItemUnitPrice: TCurrencyField;
    tblARInvDetItemTaxCodes: TStringField;
    tblARInvTax1ID: TIntegerField;
    tblARInvTax2ID: TIntegerField;
    tblARInvTax1Code: TStringField;
    tblARInvTax2Code: TStringField;
    tblARInvTax1Rate: TFloatField;
    tblARInvTax2Rate: TFloatField;
    tblARInvTaxableAmount1: TCurrencyField;
    tblARInvTaxableAmount2: TCurrencyField;
    tblARInvTaxableAmount3: TCurrencyField;
    tblARInvTaxableAmtCode1: TStringField;
    tblARInvTaxableAmtCode2: TStringField;
    tblARInvTaxableAmtCode3: TStringField;
    tblARInvTTax1Code: TStringField;
    tblARInvTTax2Code: TStringField;
    tblARInvTTax1Rate: TFloatField;
    tblARInvTTax2Rate: TFloatField;
    tblARInvTax1Description: TStringField;
    tblARInvTax2Description: TStringField;
    lblTaxes: TLabel;
    tblARInvDetItemOvDesc: TStringField;
    procedure btnOKClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Panel2DblClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnCustomerClick(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 dsARInvUpdateData(Sender: TObject);
    procedure editInvoiceDateKeyPress(Sender: TObject; var Key: Char);
    procedure cboCustomerKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dsARInvDataChange(Sender: TObject; Field: TField);
    procedure tblARInvInvoiceAmountChange(Sender: TField);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure tblARInvDetNewRecord(DataSet: TDataSet);
    procedure tblARInvNewRecord(DataSet: TDataSet);
    procedure tblARInvUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure tblARInvDetUpdateError(DataSet: TDataSet; E: EDatabaseError;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure editCustomerNoExit(Sender: TObject);
    procedure editCustomerNoKeyPress(Sender: TObject; var Key: Char);
    procedure tblARInvBeforeInsert(DataSet: TDataSet);
    procedure tblARInvBeforeEdit(DataSet: TDataSet);
    procedure tblARInvDetBeforePost(DataSet: TDataSet);
    procedure tblARInvDetBeforeEdit(DataSet: TDataSet);
    procedure tblARInvDetBeforeInsert(DataSet: TDataSet);
    procedure tblARInvDetBeforeDelete(DataSet: TDataSet);
    procedure tblARInvGLYearGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure tblARInvGLYearSetText(Sender: TField; const Text: string);
    procedure tblARInvBeforePost(DataSet: TDataSet);
    procedure tblARInvDetAfterPost(DataSet: TDataSet);
    procedure tblARInvDetAfterDelete(DataSet: TDataSet);
    procedure btnInvoiceDateClick(Sender: TObject);
    procedure DBGrid1EditButtonClick(Sender: TObject);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure mnuNewClick(Sender: TObject);
    procedure mnuDeleteClick(Sender: TObject);
    procedure DBGrid1ColEnter(Sender: TObject);
    procedure tblARInvCustomerIDChange(Sender: TField);
    procedure tblARInvCustomerIDValidate(Sender: TField);
    procedure tblARInvDetCalcFields(DataSet: TDataSet);
    procedure tblARInvDetItemNoValidate(Sender: TField);
    procedure tblBillToCalcFields(DataSet: TDataSet);
    procedure tblARInvCalcFields(DataSet: TDataSet);
    procedure tblARInvDetItemNoChange(Sender: TField);
    procedure tblARInvTax1IDChange(Sender: TField);
    procedure tblARInvTax2IDChange(Sender: TField);
    procedure tblARInvInvoiceDateSetText(Sender: TField;
      const Text: string);
  private
    { Private declarations }
    OldExtAmount, Tax1Amount, Tax2Amount: Currency;
    OldTaxCodes: String;
    NextDetailLineNo: Integer;
  public
    { Public declarations }
    procedure GetBillToData;   //Called from calling form if showing an existing invoice.
    //procedure CalcTax(tblARInvTax1Code, tblARInvTax2Code, tblARInvTax1Description, tblARInvTax2Description, tblARInvTaxableAmtCode1, tblARInvTaxableAmtCode2, tblARInvTaxableAmtCode3: TStringField; tblARInvTax1Rate, tblARInvTax2Rate: TFloatField;
    //tblARInvTaxableAmount1, tblARInvTaxableAmount2, tblARInvTaxableAmount3: TCurrencyField);   //Called from calling form (via GetBillToData) if showing an existing invoice.
end;

var
  frmARInvoice: TfrmARInvoice;

implementation

uses BS1Form, ARInvoicesForm, CustomersForm, CustomersFilterForm, CalendarForm, ItemSearchForm,
  LookUpsData;

var
  intClientHeight, intClientWidth: Integer;

{$R *.DFM}

procedure TfrmARInvoice.GetBillToData;
begin
  editBillToNo.text := 'Same';
  editBillToName.text := '';
  lblBillToAddress.caption := '';
  if tblARInvCustomerID.value <> tblARInvBillToID.value then begin
    tblBillTo.Active := true;
    if tblBillTo.Locate('CustomerID', tblARInvBillToID.value, []) = true then begin
      editBillToNo.text := tblBillToCustomerNo.value;
      editBillToName.text := tblBillToCustomerName.value;
      lblBillToAddress.caption := tblBillToAddress.value;
    end;
  end;

  //calcTax(tblARInvTax1Code, tblARInvTax2Code, tblARInvTax1Description, tblARInvTax2Description, tblARInvTaxableAmtCode1,
  // tblARInvTaxableAmtCode2, tblARInvTaxableAmtCode3, tblARInvTax1Rate, tblARInvTax2Rate, tblARInvTaxableAmount1, tblARInvTaxableAmount2, tblARInvTaxableAmount3);
  if tblARInvTax1Code.value = tblARInvTaxableAmtCode1.value then Tax1Amount := frmBS1.RoundIt(tblARInvTaxableAmount1.value * tblARInvTax1Rate.value)/100
  else if tblARInvTax1Code.value = tblARInvTaxableAmtCode2.value then Tax1Amount := frmBS1.RoundIt(tblARInvTaxableAmount2.value * tblARInvTax1Rate.value)/100
  else if tblARInvTax1Code.value = tblARInvTaxableAmtCode3.value then Tax1Amount := frmBS1.RoundIt(tblARInvTaxableAmount3.value * tblARInvTax1Rate.value)/100
  else Tax1Amount := 0;
  if tblARInvTax2Code.value = tblARInvTaxableAmtCode1.value then Tax2Amount := frmBS1.RoundIt(tblARInvTaxableAmount1.value * tblARInvTax2Rate.value)/100
  else if tblARInvTax2Code.value = tblARInvTaxableAmtCode2.value then Tax2Amount := frmBS1.RoundIt(tblARInvTaxableAmount2.value * tblARInvTax2Rate.value)/100
  else if tblARInvTax2Code.value = tblARInvTaxableAmtCode3.value then Tax2Amount := frmBS1.RoundIt(tblARInvTaxableAmount3.value * tblARInvTax2Rate.value)/100
  else Tax2Amount := 0;
  if Tax1Amount <> 0 then lblTaxes.caption := tblARInvTax1Description.value + ': ' + FloatToStrF(Tax1Amount,ffCurrency,18,2) + '     '
  else lblTaxes.caption := '';
  if Tax2Amount <> 0 then lblTaxes.caption := lblTaxes.caption + tblARInvTax2Description.value + ': ' + FloatToStrF(Tax2Amount,ffCurrency,18,2);
end;

procedure CalcTaxableAmount(TaxCode: string; Amount: currency; tblARInvTaxableAmtCode1, tblARInvTaxableAmtCode2, tblARInvTaxableAmtCode3: TStringField; tblARInvTaxableAmount1, tblARInvTaxableAmount2, tblARInvTaxableAmount3: TCurrencyField);
begin
  if TaxCode = tblARInvTaxableAmtCode1.value then begin
    tblARInvTaxableAmount1.AsCurrency := tblARInvTaxableAmount1.value + Amount;
    if tblARInvTaxableAmount1.value = 0 then tblARInvTaxableAmtCode1.AsVariant := null;
  end else if TaxCode = tblARInvTaxableAmtCode2.value then begin
    tblARInvTaxableAmount2.AsCurrency := tblARInvTaxableAmount2.value + Amount;
    if tblARInvTaxableAmount2.value = 0 then tblARInvTaxableAmtCode2.AsVariant := null;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -