📄 ba120.pas
字号:
unit BA120;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Single, Menus, Db, DBTables, Grids, DBGrids, Buttons, ExtCtrls, StdCtrls,
Mask, DBCtrls, ComCtrls;
type
TfmBA120 = class(TfmSingle)
qyMasterCompanyID: TStringField;
qyMasterCustomerID: TStringField;
qyMasterCustomerAttribName: TStringField;
qyMasterCustomerName: TStringField;
qyMasterInvoiceNo: TStringField;
qyMasterCustomerTypeID: TStringField;
qyMasterCustomerTypeName: TStringField;
qyMasterRegionID: TStringField;
qyMasterRegionName: TStringField;
qyMasterOwner: TStringField;
qyMasterRocID: TStringField;
qyMasterContactPhone1: TStringField;
qyMasterContactPhone2: TStringField;
qyMasterFax: TStringField;
qyMasterSalesManID: TStringField;
qyMasterChineseName: TStringField;
qyMasterCustomerAddressID: TStringField;
qyMasterCustomerAddressDescription: TStringField;
qyMasterDeliveryAddressID: TStringField;
qyMasterDeliveryAddressDescription: TStringField;
qyMasterInvoiceAddressID: TStringField;
qyMasterInvoiceAddressDescription: TStringField;
qyMasterPaymentTerm: TStringField;
qyMasterPayDays: TBCDField;
qyMasterCustomerPayDate: TStringField;
qyMasterCreditLine: TBCDField;
qyMasterCreditBalance: TBCDField;
qyMasterCustomerClass: TStringField;
qyMasterAdvance: TBCDField;
qyMasterCreateMan: TStringField;
qyMasterCreateDate: TStringField;
qyMasterCreateTime: TStringField;
qyMasterModifyMan: TStringField;
qyMasterModifyDate: TStringField;
qyMasterModifyTime: TStringField;
Label1: TLabel;
Label2: TLabel;
ED2: TDBEdit;
Label3: TLabel;
ED3: TDBEdit;
PageCtl: TPageControl;
TabA: TTabSheet;
TabB: TTabSheet;
TabC: TTabSheet;
ED9: TDBEdit;
Label9: TLabel;
Label11: TLabel;
EDB: TDBEdit;
Label12: TLabel;
EDC: TDBEdit;
Label13: TLabel;
EDD: TDBEdit;
EDA: TDBEdit;
Label10: TLabel;
Label4: TLabel;
ED8: TDBEdit;
Label5: TLabel;
Label14: TLabel;
Label8: TLabel;
ED4DES: TDBEdit;
ED5: TDBEdit;
ED5DES: TDBEdit;
ED4: TDBEdit;
Label27: TLabel;
DBEdit26: TDBEdit;
Label26: TLabel;
EDL: TDBEdit;
Label25: TLabel;
EDK: TDBEdit;
Label24: TLabel;
EDJ: TDBEdit;
Label23: TLabel;
Label6: TLabel;
DBEdit1: TDBEdit;
Label29: TLabel;
Label28: TLabel;
sbRegionID: TSpeedButton;
sbSalesManID: TSpeedButton;
ED7: TDBComboBox;
ED6: TDBEdit;
DBEdit30: TDBEdit;
sbCustomerTypeID: TSpeedButton;
DBEdit29: TDBEdit;
DBEdit28: TDBEdit;
DBEdit21: TDBEdit;
EDG: TDBEdit;
Label20: TLabel;
DBEdit19: TDBEdit;
EDF: TDBEdit;
Label18: TLabel;
DBEdit17: TDBEdit;
EDE: TDBEdit;
Label16: TLabel;
sbCustomerAddressID: TSpeedButton;
sbDeliveryAddressID: TSpeedButton;
sbInvoiceAddressID: TSpeedButton;
qyCustomerContact: TQuery;
qyCustomerAddress: TQuery;
Panel2: TPanel;
Panel5: TPanel;
qyCustomerContactCompanyID: TStringField;
qyCustomerContactCustomerID: TStringField;
qyCustomerContactContactID: TStringField;
qyCustomerContactChineseName: TStringField;
qyCustomerContactEnglishName: TStringField;
qyCustomerContactTitle: TStringField;
qyCustomerContactPhone: TStringField;
qyCustomerContactMobilePhone: TStringField;
qyCustomerContactEMail: TStringField;
qyCustomerContactLiaisonRedLetterDate: TStringField;
qyCustomerContactRedLetterDateDescription: TStringField;
dsCustomerContact: TDataSource;
Label7: TLabel;
EDQ: TDBEdit;
Label15: TLabel;
EDR: TDBEdit;
Label17: TLabel;
EDS: TDBEdit;
Label19: TLabel;
EDT: TDBEdit;
Label21: TLabel;
EDM: TDBEdit;
Label30: TLabel;
EDN: TDBEdit;
Label31: TLabel;
EDO: TDBEdit;
Label32: TLabel;
EDP: TDBEdit;
gdCustomerContact: TDBGrid;
qyCustomerAddressCompanyID: TStringField;
qyCustomerAddressCustomerID: TStringField;
qyCustomerAddressAddressID: TStringField;
qyCustomerAddressAddressDescription: TStringField;
qyCustomerAddressPostalCode: TStringField;
qyCustomerAddressLine1: TStringField;
qyCustomerAddressLine2: TStringField;
qyCustomerAddressLine3: TStringField;
Label33: TLabel;
EDU: TDBEdit;
dsCustomerAddress: TDataSource;
Label34: TLabel;
EDV: TDBEdit;
Label35: TLabel;
EDW: TDBEdit;
Label36: TLabel;
EDX: TDBEdit;
Label37: TLabel;
EDY: TDBEdit;
Label38: TLabel;
EDZ: TDBEdit;
DBGrid2: TDBGrid;
usCustomerContact: TUpdateSQL;
usCustomerAddress: TUpdateSQL;
Panel6: TPanel;
ngCustomerAddress: TDBNavigator;
Panel7: TPanel;
ngCustomerContact: TDBNavigator;
qyMasterInvoiceType: TStringField;
qyCustAddress: TQuery;
StringField3: TStringField;
StringField4: TStringField;
qyMasterLastDeliveryDate: TStringField;
rgPaymentTerm: TDBRadioGroup;
rgInvoiceType: TDBRadioGroup;
procedure qyMasterNewRecord(DataSet: TDataSet);
procedure qyMasterBeforePost(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure qyCustomerContactBeforeOpen(DataSet: TDataSet);
procedure qyCustomerContactNewRecord(DataSet: TDataSet);
procedure qyCustomerContactBeforeInsert(DataSet: TDataSet);
procedure qyCustomerContactBeforeEdit(DataSet: TDataSet);
procedure qyCustomerContactBeforeDelete(DataSet: TDataSet);
procedure qyCustomerContactBeforePost(DataSet: TDataSet);
procedure qyCustomerContactAfterPost(DataSet: TDataSet);
procedure qyCustomerContactAfterDelete(DataSet: TDataSet);
procedure dsCustomerContactStateChange(Sender: TObject);
procedure qyCustomerContactAfterInsert(DataSet: TDataSet);
procedure qyCustomerAddressBeforeOpen(DataSet: TDataSet);
procedure qyCustomerAddressNewRecord(DataSet: TDataSet);
procedure qyCustomerAddressBeforeInsert(DataSet: TDataSet);
procedure qyCustomerAddressBeforeEdit(DataSet: TDataSet);
procedure qyCustomerAddressBeforeDelete(DataSet: TDataSet);
procedure qyCustomerAddressBeforePost(DataSet: TDataSet);
procedure qyCustomerAddressAfterPost(DataSet: TDataSet);
procedure qyCustomerAddressAfterDelete(DataSet: TDataSet);
procedure dsCustomerAddressStateChange(Sender: TObject);
procedure ED7Exit(Sender: TObject);
procedure EDLExit(Sender: TObject);
procedure qyMasterSalesManIDValidate(Sender: TField);
procedure qyMasterRegionIDValidate(Sender: TField);
procedure qyMasterCustomerTypeIDValidate(Sender: TField);
procedure qyMasterCustomerAddressIDValidate(Sender: TField);
procedure qyMasterDeliveryAddressIDValidate(Sender: TField);
procedure qyMasterInvoiceAddressIDValidate(Sender: TField);
procedure qyMasterAfterScroll(DataSet: TDataSet);
procedure sbSalesManIDClick(Sender: TObject);
procedure sbRegionIDClick(Sender: TObject);
procedure sbCustomerTypeIDClick(Sender: TObject);
procedure sbCustomerAddressIDClick(Sender: TObject);
procedure sbDeliveryAddressIDClick(Sender: TObject);
procedure sbInvoiceAddressIDClick(Sender: TObject);
procedure dsMasterStateChange(Sender: TObject);
procedure qyCustomerAddressAfterInsert(DataSet: TDataSet);
procedure qyMasterUpdateRecord(DataSet: TDataSet;
UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
procedure qyCustAddressBeforeOpen(DataSet: TDataSet);
procedure qyMasterBeforeInsert(DataSet: TDataSet);
procedure qyMasterBeforeEdit(DataSet: TDataSet);
private
{ Private declarations }
function CanModifyCustomerContactAndAddress: Boolean;
procedure qyCustomerContactApplyUpdates;
procedure qyCustomerAddressApplyUpdates;
public
{ Public declarations }
procedure OpenDB; override;
end;
var
fmBA120: TfmBA120;
implementation
uses Main, DataModule, PublicFunction, CheckData, GetData, Procress,
Loading, BaseSearch;
var
fPrevCreditLine : Extended;
{$R *.DFM}
{ TfmBA120 }
procedure TfmBA120.FormCreate(Sender: TObject);
begin
inherited;
fPrevCreditLine := 0;
end;
procedure TfmBA120.OpenDB;
begin
qyMaster.Close;
OrderBySQL := 'M.CustomerID';
qyMaster.SQL.Text := SQLText;
qyMaster.Open;
qyCustomerContact.Open;
qyCustomerAddress.Open;
PageCtl.ActivePage := TabA;
end;
procedure TfmBA120.qyMasterNewRecord(DataSet: TDataSet);
begin
inherited;
with qyMaster do
begin
FieldByName('CustomerID').AsString := Space(8);
FieldByName('CustomerAttribName').AsString := Space(10);
FieldByName('CustomerName').AsString := Space(60);
FieldByName('InvoiceNo').AsString := Space(8);
FieldByName('CustomerTypeID').AsString := Space(2);
FieldByName('RegionID').AsString := Space(2);
FieldByName('Owner').AsString := Space(8);
FieldByName('RocID').AsString := Space(10);
FieldByName('ContactPhone1').AsString := Space(20);
FieldByName('ContactPhone2').AsString := Space(20);
FieldByName('Fax').AsString := Space(20);
FieldByName('SalesManID').AsString := Space(4);
FieldByName('CustomerAddressID').AsString := '00';
FieldByName('DeliveryAddressID').AsString := '00';
FieldByName('InvoiceAddressID').AsString := '00';
FieldByName('InvoiceType').AsString := '3';
FieldByName('PaymentTerm').AsString := '2';
FieldByName('PayDays').AsFloat := 30;
FieldByName('CustomerPayDate').AsString := '30';
FieldByName('CreditLine').AsFloat := 0;
FieldByName('CreditBalance').AsFloat := 0;
FieldByName('CustomerClass').AsString := 'B';
FieldByName('LastDeliveryDate').AsString := ' - - ';
FieldByName('Advance').AsFloat := 0;
end;
end;
procedure TfmBA120.qyMasterBeforePost(DataSet: TDataSet);
begin
inherited;
if qyCustomerContact.State in [dsInsert, dsEdit] then
qyCustomerContact.Post;
if qyCustomerAddress.State in [dsInsert, dsEdit] then
qyCustomerAddress.Post;
if qyMaster.State = dsInsert then
begin
if not MyMask(qyMaster.FieldByName('CustomerID').AsString, '########') then
begin
ED1.SetFocus;
Abort;
end;
with qyTemp do
begin
Close;
SQL.Clear;
SQL.Add('SELECT CustomerID ');
SQL.Add('FROM CustomerMaster ');
SQL.Add('WHERE CompanyID = :CompanyID AND CustomerID = :CustomerID ');
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('CustomerID').AsString := qyMaster.FieldByName('CustomerID').AsString;
Open;
end;
if qyTemp.FieldByName('CustomerID').AsString <> '' then
begin
RepeatWarning('客户代码');
ED1.SetFocus;
Abort;
end;
end;
if Trim(qyMaster.FieldByName('CustomerAttribName').AsString) = '' then
begin
NullWarning('客户简称');
ED2.SetFocus;
Abort;
end;
if not CheckSalesManID(qyMaster.FieldByName('SalesManID').AsString) then
begin
ED4.SetFocus;
Abort;
end;
if not CheckRegionID(qyMaster.FieldByName('RegionID').AsString) then
begin
ED5.SetFocus;
Abort;
end;
if not CheckCustomerTypeID(qyMaster.FieldByName('CustomerTypeID').AsString) then
begin
ED6.SetFocus;
Abort;
end;
if (Trim(qyMaster.FieldByName('InvoiceNo').AsString) <> '') and
(not MyMask(qyMaster.FieldByName('InvoiceNo').AsString, '99999999')) then
begin
PageCtl.ActivePage := TabA;
ED8.SetFocus;
Abort;
end;
if (Trim(qyMaster.FieldByName('RocID').AsString) <> '') and
(not CheckRocID(qyMaster.FieldByName('RocID').AsString)) then
begin
PageCtl.ActivePage := TabA;
EDA.SetFocus;
Abort;
end;
if not CheckAddressID(qyMaster.FieldByName('CustomerID').AsString,
qyMaster.FieldByName('CustomerAddressID').AsString) then
begin
PageCtl.ActivePage := TabA;
EDE.SetFocus;
Abort;
end;
if not CheckAddressID(qyMaster.FieldByName('CustomerID').AsString,
qyMaster.FieldByName('DeliveryAddressID').AsString) then
begin
PageCtl.ActivePage := TabA;
EDF.SetFocus;
Abort;
end;
if not CheckAddressID(qyMaster.FieldByName('CustomerID').AsString,
qyMaster.FieldByName('InvoiceAddressID').AsString) then
begin
PageCtl.ActivePage := TabA;
EDG.SetFocus;
Abort;
end;
if qyMaster.FieldByName('PayDays').AsFloat < 0 then
begin
MyWarning('付款日数不可小于0');
PageCtl.ActivePage := TabA;
EDJ.SetFocus;
Abort;
end;
if (qyMaster.FieldByName('CustomerPayDate').AsFloat < 0) or
(qyMaster.FieldByName('CustomerPayDate').AsFloat > 30) then
begin
MyWarning('请款日必须在1-30之间(月底请输入30)');
PageCtl.ActivePage := TabA;
EDK.SetFocus;
Abort;
end;
if qyMaster.State = dsInsert then
begin
if qyMaster.FieldByName('CreditLine').AsFloat < 0 then
begin
MyWarning('信用额度不可小于0');
PageCtl.ActivePage := TabA;
EDL.SetFocus;
Abort;
end;
qyMaster.FieldByName('CreditBalance').AsFloat :=
qyMaster.FieldByName('CreditLine').AsFloat;
end;
qyMaster.FieldByName('CreditBalance').AsFloat :=
qyMaster.FieldByName('CreditBalance').AsFloat +
qyMaster.FieldByName('CreditLine').AsFloat -
fPrevCreditLine;
end;
procedure TfmBA120.qyCustomerContactBeforeOpen(DataSet: TDataSet);
begin
inherited;
with qyCustomerContact do
begin
ParamByName('CompanyID').AsString := sCompanyID;
ParamByName('CustomerID').AsString := qyMaster.FieldByName('CustomerID').AsString;
end;
end;
procedure TfmBA120.qyCustomerContactNewRecord(DataSet: TDataSet);
begin
inherited;
with qyCustomerContact do
begin
FieldByName('CompanyID').AsString := sCompanyID;
FieldByName('CustomerID').AsString := qyMaster.FieldByName('CustomerID').AsString;
FieldByName('ContactID').AsString := Space(2);
FieldByName('ChineseName').AsString := Space(8);
FieldByName('EnglishName').AsString := Space(15);
FieldByName('Title').AsString := Space(20);
FieldByName('Phone').AsString := Space(20);
FieldByName('MobilePhone').AsString := Space(10);
FieldByName('LiaisonRedLetterDate').AsString := Space(8);
FieldByName('RedLetterDateDescription').AsString := Space(20);
end;
end;
procedure TfmBA120.qyCustomerContactBeforeInsert(DataSet: TDataSet);
begin
inherited;
if not CanModifyCustomerContactAndAddress then
Abort;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -