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

📄 ar110.pas

📁 一套融入了系统营销管理思想的管理软件产品
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit AR110;

interface

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

type
  TfmAR110 = class(TfmMasterDetail)
    qyMasterCustomerAttribName: TStringField;
    qyMasterCompanyID: TStringField;
    qyMasterCustomerID: TStringField;
    qyMasterReceiveID: TStringField;
    qyMasterReceiveDate: TStringField;
    qyMasterReceiveCash: TBCDField;
    qyMasterReceiveCheck: TBCDField;
    qyMasterDiscount: TBCDField;
    qyMasterRemittance: TBCDField;
    qyMasterAdvance: TBCDField;
    qyMasterOthers: TBCDField;
    qyMasterTotalBalance: TBCDField;
    qyMasterCreateMan: TStringField;
    qyMasterCreateDate: TStringField;
    qyMasterCreateTime: TStringField;
    qyMasterModifyMan: TStringField;
    qyMasterModifyDate: TStringField;
    qyMasterModifyTime: TStringField;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    Label3: TLabel;
    ED2: TDBEdit;
    DBEdit3: TDBEdit;
    Label5: TLabel;
    ED3: TDBEdit;
    Label6: TLabel;
    ED4: TDBEdit;
    Label7: TLabel;
    ED5: TDBEdit;
    Label8: TLabel;
    ED6: TDBEdit;
    Label9: TLabel;
    ED7: TDBEdit;
    Label10: TLabel;
    ED8: TDBEdit;
    Label11: TLabel;
    DBEdit10: TDBEdit;
    Label12: TLabel;
    DBEdit11: TDBEdit;
    sbCustomerID: TSpeedButton;
    qyDetailCompanyID: TStringField;
    qyDetailReceiveID: TStringField;
    qyDetailDeliveryID: TStringField;
    qyDetailBalance: TBCDField;
    qyDetailReceived: TBCDField;
    qyDetailUnReceived: TFloatField;
    sbReceiveDate: TSpeedButton;
    qyDeliveryMaster: TQuery;
    edDeliveryID: TDBEdit;
    qyMasterReceiveAmount: TBCDField;
    qyDeliveryMasterDeliveryID: TStringField;
    qyDeliveryMasterDeliveryDate: TStringField;
    qyDeliveryMasterReceived: TBCDField;
    qyDeliveryMasterAccountReceivable: TBCDField;
    qyDetailAccountReceivable: TBCDField;
    procedure FormCreate(Sender: TObject);
    procedure qyMasterBeforeOpen(DataSet: TDataSet);
    procedure qyMasterNewRecord(DataSet: TDataSet);
    procedure qyMasterBeforePost(DataSet: TDataSet);
    procedure qyDetailBeforeOpen(DataSet: TDataSet);
    procedure qyDetailNewRecord(DataSet: TDataSet);
    procedure qyDetailBeforePost(DataSet: TDataSet);
    procedure qyDetailCalcFields(DataSet: TDataSet);
    procedure qyMasterCustomerIDValidate(Sender: TField);
    procedure sbReceiveDateClick(Sender: TObject);
    procedure sbCustomerIDClick(Sender: TObject);
    procedure dsMasterStateChange(Sender: TObject);
    procedure gdDetailEditButtonClick(Sender: TObject);
    procedure qyDeliveryMasterBeforeOpen(DataSet: TDataSet);
    procedure qyMasterUpdateRecord(DataSet: TDataSet;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure qyDetailUpdateRecord(DataSet: TDataSet;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure qyDetailDeliveryIDValidate(Sender: TField);
    procedure qyDetailBeforeInsert(DataSet: TDataSet);
    procedure qyDetailBeforeEdit(DataSet: TDataSet);
    procedure sbSelectClick(Sender: TObject);
  private
    { Private declarations }
    procedure GetDeliveryInformation;
  public
    { Public declarations }
    AStartPeriodDate, AEndPeriodDate : String;
    AStartCustomerID, AEndCustomerID : String;
    ReData : Boolean;
    procedure OpenDB; override;
    procedure CalcAmount; override;
  end;

var
  fmAR110: TfmAR110;

implementation

uses Main, DataModule, PublicFunction, CheckData, GetData, ChinaCalendar,
  BaseSearch, AR110Select, Loading;

var
  fTempAccountReceivable, fTempReceived : Extended;
  sTempDeliveryID : String;
  fPrevBalance : Extended;

{$R *.DFM}

{ TfmAR110 }

procedure TfmAR110.FormCreate(Sender: TObject);
begin

  AStartPeriodDate := sStartPeriodDate;
  AEndPeriodDate := sEndPeriodDate;
  AStartCustomerID := '00000000';
  AEndCustomerID := 'ZZZZZZZZ';
  ReData := False;
  inherited;

  fTempAccountReceivable := 0;
  fTempReceived := 0;
  sTempDeliveryID := '';
  fPrevBalance := 0;
end;

procedure TfmAR110.OpenDB;
begin
  qyMaster.Close;
  OrderBySQL := 'M.ReceiveID';
  qyMaster.SQL.Text := SQLText;
  qyMaster.Open;

end;

procedure TfmAR110.CalcAmount;
var
  fBalance : Extended;
  PrevRecord : TBookmark;
begin

  PrevRecord := qyDetail.GetBookmark;
  qyDetail.DisableControls;
  try
    fBalance := 0;
    qyDetail.First;
    while not qyDetail.Eof do
    begin
      fBalance := fBalance + qyDetail.FieldByName('Balance').AsFloat;
      qyDetail.Next;
    end;
    qyMaster.FieldByName('TotalBalance').AsFloat := fBalance;
  finally
    qyDetail.EnableControls;
    if PrevRecord <> nil then
    begin
      qyDetail.GotoBookmark(PrevRecord);
      qyDetail.FreeBookmark(PrevRecord);
    end;
  end;
end;

procedure TfmAR110.qyMasterBeforeOpen(DataSet: TDataSet);
begin
  inherited;

  with qyMaster do
  begin
    ParamByName('StartPeriodDate').AsString := AStartPeriodDate;
    ParamByName('EndPeriodDate').AsString := AEndPeriodDate;
    ParamByName('StartCustomerID').AsString := AStartCustomerID;
    ParamByName('EndCustomerID').AsString := AEndCustomerID;
  end;
end;

procedure TfmAR110.qyMasterNewRecord(DataSet: TDataSet);
begin
  inherited;

  with qyMaster do
  begin
    FieldByName('ReceiveID').AsString := Space(10);
    FieldByName('ReceiveDate').AsString := Today;
    FieldByName('CustomerID').AsString := Space(10);
    FieldByName('ReceiveCash').AsFloat := 0;
    FieldByName('ReceiveCheck').AsFloat := 0;
    FieldByName('Discount').AsFloat := 0;
    FieldByName('Remittance').AsFloat := 0;
    FieldByName('Advance').AsFloat := 0;
    FieldByName('Others').AsFloat := 0;
    FieldByName('ReceiveAmount').AsFloat := 0;
    FieldByName('TotalBalance').AsFloat := 0;
  end;
end;

procedure TfmAR110.qyMasterBeforePost(DataSet: TDataSet);
begin
  inherited;

  if qyMaster.State = dsInsert then
  begin
    if not CheckDate(qyMaster.FieldByName('ReceiveDate').AsString) then
    begin
      ED1.SetFocus;
      Abort;
    end;
    if not CheckCustomerID(qyMaster.FieldByName('CustomerID').AsString) then
    begin
      ED2.SetFocus;
      Abort;
    end;
    qyMaster.FieldByName('ReceiveID').AsString :=
             IDGen('AR', qyMaster.FieldByName('ReceiveDate').AsString,
                   'ReceiveID', 'AccountReceivableMaster');
  end;
  qyMaster.FieldByName('ReceiveAmount').AsFloat :=
           qyMaster.FieldByName('ReceiveCash').AsFloat +
           qyMaster.FieldByName('ReceiveCheck').AsFloat +
           qyMaster.FieldByName('Discount').AsFloat +
           qyMaster.FieldByName('Remittance').AsFloat -
           qyMaster.FieldByName('Advance').AsFloat -
           qyMaster.FieldByName('Others').AsFloat;
end;

procedure TfmAR110.qyDetailBeforeOpen(DataSet: TDataSet);
begin
  inherited;

  qyDetail.ParamByName('ReceiveID').AsString := qyMaster.FieldByName('ReceiveID').AsString;
end;

procedure TfmAR110.qyDetailNewRecord(DataSet: TDataSet);
begin
  inherited;

  with qyDetail do
  begin
    FieldByName('ReceiveID').AsString := qyMaster.FieldByName('ReceiveID').AsString;
    FieldByName('DeliveryID').AsString := Space(10);
    FieldByName('Balance').AsFloat := 0;
  end;
end;

procedure TfmAR110.qyDetailBeforePost(DataSet: TDataSet);
var
  fReceived : Extended;
begin
  inherited;

  GetDeliveryInformation;
  if sTempDeliveryID = '' then
  begin
    NotFoundWarning('出货单单号', qyDetail.FieldByName('DeliveryID').AsString);

⌨️ 快捷键说明

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