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

📄 ba120.pas

📁 一套融入了系统营销管理思想的管理软件产品
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -