csh510_01.pas.svn-base
来自「一个用Delphi开发的ERP软件」· SVN-BASE 代码 · 共 388 行
SVN-BASE
388 行
unit Csh510_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Bas200_08, dxExEdtr, ActnList, DB, ADODB, Menus, dxCntner, dxTL,
dxDBCtrl, dxDBGrid, ExtCtrls, ComCtrls,
ToolWin, StdCtrls, Buttons, wwdbdatetimepicker, dxDBTLCl, dxGrClms;
type
TCsh510_01Form = class(TBas200_08Form)
lblAcct: TLabel;
cbAccNm: TComboBox;
lblDate: TLabel;
edtFromDate: TwwDBDateTimePicker;
edtToDate: TwwDBDateTimePicker;
ADODataSet1BILDT: TDateTimeField;
ADODataSet1BILNO: TStringField;
ADODataSet1MEMO: TStringField;
ADODataSet1AMT01: TBCDField;
ADODataSet1AMT02: TBCDField;
ADODataSet1AMT03: TBCDField;
dxDBGrid1BILDT: TdxDBGridDateColumn;
dxDBGrid1BILNO: TdxDBGridMaskColumn;
dxDBGrid1MEMO: TdxDBGridMaskColumn;
dxDBGrid1AMT01: TdxDBGridCurrencyColumn;
dxDBGrid1AMT02: TdxDBGridCurrencyColumn;
dxDBGrid1AMT03: TdxDBGridCurrencyColumn;
qryCsh550: TADOQuery;
PopupMenu2: TPopupMenu;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
miIncome: TMenuItem;
miTransfer: TMenuItem;
sbSearch: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbSearchClick(Sender: TObject);
procedure cbAccNmChange(Sender: TObject);
procedure MenuItemClick(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);
private
AIncome, APayment:Double;
{ Private declarations }
public
procedure SetInterface; override;
procedure InsertEvent; override;
procedure UpdateEvent; override;
procedure DeleteEvent; override;
procedure BrowseEvent; override;
procedure RefreshEvent; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Csh510_01Form: TCsh510_01Form;
implementation
uses CommFun, SYSDATA, CshComm, Csh510_02, Csh510_04;
{$R *.dfm}
procedure TCsh510_01Form.MenuItemClick(Sender: TObject);
var
AcctNo:Integer;
begin
AcctNo:=GetValue('select C550_001 from CSH550 where C550_002='+''''+cbAccNm.Text+'''');
if TMenuItem(Sender).Tag=1 then
begin
Csh510_02Form:=TCsh510_02Form.Create(Application);
Csh510_02Form.OpenData(AcctNo,0,0);
Csh510_02Form.ShowModal;
end else //转帐单
begin
Csh510_04Form:=TCsh510_04Form.Create(Application);
Csh510_04Form.OpenData(AcctNo,0,0);
Csh510_04Form.ShowModal;
end;
sbSearch.Click
end;
procedure TCsh510_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('CSH51001001'); //出纳帐本
lblAcct.Caption:=GetDBString('CSH51001002'); //帐户
lblDate.Caption:=GetDBString('CSH51001003'); //日期
sbSearch.Caption:=GetDBString('CSH51001004'); //查询
ADODataSet1BILDT.DisplayLabel:=GetDBString('CSH51001003'); //日期
ADODataSet1BILNO.DisplayLabel:=GetDBString('CSH51001005'); //票据编号
ADODataSet1MEMO.DisplayLabel:=GetDBString('CSH51001006'); //摘要
ADODataSet1AMT01.DisplayLabel:=GetDBString('CSH51001007'); //收入
ADODataSet1AMT02.DisplayLabel:=GetDBString('CSH51001008'); //支出
ADODataSet1AMT03.DisplayLabel:=GetDBString('CSH51001009'); //余额
miIncome.Caption:=GetDBString('CSH51001010'); //收支单(&D)...
miTransfer.Caption:=GetDBString('CSH51001011'); //转帐单(&T)...
end;
procedure TCsh510_01Form.FormCreate(Sender: TObject);
begin
inherited;
//取得当月起始&结束日期
edtFromDate.Date:=GetMonthFirstDate(Date);
edtToDate.Date:=GetMonthEndDate(Date);
//取得所有帐户名称
GetAllAcct(cbAccNm,qryCsh550);
sbSearch.Click;
end;
procedure TCsh510_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryCsh550.Close;
end;
procedure TCsh510_01Form.sbSearchClick(Sender: TObject);
var
AccNo:Integer;
AFromDate,AToDate:TDateTime;
begin
inherited;
//查询
if cbAccNm.Text='' then Exit;
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;
AIncome:=0;
APayment:=0;
//建立出纳总帐临时表
ADODataSet1.DisableControls;
ADODataSet1.Close;
ADODataSet1.FieldDefs.Clear;
ADODataSet1.FieldDefs.Add('BILDT',ftDateTime,0);
ADODataSet1.FieldDefs.Add('BILNO',ftString,20);
ADODataSet1.FieldDefs.Add('MEMO',ftString,60);
ADODataSet1.FieldDefs.Add('AMT01',ftCurrency,0);
ADODataSet1.FieldDefs.Add('AMT02',ftCurrency,0);
ADODataSet1.FieldDefs.Add('AMT03',ftCurrency,0);
ADODataSet1.CreateDataSet;
//取得帐户资料
qryCsh550.Close;
qryCsh550.SQL.Clear;
if ASuper then
begin
qryCsh550.SQL.Add('select * from CSH550');
end else
begin
qryCsh550.SQL.Add('select * from SYS500D A, CSH550 B');
qryCsh550.SQL.Add('where A.S500D_003=B.C550_001 and A.S500D_002=''ACC'' and A.S500D_004=Yes and A.S500D_001= :S500A_001');
qryCsh550.Parameters[0].Value:=AUserID;
end;
qryCsh550.Open;
qryCsh550.Locate('C550_002',cbAccNm.Text,[loCaseInsensitive]);
AccNo:=qryCsh550.FieldByName('C550_001').Value;
//取得帐户的期初余额
ADODataSet1.Append;
ADODataSet1.FieldByName('BILDT').AsString:='';
ADODataSet1.FieldByName('BILNO').AsString:='';
ADODataSet1.FieldByName('MEMO').Value:=GetDBString('CSH51001017'); //期初余额
ADODataSet1.FieldByName('AMT01').AsString:='';
ADODataSet1.FieldByName('AMT02').AsString:='';
ADODataSet1.FieldByName('AMT03').Value:=GetAccAmount(AccNo, AFromDate, AToDate, 1);
ADODataSet1.Post;
//取得帐户收支明细资料
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from CSH500 where C500_002<>0 and C500_001='+IntToStr(AccNo));
ADOQuery1.SQL.Add(' and C500_003>='+GetDateString(edtFromDate.Date)+' and C500_003<='+GetDateString(edtToDate.Date));
ADOQuery1.SQL.Add('order by C500_001, C500_003, C500_004');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('BILDT').Value:=ADOQuery1.FieldByName('C500_003').Value;
ADODataSet1.FieldByName('BILNO').Value:=ADOQuery1.FieldByName('C500_004').AsString;
ADODataSet1.FieldByName('MEMO').Value:=ADOQuery1.FieldByName('C500_009').Value;
if ADOQuery1.FieldByName('C500_008').Value=0 then //收入
begin
ADODataSet1.FieldByName('AMT01').Value:=ADOQuery1.FieldByName('C500_007').Value;
ADODataSet1.FieldByName('AMT02').AsString:='';
end else
if ADOQuery1.FieldByName('C500_008').Value=1 then //支出
begin
ADODataSet1.FieldByName('AMT01').AsString:='';
ADODataSet1.FieldByName('AMT02').Value:=ADOQuery1.FieldByName('C500_007').Value;
end;
ADODataSet1.FieldByName('AMT03').Value:=ADOQuery1.FieldByName('C500_014').Value;
ADODataSet1.Post;
ADOQuery1.Next;
end;
//收入、支出合计
AIncome:=GetAccAmount(AccNo, edtFromDate.Date, edtToDate.Date, 2);
APayment:=GetAccAmount(AccNo, edtFromDate.Date, edtToDate.Date, 3);
ADODataSet1.EnableControls;
end;
procedure TCsh510_01Form.cbAccNmChange(Sender: TObject);
begin
inherited;
sbSearch.Click;
end;
procedure TCsh510_01Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
if ParName='BILL_DAT' then ParValue:=GetDBString('CSH51001003') //日期
else if ParName='BILL_NUM' then ParValue:=GetDBString('CSH51001005') //票据编号
else if ParName='MEMO_001' then ParValue:=GetDBString('CSH51001006') //摘要
else if ParName='AMOT_001' then ParValue:=GetDBString('CSH51001007') //收入
else if ParName='AMOT_002' then ParValue:=GetDBString('CSH51001008') //支出
else if ParName='AMOT_003' then ParValue:=GetDBString('CSH51001009') //余额
else if ParName='ACCT_NAM' then ParValue:=GetDBString('CSH51001019')+cbAccNm.Text //帐户名称:
else if ParName='DATE_001' then ParValue:=GetDBString('CSH51001020')+edtFromDate.Text //起始日期:
else if ParName='DATE_002' then ParValue:=GetDBString('CSH51001021')+edtToDate.Text //结束日期:
end;
procedure TCsh510_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(AIncome)<>'' then AText:=FloatToStrF(AIncome,ffCurrency,18,2);
AColor := clWhite;
end;
procedure TCsh510_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(APayment)<>'' then AText:=FloatToStrF(APayment,ffCurrency,18,2);
AColor := clWhite;
end;
procedure TCsh510_01Form.RefreshEvent;
begin
inherited;
sbSearch.Click;
end;
procedure TCsh510_01Form.BrowseEvent;
begin
inherited;
if ActUpdate.Enabled then ActUpdate.Execute;
end;
procedure TCsh510_01Form.DeleteEvent;
var
AccNo:Integer; //帐户编号
ADate:TDateTime; //日期
ABillNo,ABillNo1:Integer; //票据编号
ATypeNo,AObjType,ACustNo,ACurrNo:Integer;
ADate1:TDateTime; //日期
AAmount:Double;
begin
inherited;
//删除
if ADODataSet1.IsEmpty then Exit;
if ADODataSet1BILNO.Value='' then Exit;
if ShowDialog('UMS10000008')=IDNO then Abort; //确定要删除此记录吗?
//取得帐户编号、日期、票据编号
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select C550_001,C550_005 from CSH550 where C550_002='+''''+cbAccNm.Text+'''');
SYSDM.qryQuery.Open;
AccNo:=SYSDM.qryQuery.FieldByName('C550_001').Value;
ACurrNo:=SYSDM.qryQuery.FieldByName('C550_005').Value;
ADate:=ADODataSet1BILDT.Value;
ABillNo:=ADODataSet1BILNO.AsInteger;
//取得单据类型
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select C500_001,C500_002,C500_005,C500_007,C500_015 from CSH500 where C500_001='+IntToStr(AccNo)+' and C500_003='+GetDateString(ADate)+' and C500_004='+IntToStr(ABillNo));
SYSDM.qryQuery.Open;
ATypeNo:=SYSDM.qryQuery.FieldByName('C500_002').Value;
AObjType:=SYSDM.qryQuery.FieldByName('C500_015').Value;
ACustNo:=SYSDM.qryQuery.FieldByName('C500_005').AsInteger;
AAmount:=SYSDM.qryQuery.FieldByName('C500_007').Value;
//删除记录
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH500 where C500_001='+IntToStr(AccNo)+' and C500_003='+GetDateString(ADate)+' and C500_004='+IntToStr(ABillNo));
SYSDM.qryQuery.ExecSQL;
//取上条记录的日期&编号
GetPriorRecord(AccNo,ADate,ABillNo,ADate1,ABillNo1);
//计算余额
ReCalcBalance(AccNo,ADate1,ABillNo1);
sbSearch.Click;
if ATypeNo=3 then //转帐单
begin
//取得相关的帐户编号
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select C500_001,C500_002 from CSH500 where C500_002=3 and C500_001<>'+IntToStr(AccNo)+' and C500_003='+GetDateString(ADate)+' and C500_004='+IntToStr(ABillNo));
SYSDM.qryQuery.Open;
AccNo:=SYSDM.qryQuery.FieldByName('C500_001').Value;
//删除记录
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH500 where C500_001='+IntToStr(AccNo)+' and C500_003='+GetDateString(ADate)+' and C500_004='+IntToStr(ABillNo));
SYSDM.qryQuery.ExecSQL;
//取上条记录的日期&编号
GetPriorRecord(AccNo,ADate,ABillNo,ADate1,ABillNo1);
//计算余额
ReCalcBalance(AccNo,ADate1,ABillNo1);
end;
//删除债权债务帐本表
if AObjType<>2 then
begin
UpdateCSH610(AObjType,ACustNo,ACurrNo,0,0,ABillNo,0,ADate,AAmount,'','','DEL');
end;
end;
procedure TCsh510_01Form.InsertEvent;
var
APoint:TPoint;
begin
inherited;
APoint:=tlbInsert.ClientToScreen(Point(0, tlbInsert.ClientHeight));
PopupMenu2.Popup(APoint.X,APoint.Y);
end;
procedure TCsh510_01Form.UpdateEvent;
var
AcctNo,ABillNo:Integer;
ADate:TDateTime;
begin
inherited;
if ADODataSet1BILNO.Value='' then Exit;
qryCsh550.Locate('C550_002',cbAccNm.Text,[loCaseInsensitive]);
AcctNo:=qryCsh550.FieldByName('C550_001').Value;
ABillNo:=ADODataSet1BILNO.AsInteger;
ADate:=ADODataSet1BILDT.Value;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from CSH500 where C500_001='+IntToStr(AcctNo)+' and C500_003='+GetDateString(ADate)+' and C500_004='+IntToStr(ABillNo));
ADOQuery2.Open;
if ADOQuery2.FieldByName('C500_002').Value<>3 then
begin
Csh510_02Form:=TCsh510_02Form.Create(Application);
Csh510_02Form.OpenData(AcctNo,ADate,ABillNo);
Csh510_02Form.ShowModal;
end else //转帐单
begin
Csh510_04Form:=TCsh510_04Form.Create(Application);
Csh510_04Form.OpenData(AcctNo,ADate,ABillNo);
Csh510_04Form.ShowModal;
end;
sbSearch.Click;
end;
initialization
RegisterClass(TCsh510_01Form);
finalization
UnRegisterClass(TCsh510_01Form);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?