📄 arinvoiceform.pas
字号:
tblARInvInvoiceAmount.AsCurrency := tblARInvInvoiceAmount.value - OldExtAmount + tblARInvDetExtAmount.value - OldTaxAmount + Tax1Amount + Tax2Amount;
end;
procedure TfrmARInvoice.tblARInvDetAfterDelete(DataSet: TDataSet);
var
TaxCode: string;
OldTaxAmount: currency;
begin
TaxCode := Copy(OldTaxCodes,1,1); if TaxCode <> '' then CalcTaxableAmount(TaxCode,-OldExtAmount, tblARInvTaxableAmtCode1, tblARInvTaxableAmtCode2, tblARInvTaxableAmtCode3, tblARInvTaxableAmount1, tblARInvTaxableAmount2, tblARInvTaxableAmount3);
TaxCode := Copy(OldTaxCodes,2,1); if TaxCode <> '' then CalcTaxableAmount(TaxCode,-OldExtAmount, tblARInvTaxableAmtCode1, tblARInvTaxableAmtCode2, tblARInvTaxableAmtCode3, tblARInvTaxableAmount1, tblARInvTaxableAmount2, tblARInvTaxableAmount3);
TaxCode := Copy(OldTaxCodes,3,1); if TaxCode <> '' then CalcTaxableAmount(TaxCode,-OldExtAmount, tblARInvTaxableAmtCode1, tblARInvTaxableAmtCode2, tblARInvTaxableAmtCode3, tblARInvTaxableAmount1, tblARInvTaxableAmount2, tblARInvTaxableAmount3);
OldTaxAmount := Tax1Amount + Tax2Amount;
//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);
tblARInvInvoiceAmount.AsCurrency := tblARInvInvoiceAmount.value - OldExtAmount - OldTaxAmount + Tax1Amount + Tax2Amount;
if tblARInvDet.RecordCount = 0 then begin //Reset.
tblARInvInvoiceAmount.AsVariant := null;
tblARInvTaxableAmount1.AsVariant := null;
tblARInvTaxableAmount2.AsVariant := null;
tblARInvTaxableAmount3.AsVariant := null;
tblARInvTaxableAmtCode1.AsVariant := null;
tblARInvTaxableAmtCode2.AsVariant := null;
tblARInvTaxableAmtCode3.AsVariant := null;
Tax1Amount := 0;
Tax2Amount := 0;
end;
end;
procedure TfrmARInvoice.btnInvoiceDateClick(Sender: TObject);
begin
frmCalendar.caption := 'Invoice Date';
if tblARInvInvoiceDate.AsVariant <> null then frmCalendar.date := tblARInvInvoiceDate.value
else frmCalendar.date := Date;
if frmCalendar.ShowModal = mrOk then begin
tblARInv.Edit;
tblARInvInvoiceDate.value := frmCalendar.Date;
end;
editInvoiceDate.setfocus;
editInvoiceDate.SelectAll;
end;
procedure TfrmARInvoice.DBGrid1EditButtonClick(Sender: TObject);
var
aComponent: TComponent;
begin
if DBGrid1.SelectedField = tblARInvDetItemNo then begin
screen.cursor := crHourglass;
aComponent := Application.FindComponent('frmItemSearch');
if not Assigned (aComponent) then frmItemSearch := TfrmItemSearch.Create(Application);
frmItemSearch.ItemNo := tblARInvDetItemNo.value;
screen.cursor := crDefault;
if frmItemSearch.ShowModal = mrOk then begin
tblARInvDet.Edit;
tblARInvDetItemNo.value := frmItemSearch.ItemNo;
end;
end;
end;
procedure TfrmARInvoice.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = ^J) and (DBGrid1.SelectedField = tblARInvDetItemNo) then begin //Ctrl+Enter show Item Search.
Key := #0;
try DBGrid1EditButtonClick(sender); except; end;
end;
end;
procedure TfrmARInvoice.mnuNewClick(Sender: TObject);
begin
tblARInvDet.append;
DBGrid1.SelectedIndex := 0;
end;
procedure TfrmARInvoice.mnuDeleteClick(Sender: TObject);
begin
try tblARInvDet.delete; except; end;
end;
procedure TfrmARInvoice.DBGrid1ColEnter(Sender: TObject);
begin
if (DBGrid1.Focused = true) //Prevent problem when Shift Tab out of grid, ColEnter (on last column) fires after GridExit.
and (DBGrid1.SelectedIndex >0) then DBGrid1.Options := [dgEditing,dgAlwaysShowEditor,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit]; //Toggle dgAlwaysShowEditor to prevent 1st field from being left-justified if always dgAlwaysShowEditor.
end;
procedure TfrmARInvoice.tblARInvCustomerIDChange(Sender: TField);
var
OldTaxAmount: currency;
begin
if (tblARInvCustomerID.AsVariant <> null) then begin
txtAddress.Visible := true;
txtTerms.Visible := true;
if dmLookUps.tblCustomerTax1ExemptionNo.value = '' then tblARInvTax1ID.value := dmLookUps.tblCustomerTax1ID.value
else tblARInvTax1ID.AsVariant := null;
if dmLookUps.tblCustomerTax2ExemptionNo.value = '' then tblARInvTax2ID.value := dmLookUps.tblCustomerTax2ID.value
else tblARInvTax2ID.AsVariant := null;
if (dmLookUps.tblCustomerBillToNo.AsVariant = null) or (dmLookUps.tblCustomerCustomerNo.value = dmLookUps.tblCustomerBillToNo.value) then begin
tblARInvBillToID.value := tblARInvCustomerID.value;
tblARInvDiscPC.value := dmLookUps.tblCustomerDiscPC.value;
tblARInvDiscDays.value := dmLookUps.tblCustomerDiscDays.value;
tblARInvNetDays.value := dmLookUps.tblCustomerNetDays.value;
tblARInvCOD.value := dmLookUps.tblCustomerCOD.value;
editBillToNo.text := 'Same';
editBillToName.text := '';
lblBillToAddress.caption := '';
end else begin
tblBillTo.Active := true;
if tblBillTo.Locate('CustomerNo', dmLookUps.tblCustomerBillToNo.value, []) = true then begin
tblARInvBillToID.value := tblBillToCustomerID.value;
tblARInvDiscPC.value := tblBillToDiscPC.value;
tblARInvDiscDays.value := tblBillToDiscDays.value;
tblARInvNetDays.value := tblBillToNetDays.value;
tblARInvCOD.value := tblBillToCOD.value;
editBillToNo.text := tblBillToCustomerNo.value;
editBillToName.text := tblBillToCustomerName.value;
lblBillToAddress.caption := tblBillToAddress.value;
end else begin
tblARInvBillToID.value := tblARInvCustomerID.value;
tblARInvDiscPC.value := dmLookUps.tblCustomerDiscPC.value;
tblARInvDiscDays.value := dmLookUps.tblCustomerDiscDays.value;
tblARInvNetDays.value := dmLookUps.tblCustomerNetDays.value;
tblARInvCOD.value := dmLookUps.tblCustomerCOD.value;
editBillToNo.text := 'Same';
editBillToName.text := '';
lblBillToAddress.caption := '';
end;
end;
end else begin
tblARInvTax1ID.AsVariant := null;
tblARInvTax2ID.AsVariant := null;
txtAddress.Visible := false;
txtTerms.Visible := false;
tblARInvDiscPC.AsVariant := null;
tblARInvDiscDays.AsVariant := null;
tblARInvNetDays.AsVariant := null;
tblARInvCOD.AsVariant := null;
tblARInvBillToID.AsVariant := null;
editBillToNo.text := '';
editBillToName.text := '';
lblBillToAddress.caption := '';
end;
OldTaxAmount := Tax1Amount + Tax2Amount;
//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);
tblARInvInvoiceAmount.AsCurrency := tblARInvInvoiceAmount.value - OldTaxAmount + Tax1Amount + Tax2Amount;
end;
procedure TfrmARInvoice.tblARInvCustomerIDValidate(Sender: TField);
begin
if tblARInvCustomerID.AsVariant = null then exit;
if dmLookUps.tblCustomer.Locate('CustomerID', tblARInvCustomerID.value, []) <> true then begin //Catch bad ship-to selected via combobox.
raise(Exception.Create('Ship-to not found'));
end;
if dmLookUps.tblCustomerSuspended.value = true then raise(exception.create('Customer ' + '''' + dmLookUps.tblCustomerCustomerNo.value + ': ' + dmLookUps.tblCustomerCustomerName.value + '''' + ' has been suspended'));
if dmLookUps.tblCustomerBillToOnly.value = true then raise(exception.create('Customer ' + '''' + dmLookUps.tblCustomerCustomerNo.value + ': ' + dmLookUps.tblCustomerCustomerName.value + '''' + ' is specified as a "Bill-to Only"'));
if (dmLookUps.tblCustomerBillToNo.AsVariant <> null) then begin
tblBillTo.open;
if tblBillTo.Lookup('CustomerNo', dmLookUps.tblCustomerBillToNo.value, 'Suspended') = true then raise(exception.create('Ship-to ' + '''' + dmLookUps.tblCustomerCustomerNo.value + ': ' + dmLookUps.tblCustomerCustomerName.value + '''' + ' bill-to has been suspended'));
end;
end;
procedure TfrmARInvoice.tblARInvDetCalcFields(DataSet: TDataSet);
begin
if (tblARInvDetQuantity.AsVariant = null) or (tblARInvDetUnitPrice.AsVariant = null) then tblARInvDetExtAmount.AsVariant := null
else tblARInvDetExtAmount.AsCurrency := frmBS1.RoundIt(tblARInvDetQuantity.value * tblARInvDetUnitPrice.value * 100)/100;
end;
procedure TfrmARInvoice.tblARInvDetItemNoValidate(Sender: TField);
var
LookupResults: Variant;
begin
if DBGrid1.SelectedIndex = 1 then begin
if DBGrid1.SelectedField.value = '' then exit;
LookupResults := dmLookUps.tblItem.Lookup('ItemNo', DBGrid1.SelectedField.value, 'Suspended');
if LookupResults = null then raise(exception.create('Item ' + '''' + DBGrid1.SelectedField.value + '''' + ' not found...' +#13 + 'Press Esc or enter a different item no'))
else if LookupResults = true then raise(exception.create('Item ' + '''' + DBGrid1.SelectedField.value + '''' + ' has been suspended'));
end else begin
if dmLookUps.tblItemSuspended.value = true then raise(exception.create('Item ' + '''' + dmLookUps.tblItemItemNo.value + ': ' + dmLookUps.tblItemItemDescription.value + '''' + ' has been suspended'));
end;
end;
procedure TfrmARInvoice.tblBillToCalcFields(DataSet: TDataSet);
begin
tblBillToAddress.value := tblBillToAddressLine1.value;
if tblBillToAddressLine2.value <> '' then tblBillToAddress.value := tblBillToAddress.value + ', ' + tblBillToAddressLine2.value;
if tblBillToCity.value <> '' then tblBillToAddress.value := tblBillToAddress.value + ', ' + tblBillToCity.value;
if tblBillToStateProv.value <> '' then tblBillToAddress.value := tblBillToAddress.value + ', ' + tblBillToStateProv.value;
if tblBillToZipCode.value <> '' then tblBillToAddress.value := tblBillToAddress.value + ', ' + tblBillToZipCode.value;
if tblBillToCountry.value <> '' then tblBillToAddress.value := tblBillToAddress.value + ', ' + tblBillToCountry.value;
end;
procedure TfrmARInvoice.tblARInvCalcFields(DataSet: TDataSet);
begin
tblARInvTerms.AsString := 'Terms: ';
if tblARInvCOD.value = true then tblARInvTerms.AsString := tblARInvTerms.AsString + 'C.O.D.'
else begin
if tblARInvDiscPC.value >0 then
if tblARInvDiscDays.AsVariant = null then tblARInvTerms.AsString := tblARInvTerms.AsString + tblARInvDiscPC.AsString + '% ' + '0' + ' '
else tblARInvTerms.AsString := tblARInvTerms.AsString + tblARInvDiscPC.AsString + '% ' + tblARInvDiscDays.AsString + ' ';
if tblARInvNetDays.AsVariant = null then tblARInvTerms.AsString := tblARInvTerms.AsString + 'Net 0'
else tblARInvTerms.AsString := tblARInvTerms.AsString + 'Net ' + tblARInvNetDays.AsString;
end;
end;
procedure TfrmARInvoice.tblARInvDetItemNoChange(Sender: TField);
begin
tblARInvDetUnitPrice.AsCurrency := tblARInvDetItemUnitPrice.value; //Set default price to current item price.
tblARInvDetTaxCodes.value := tblARInvDetItemTaxCodes.value; //Store Tax Codes in case item changed in future.
end;
procedure TfrmARInvoice.tblARInvTax1IDChange(Sender: TField);
begin
tblARInvTax1Code.value := tblARInvTTax1Code.value; //Store Tax table tax code & current rate (in case changed in future).
tblARInvTax1Rate.value := tblARInvTTax1Rate.value;
end;
procedure TfrmARInvoice.tblARInvTax2IDChange(Sender: TField);
begin
tblARInvTax2Code.value := tblARInvTTax2Code.value; //Store Tax table tax code & current rate (in case changed in future).
tblARInvTax2Rate.value := tblARInvTTax2Rate.value;
end;
procedure TfrmARInvoice.tblARInvInvoiceDateSetText(Sender: TField;
const Text: string);
begin
tblARInvInvoiceDate.value := frmBS1.Date2000(Text);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -