📄 arinvoiceform.pas
字号:
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 + -