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

📄 ap110.~pas

📁 利用delhpi 开发的一个关于零售业进销管理系统
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
unit AP110;

interface

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

type
  TfmAP110 = class(TfmMasterDetail)
    qyMasterCompanyID: TStringField;
    qyMasterDiscount: TBCDField;
    qyMasterRemittance: 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;
    sbSupplierID: TSpeedButton;
    qyDetailBalance: TBCDField;
    sbPayDate: TSpeedButton;
    qyPurchaseMaster: TQuery;
    edPurchaseID: TDBEdit;
    qyMasterSupplierAttribName: TStringField;
    qyMasterSupplierID: TStringField;
    qyMasterPaymentID: TStringField;
    qyMasterPayDate: TStringField;
    qyMasterPayCash: TBCDField;
    qyMasterPayCheck: TBCDField;
    qyMasterPrepaid: TBCDField;
    qyDetailPaymentID: TStringField;
    qyDetailPurchaseID: TStringField;
    qyDetailPaid: TBCDField;
    qyDetailAccountPayable: TBCDField;
    qyDetailUnPaid: TFloatField;
    qyDetailCompanyID: TStringField;
    qyPurchaseMasterPurchaseID: TStringField;
    qyPurchaseMasterPurchaseDate: TStringField;
    qyPurchaseMasterAccountPayable: TBCDField;
    qyPurchaseMasterPaid: TBCDField;
    qyMasterPayAmount: 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 sbPayDateClick(Sender: TObject);
    procedure sbSupplierIDClick(Sender: TObject);
    procedure dsMasterStateChange(Sender: TObject);
    procedure gdDetailEditButtonClick(Sender: TObject);
    procedure qyPurchaseMasterBeforeOpen(DataSet: TDataSet);
    procedure qyMasterUpdateRecord(DataSet: TDataSet;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure qyDetailUpdateRecord(DataSet: TDataSet;
      UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction);
    procedure qyDetailBeforeInsert(DataSet: TDataSet);
    procedure qyDetailBeforeEdit(DataSet: TDataSet);
    procedure qyMasterSupplierIDValidate(Sender: TField);
    procedure qyDetailPurchaseIDValidate(Sender: TField);
    procedure sbSelectClick(Sender: TObject);
  private
    { Private declarations }
    procedure GetPurchaseInformation;
  public
    { Public declarations }
    AStartPeriodDate, AEndPeriodDate : String;
    AStartSupplierID, AEndSupplierID : String;
    ReData : Boolean;
    procedure OpenDB; override;
    procedure CalcAmount; override;
  end;

var
  fmAP110: TfmAP110;

implementation

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

var
  fTempAccountPayable, fTempPaid : Extended;
  sTempPurchaseID : String;
  fPrevBalance : Extended;

{$R *.DFM}

{ TfmAP110 }

procedure TfmAP110.FormCreate(Sender: TObject);
begin
  AStartPeriodDate := sStartPeriodDate;
  AEndPeriodDate := sEndPeriodDate;
  AStartSupplierID := '00000000';
  AEndSupplierID := 'ZZZZZZZZ';
  ReData := False;
  inherited;
  fTempAccountPayable := 0;
  fTempPaid := 0;
  sTempPurchaseID := '';
  fPrevBalance := 0;
end;

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

end;

procedure TfmAP110.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 TfmAP110.qyMasterBeforeOpen(DataSet: TDataSet);
begin
  inherited;

  with qyMaster do
  begin
    ParamByName('StartPeriodDate').AsString := AStartPeriodDate;
    ParamByName('EndPeriodDate').AsString := AEndPeriodDate;
    ParamByName('StartSupplierID').AsString := AStartSupplierID;
    ParamByName('EndSupplierID').AsString := AEndSupplierID;
  end;
end;

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

  with qyMaster do
  begin
    FieldByName('PaymentID').AsString := Space(10);
    FieldByName('PayDate').AsString := Today;
    FieldByName('SupplierID').AsString := Space(10);
    FieldByName('PayCash').AsFloat := 0;
    FieldByName('PayCheck').AsFloat := 0;
    FieldByName('Discount').AsFloat := 0;
    FieldByName('Remittance').AsFloat := 0;
    FieldByName('Prepaid').AsFloat := 0;
    FieldByName('Others').AsFloat := 0;
    FieldByName('PayAmount').AsFloat := 0;
    FieldByName('TotalBalance').AsFloat := 0;
  end;
end;

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

  if qyMaster.State = dsInsert then
  begin
    if not CheckDate(qyMaster.FieldByName('PayDate').AsString) then
    begin
      ED1.SetFocus;
      Abort;
    end;
    if not CheckSupplierID(qyMaster.FieldByName('SupplierID').AsString) then
    begin
      ED2.SetFocus;
      Abort;
    end;
    qyMaster.FieldByName('PaymentID').AsString :=
             IDGen('AP', qyMaster.FieldByName('PayDate').AsString,
                   'PaymentID', 'AccountPayableMaster');
  end;
  qyMaster.FieldByName('PayAmount').AsFloat :=
           qyMaster.FieldByName('PayCash').AsFloat +
           qyMaster.FieldByName('PayCheck').AsFloat +
           qyMaster.FieldByName('Discount').AsFloat +
           qyMaster.FieldByName('Remittance').AsFloat -
           qyMaster.FieldByName('Prepaid').AsFloat -
           qyMaster.FieldByName('Others').AsFloat;
end;

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

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

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

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

procedure TfmAP110.qyDetailBeforePost(DataSet: TDataSet);
var
  fPaid : Extended;
begin
  inherited;

⌨️ 快捷键说明

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