📄 csh510_01.pas.svn-base
字号:
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, Mask,
wwdbedit, Wwdotdot;
type
TCsh510_01Form = class(TBas200_08Form)
lblAcct: TLabel;
cbAccNm: TComboBox;
lblDate: TLabel;
edtFromDate: TwwDBDateTimePicker;
edtToDate: TwwDBDateTimePicker;
qryCsh550: TADOQuery;
PopupMenu2: TPopupMenu;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
miIncome: TMenuItem;
miTransfer: TMenuItem;
sbSearch: TSpeedButton;
ADODataSet1FDate: TDateField;
ADODataSet1FCode: TStringField;
ADODataSet1FBrief: TStringField;
ADODataSet1FIncome: TFloatField;
ADODataSet1FPay: TFloatField;
ADODataSet1FBalance: TFloatField;
dxDBGrid1FDate: TdxDBGridDateColumn;
dxDBGrid1FCode: TdxDBGridMaskColumn;
dxDBGrid1FBrief: TdxDBGridMaskColumn;
dxDBGrid1FIncome: TdxDBGridMaskColumn;
dxDBGrid1FPay: TdxDBGridMaskColumn;
dxDBGrid1FBalance: TdxDBGridMaskColumn;
ADOQuery1C510A_001: TWideStringField;
ADOQuery1C510A_002: TIntegerField;
ADOQuery1C510A_003: TIntegerField;
ADOQuery1C510A_004: TSmallintField;
ADOQuery1C510A_005: TSmallintField;
ADOQuery1C510A_006: TSmallintField;
ADOQuery1C510A_007: TSmallintField;
ADOQuery1C510A_008: TIntegerField;
ADOQuery1C510A_009: TFloatField;
ADOQuery1C510A_010: TDateTimeField;
ADOQuery1C510A_011: TWideStringField;
ADOQuery1C510A_012: TIntegerField;
ADOQuery1C510A_013: TFloatField;
ADOQuery1C510A_014: TWideStringField;
ADOQuery1C510A_015: TWideStringField;
ADOQuery1C510A_016: TDateTimeField;
ADOQuery1C510A_017: TWideStringField;
ADOQuery1C510A_018: TDateTimeField;
ADOQuery1C510A_019: TWideStringField;
ADODataSet1FBillNo: TIntegerField;
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:=qryCsh550.FieldByName('C550_001').Value;
if TMenuItem(Sender).Tag=1 then
begin
Csh510_02Form:=TCsh510_02Form.Create(Application);
Csh510_02Form.OpenData('');
Csh510_02Form.ActInsert.Execute;
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'); //查询
ADODataSet1.Close;
ADODataSet1.CreateDataSet;
ADODataSet1.FieldByName('FDate').DisplayLabel:=GetDBString('CSH51001003'); //日期
ADODataSet1.FieldByName('FCode').DisplayLabel:=GetDBString('CSH51001005'); //票据编号
ADODataSet1.FieldByName('FBrief').DisplayLabel:=GetDBString('CSH51001006'); //摘要
ADODataSet1.FieldByName('FIncome').DisplayLabel:=GetDBString('CSH51001007'); //收入
ADODataSet1.FieldByName('FPay').DisplayLabel:=GetDBString('CSH51001008'); //支出
ADODataSet1.FieldByName('FBalance').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.CreateDataSet;
//取得帐户资料
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;
qryCsh550.Locate('C550_002',cbAccNm.Text,[loCaseInsensitive]);
AccNo:=qryCsh550.FieldByName('C550_001').Value;
//取得帐户的期初余额
ADODataSet1.Append;
ADODataSet1.FieldByName('FDate').AsString:='';
ADODataSet1.FieldByName('FCode').AsString:='';
ADODataSet1.FieldByName('FBrief').Value:=GetDBString('CSH51001017'); //期初余额
ADODataSet1.FieldByName('FIncome').AsString:='';
ADODataSet1.FieldByName('FPay').AsString:='';
ADODataSet1.FieldByName('FBalance').Value:=GetAccAmount(AccNo, AFromDate, AToDate, 1);
ADODataSet1.Post;
//取得帐户收支明细资料
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from CSH510A where C510A_004<>0 and C510A_003='+IntToStr(AccNo));
ADOQuery1.SQL.Add(' and C510A_010>='+GetDateString(edtFromDate.Date)+' and C510A_010<='+GetDateString(edtToDate.Date));
ADOQuery1.SQL.Add('order by C510A_001, C510A_002');
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FDate').Value:=ADOQuery1.FieldByName('C510A_010').Value; //收支日期
ADODataSet1.FieldByName('FCode').Value:=ADOQuery1.FieldByName('C510A_001').AsString; //单据编号
ADODataSet1.FieldByName('FBrief').Value:=ADOQuery1.FieldByName('C510A_015').Value; //摘要说明
if ADOQuery1.FieldByName('C510A_005').Value=0 then //收入
begin
ADODataSet1.FieldByName('FIncome').Value:=ADOQuery1.FieldByName('C510A_009').Value; //收支金额
ADODataSet1.FieldByName('FPay').AsString:='';
end else
if ADOQuery1.FieldByName('C510A_005').Value=1 then //支出
begin
ADODataSet1.FieldByName('FIncome').AsString:='';
ADODataSet1.FieldByName('FPay').Value:=ADOQuery1.FieldByName('C510A_009').Value; //收支金额
end;
ADODataSet1.FieldByName('FBalance').Value:=ADOQuery1.FieldByName('C510A_013').Value; //帐户余额
ADODataSet1.FieldByName('FBillNo').Value:=ADOQuery1.FieldByName('C510A_002').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;
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;
var
ACsh510_02Form:TCsh510_02Form;
begin
inherited;
if ADODataSet1.FieldByName('FCode').AsString='' then Abort;
ACsh510_02Form:=TCsh510_02Form.Create(Application);
ACsh510_02Form.OpenData(ADODataSet1.FieldByName('FCode').AsString);
ACsh510_02Form.ShowModal;
end;
procedure TCsh510_01Form.DeleteEvent;
var
AccNo:Integer; //帐户编号
ADate:TDateTime; //日期
ABillNo,ABillNo1:Integer; //票据编号
ATypeNo,AObjType,ACustNo,ACurrNo:Integer;
ADate1:TDateTime; //日期
AAmount:Double;
ACode:string;
begin
inherited;
//删除
if ADODataSet1.IsEmpty then Exit;
if ADODataSet1FCode.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:=ADODataSet1FDate.Value;
ABillNo:=ADODataSet1.FieldByName('FBillNo').AsInteger;
//取得单据类型
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select C510A_003,C510A_004,C510A_008,C510A_009,C510A_007 from CSH510A where C510A_003='+IntToStr(AccNo)+' and C510A_010='+GetDateString(ADate)+' and C510A_002='+IntToStr(ABillNo));
SYSDM.qryQuery.Open;
ATypeNo:=SYSDM.qryQuery.FieldByName('C510A_004').Value;
AObjType:=SYSDM.qryQuery.FieldByName('C510A_007').Value;
ACustNo:=SYSDM.qryQuery.FieldByName('C510A_008').AsInteger;
AAmount:=SYSDM.qryQuery.FieldByName('C510A_009').Value;
//删除记录 应该删除主表和从表
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select C510A_001 from CSH510A where C510A_003='+IntToStr(AccNo)+' and C510A_010='+GetDateString(ADate)+' and C510A_002='+IntToStr(ABillNo));
SYSDM.qryQuery.Open;
ACode:=SYSDM.qryQuery.FieldByName('C510A_001').Value;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH510B where C510B_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH510A where C510A_001='+''''+ACode+'''');
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 C510A_003,C510A_004 from CSH510A where C510A_004=3 and C510A_003<>'+IntToStr(AccNo)+' and C510A_010='+GetDateString(ADate)+' and C510A_002='+IntToStr(ABillNo));
SYSDM.qryQuery.Open;
AccNo:=SYSDM.qryQuery.FieldByName('C510A_003').Value;
//删除记录
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select C510A_001 from CSH510A where C510A_003='+IntToStr(AccNo)+' and C510A_010='+GetDateString(ADate)+' and C510A_002='+IntToStr(ABillNo));
SYSDM.qryQuery.Open;
ACode:=SYSDM.qryQuery.FieldByName('C510A_001').Value;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH510B where C510B_001='+''''+ACode+'''');
SYSDM.qryQuery.ExecSQL;
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH510A where C510A_001='+''''+ACode+'''');
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;
ACode:string;
begin
inherited;
ACode:=ADODataSet1.FieldByName('FCode').Value;
if ACode='' then Exit;
if ADOQuery1.Locate('A510A_001',ACode,[]) then
begin
if ADOQuery1.FieldByName('C510A_004').Value<>3 then
begin
Csh510_02Form:=TCsh510_02Form.Create(Application);
Csh510_02Form.OpenData(ACode);
Csh510_02Form.ActUpdate.Execute;
Csh510_02Form.ShowModal;
end else //转帐单
begin
AcctNo:=ADOQuery1.FieldByName('C510A_003').Value;
ADate:=ADOQuery1.FieldByName('C510A_010').Value;
ABillNo:=ADOQuery1.FieldByName('C510A_002').Value;
Csh510_04Form:=TCsh510_04Form.Create(Application);
Csh510_04Form.OpenData(AcctNo,ADate,ABillNo);
Csh510_04Form.ShowModal;
end;
sbSearch.Click;
end;
end;
initialization
RegisterClass(TCsh510_01Form);
finalization
UnRegisterClass(TCsh510_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -