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

📄 csh850_01.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
字号:
unit Csh850_01;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BAS200_08, dxExEdtr, DB, ADODB, ActnList, Menus, dxCntner, dxTL,
  dxDBCtrl, dxDBGrid, ExtCtrls, ComCtrls, wwfltdlg,
  ToolWin, Buttons, StdCtrls, wwdbdatetimepicker, dxDBTLCl, dxGrClms, DateUtils,
  TeEngine, Series, TeeProcs, Chart, DbChart;

type
  TCsh850_01Form = class(TBas200_08Form)
    qryCsh550: TADOQuery;
    ADOQuery1: TADOQuery;
    lblAcct: TLabel;
    cbAcct: TComboBox;
    lblDate: TLabel;
    edtFromDate: TwwDBDateTimePicker;
    edtToDate: TwwDBDateTimePicker;
    ADODataSet1CURNM: TStringField;
    ADODataSet1DATE1: TDateTimeField;
    ADODataSet1DATE2: TDateTimeField;
    ADODataSet1MEMO: TStringField;
    ADODataSet1AMT01: TBCDField;
    ADODataSet1AMT02: TBCDField;
    ADODataSet1AMT03: TBCDField;
    dxDBGrid1CURNM: TdxDBGridMaskColumn;
    dxDBGrid1DATE1: TdxDBGridDateColumn;
    dxDBGrid1DATE2: TdxDBGridDateColumn;
    dxDBGrid1MEMO: TdxDBGridMaskColumn;
    dxDBGrid1AMT01: TdxDBGridCurrencyColumn;
    dxDBGrid1AMT02: TdxDBGridCurrencyColumn;
    dxDBGrid1AMT03: TdxDBGridCurrencyColumn;
    sbSearch: TSpeedButton;
    ActOpen: TAction;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbSearchClick(Sender: TObject);
    procedure cbAcctChange(Sender: TObject);
    procedure dxDBGrid1AMT01DrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure dxDBGrid1AMT02DrawSummaryFooter(Sender: TObject;
      ACanvas: TCanvas; ARect: TRect; var AText: String;
      var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
      var ADone: Boolean);
    procedure ActPrintExecute(Sender: TObject);
    procedure ActOpenExecute(Sender: TObject);
  private
    ASum1,ASum2:Double;
    { Private declarations }
  public
    procedure SetInterface; override;
    procedure RefreshEvent; override;
    procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
    { Public declarations }
  end;

var
  Csh850_01Form: TCsh850_01Form;

implementation

uses SYSDATA, CommFun, CshComm, Csh510_01;

{$R *.dfm}

//取得某个日期是第几季度
function QuarterOf(ADateTime:TDateTime):Integer;
var
  AMonth:Integer;
begin
  Result:=0;
  AMonth:=MonthOf(ADateTime);
  if AMonth in [1,2,3] then Result:=1
  else if AMonth in [4,5,6] then Result:=2
  else if AMonth in [7,8,9] then Result:=3
  else if AMonth in [10,11,12] then Result:=4;
end;

procedure TCsh850_01Form.SetInterface;
begin
  inherited;
  Caption:=GetDBString('CSH85001001');  //资金季报表
  lblAcct.Caption:=GetDBString('CSH85001002');  //帐户
  lblDate.Caption:=GetDBString('CSH85001003');  //日期
  sbSearch.Caption:=GetDBString('CSH85001004');  //查询
  ADODataSet1CURNM.DisplayLabel:=GetDBString('CSH85001005');  //币别
  ADODataSet1DATE1.DisplayLabel:=GetDBString('CSH85001006');  //起始日期
  ADODataSet1DATE2.DisplayLabel:=GetDBString('CSH85001007');  //结束日期
  ADODataSet1MEMO.DisplayLabel:=GetDBString('CSH85001008');  //摘要
  ADODataSet1AMT01.DisplayLabel:=GetDBString('CSH85001009');  //收入
  ADODataSet1AMT02.DisplayLabel:=GetDBString('CSH85001010');  //支出
  ADODataSet1AMT03.DisplayLabel:=GetDBString('CSH85001011');  //余额
end;

procedure TCsh850_01Form.FormCreate(Sender: TObject);
begin
  inherited;
  SetInterface;

  //取得所有帐户名称
  cbAcct.Items.Clear;
  cbAcct.Items.Add(GetDBString('CSH85001012'));  //所有帐户
  qryCsh550.Close;
  qryCsh550.SQL.Clear;
  if ASuper then
  begin
    qryCsh550.SQL.Add('select * from CSH550');
  end else
  begin
    qryCsh550.SQL.Add('select * from SYS500C A, CSH550 B');
    qryCsh550.SQL.Add('where A.S500C_002=B.C550_001 and A.S500C_003=''ACC'' and A.S500C_004='+GetBoolean(True)+' and A.S500C_001='+IntToStr(AUserID));
  end;
  qryCsh550.Open;
  while not qryCsh550.Eof do
  begin
    cbAcct.Items.Add(qryCsh550.FieldByName('C550_002').AsString);
    qryCsh550.Next;
  end;
  //取得当月起始&结束日期
  edtFromDate.Date:=EncodeDate(CurrentYear,1,1);
  edtToDate.Date:=EncodeDate(CurrentYear,12,31);
  cbAcct.ItemIndex:=0;
end;

procedure TCsh850_01Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  qryCsh550.Close;
end;

procedure TCsh850_01Form.sbSearchClick(Sender: TObject);
var
  AccNo:Integer;
  ADate:TDateTime;
  Amount,AValue:Double;
  AFromDate,AToDate:TDateTime;
begin
  inherited;
//查询
  if cbAcct.Text='' then
  begin
    ShowMsg('UMS10000157');  //帐户不能为空
    cbAcct.SetFocus;
    Abort;
  end;
  if (edtFromDate.Text='') or (edtToDate.Text='') then
  begin
    ShowMsg('UMS10000156');  //起始日期或结束日期不能为空
    if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
    Abort;
  end;
  AFromDate:=edtFromDate.Date;
  AToDate:=edtToDate.Date;
  if AFromDate>AToDate then
  begin
    ShowMsg('UMS10000044');  //起始日期不能大于结束日期
    edtFromDate.SetFocus;
    Abort;
  end;
  //建立临时表
  Screen.Cursor:=crHourGlass;
  ADODataSet1.DisableControls;
  ADODataSet1.Close;
  ADODataSet1.FieldDefs.Clear;
  ADODataSet1.FieldDefs.Add('CURNM',ftString,30);
  ADODataSet1.FieldDefs.Add('DATE1',ftDateTime,0);
  ADODataSet1.FieldDefs.Add('DATE2',ftDateTime,0);
  ADODataSet1.FieldDefs.Add('MEMO',ftString,30);
  ADODataSet1.FieldDefs.Add('AMT01',ftCurrency,0);
  ADODataSet1.FieldDefs.Add('AMT02',ftCurrency,0);
  ADODataSet1.FieldDefs.Add('AMT03',ftCurrency,0);
  ADODataSet1.CreateDataSet;

  //取得帐户编号
  if cbAcct.ItemIndex<>0 then
  begin
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select C550_001 from CSH550 where C550_002='+''''+cbAcct.Text+'''');
    SYSDM.qryQuery.Open;
    AccNo:=SYSDM.qryQuery.Fields[0].Value;
    //取得期初余额
    Amount:=GetAccAmount(AccNo, AFromDate, AToDate, 1);
  end else  //所有帐户
  begin
    //取得所有帐户的期初余额总和
    Amount:=0;
    qryCsh550.Open;
    qryCsh550.First;
    while not qryCsh550.Eof do
    begin
      AccNo:=qryCsh550.FieldByName('C550_001').Value;
      Amount:=Amount+GetAccAmount(AccNo, AFromDate, AToDate, 1);
      qryCsh550.Next;
    end;
    AccNo:=0;
  end;

  AFromDate:=edtFromDate.Date;
  AToDate:=edtToDate.Date;
  ADODataSet1.Append;
  ADODataSet1.FieldByName('MEMO').Value:=GetDBString('CSH85001013');  //期初余额
  ADODataSet1.FieldByName('AMT03').Value:=Amount;
  ADODataSet1.Post;

  if AccNo<>0 then
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select C.G100_003, A.C510A_010, A.C510A_005, sum(A.C510A_009) as C510A_009');
    ADOQuery1.SQL.Add('from CSH510A A, CSH550 B, GLD100 C');
    ADOQuery1.SQL.Add('where A.C510A_003=B.C550_001 and B.C550_005=C.G100_001 and');
    ADOQuery1.SQL.Add('      A.C510A_004<>0 and A.C510A_003='+IntToStr(AccNo)+' and');
    ADOQuery1.SQL.Add('      A.C510A_010>='+GetDateString(AFromDate)+' and A.C510A_010<='+GetDateString(AToDate));
    ADOQuery1.SQL.Add('group by C.G100_003, A.C510A_010, A.C510A_005');
    ADOQuery1.SQL.Add('order by C.G100_003, A.C510A_010, A.C510A_005');    ADOQuery1.Open;
  end else  //所有帐户
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('select C.G100_003, A.C510A_010, A.C510A_005, sum(A.C510A_009) as C510A_009');
    ADOQuery1.SQL.Add('from CSH510A A, CSH550 B, GLD100 C');
    ADOQuery1.SQL.Add('where A.C510A_003=B.C550_001 and B.C550_005=C.G100_001 and');
    ADOQuery1.SQL.Add('      A.C510A_004<>0 and');
    ADOQuery1.SQL.Add('      A.C510A_010>='+GetDateString(AFromDate)+' and A.C510A_010<='+GetDateString(AToDate));
    ADOQuery1.SQL.Add('group by C.G100_003, A.C510A_010, A.C510A_005');
    ADOQuery1.SQL.Add('order by C.G100_003, A.C510A_010, A.C510A_005');
    ADOQuery1.Open;
  end;

  ASum1:=0;
  ASum2:=0;
  ADate:=0;
  while not ADOQuery1.Eof do
  begin
    if (QuarterOf(ADate)<>QuarterOf(ADOQuery1.FieldByName('C510A_010').Value)) or (ADate=0) then
    begin
      ADODataSet1.Append;
      ADODataSet1.FieldByName('CURNM').Value:=ADOQuery1.FieldByName('G100_003').Value;
      ADODataSet1.FieldByName('DATE1').Value:=ADOQuery1.FieldByName('C510A_010').Value;
      ADODataSet1.FieldByName('MEMO').Value:=GetDBString('CSH85001014');  //本季合计
      if ADOQuery1.FieldByName('C510A_005').Value=0 then  //收入
      begin
        ADODataSet1.FieldByName('AMT01').Value:=ADOQuery1.FieldByName('C510A_009').Value;
        Amount:=Amount+ADOQuery1.FieldByName('C510A_009').Value;
        ADODataSet1.FieldByName('AMT03').Value:=Amount;
      end
      else if ADOQuery1.FieldByName('C510A_005').Value=1 then  //支出
      begin
        ADODataSet1.FieldByName('AMT02').Value:=ADOQuery1.FieldByName('C510A_009').Value;
        Amount:=Amount-ADOQuery1.FieldByName('C510A_009').Value;
        ADODataSet1.FieldByName('AMT03').Value:=Amount;
      end;
      ADODataSet1.Post;
      ADate:=ADOQuery1.FieldByName('C510A_010').Value;
    end else
    begin
      ADODataSet1.Edit;
      if ADOQuery1.FieldByName('C510A_005').Value=0 then  //收入
      begin
        if ADODataSet1.FieldByName('AMT01').IsNull then
          AValue:=0
        else
          AValue:=ADODataSet1.FieldByName('AMT01').Value;
        ADODataSet1.FieldByName('AMT01').Value:=AValue+ADOQuery1.FieldByName('C510A_009').Value;
        Amount:=Amount+ADOQuery1.FieldByName('C510A_009').Value;
        ADODataSet1.FieldByName('AMT03').Value:=Amount;
      end
      else if ADOQuery1.FieldByName('C510A_005').Value=1 then  //支出
      begin
        if ADODataSet1.FieldByName('AMT02').IsNull then
          AValue:=0
        else
          AValue:=ADODataSet1.FieldByName('AMT02').Value;
        ADODataSet1.FieldByName('AMT02').Value:=AValue+ADOQuery1.FieldByName('C510A_009').Value;
        Amount:=Amount-ADOQuery1.FieldByName('C510A_009').Value;
        ADODataSet1.FieldByName('AMT03').Value:=Amount;
      end;
      ADODataSet1.FieldByName('DATE2').Value:=ADOQuery1.FieldByName('C510A_010').Value;
      ADODataSet1.Post;
    end;
    ASum1:=ASum1+ADODataSet1.FieldByName('AMT01').AsFloat;
    ASum2:=ASum2+ADODataSet1.FieldByName('AMT02').AsFloat;
    ADOQuery1.Next;
  end;
  ADODataSet1.EnableControls;
  Screen.Cursor:=crDefault;
end;

procedure TCsh850_01Form.ReportGetValue(const ParName: String;
  var ParValue: Variant);
begin
  inherited;
  if ParName='CURNM' then ParValue:=GetDBString('CSH85001005')  //'币别'
  else if ParName='BILL_DT1' then ParValue:=GetDBString('CSH85001006')  //'起始日期'
  else if ParName='BILL_DT2' then ParValue:=GetDBString('CSH85001007')  //'结束日期'
  else if ParName='MEMO_001' then ParValue:=GetDBString('CSH85001008')  //'摘要'
  else if ParName='AMOT_001' then ParValue:=GetDBString('CSH85001009')  //'收入'
  else if ParName='AMOT_002' then ParValue:=GetDBString('CSH85001010')  //'支出'
  else if ParName='AMOT_003' then ParValue:=GetDBString('CSH85001011')  //'余额'
  else if ParName='ACCT_NAM' then ParValue:=GetDBString('CSH85001015')+cbAcct.Text  //'帐户名称:'
  else if ParName='DATE_001' then ParValue:=GetDBString('CSH85001016')+edtFromDate.Text  //'起始日期:'
  else if ParName='DATE_002' then ParValue:=GetDBString('CSH85001017')+edtToDate.Text  //'结束日期:'
end;

procedure TCsh850_01Form.cbAcctChange(Sender: TObject);
begin
  inherited;
  sbSearch.Click;
end;

procedure TCsh850_01Form.dxDBGrid1AMT01DrawSummaryFooter(Sender: TObject;
  ACanvas: TCanvas; ARect: TRect; var AText: String;
  var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
  var ADone: Boolean);
begin
  inherited;
  if VarToStr(ASum1)<>'' then AText:=FloatToStrF(ASum1,ffCurrency,18,2);
  AColor := clWhite;
end;

procedure TCsh850_01Form.dxDBGrid1AMT02DrawSummaryFooter(Sender: TObject;
  ACanvas: TCanvas; ARect: TRect; var AText: String;
  var AAlignment: TAlignment; AFont: TFont; var AColor: TColor;
  var ADone: Boolean);
begin
  inherited;
  if VarToStr(ASum2)<>'' then AText:=FloatToStrF(ASum2,ffCurrency,18,2);
  AColor := clWhite;
end;

procedure TCsh850_01Form.ActPrintExecute(Sender: TObject);
begin
  try
    SYSDM.frReport2.OnGetValue:=ReportGetValue;
    inherited;
  finally
    SYSDM.frReport2.OnGetValue:=nil;
  end;
end;

procedure TCsh850_01Form.ActOpenExecute(Sender: TObject);
var
  AFieldInfo:TwwFieldInfo;
begin
  inherited;
//查看
  if ADODataSet1.IsEmpty then Exit;
  Screen.Cursor:=crHourGlass;
  Csh510_01Form:=TCsh510_01Form.Create(Application);
  Csh510_01Form.edtFromDate.Date:=edtFromDate.Date;
  Csh510_01Form.edtToDate.Date:=edtToDate.Date;
  Csh510_01Form.sbSearch.Click;
  AFieldInfo:=TwwFieldInfo.Create;
  FilterDialog(Csh510_01Form.DataSource1,False);
  AFieldInfo.FieldName:='I120_003';
//  AFieldInfo.DisplayLabel:=Csh510_01Form.ADOQuery1I120_003.DisplayLabel;
  AFieldInfo.MatchType:=fdMatchStart;
  AFieldInfo.CaseSensitive:=False;
  AFieldInfo.NonMatching:=False;
//  AFieldInfo.FilterValue:=ADODataSet1FName.Value;;
  SYSDM.wwFilterDialog1.FieldInfo.Add(AFieldInfo);
  SYSDM.wwFilterDialog1.ApplyFilter;
  Screen.Cursor:=crDefault;
  Csh510_01Form.ShowModal;
//  if Assigned(AFieldInfo) then AFieldInfo.Free;
end;

procedure TCsh850_01Form.RefreshEvent;
begin
  inherited;
  sbSearch.Click;
end;

initialization
  RegisterClass(TCsh850_01Form);

finalization
  UnRegisterClass(TCsh850_01Form);

end.

⌨️ 快捷键说明

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