📄 csh730_02.pas.svn-base
字号:
unit Csh730_02;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Bas200_11, dxExEdtr, DB, ADODB, ActnList, Menus, dxCntner, dxTL,
dxDBCtrl, dxDBGrid, ExtCtrls, ComCtrls, ToolWin, Buttons, StdCtrls,
wwdbdatetimepicker, dxDBTLCl, dxGrClms;
type
TCsh730_02Form = class(TBas200_11Form)
lblInOut: TLabel;
cbInOut: TComboBox;
edtFromDate: TwwDBDateTimePicker;
edtToDate: TwwDBDateTimePicker;
lblDate: TLabel;
sbSearch: TSpeedButton;
lblType: TLabel;
cbType: TComboBox;
edtCust: TEdit;
sbCust: TSpeedButton;
lblCust: TLabel;
edtCustName: TEdit;
ADODataSet1FDate: TDateTimeField;
ADODataSet1FBillNo: TStringField;
ADODataSet1FType: TIntegerField;
ADODataSet1FRemark: TStringField;
ADODataSet1FInAmt: TFloatField;
ADODataSet1FOutAmt: TFloatField;
ADODataSet1FBalance: TFloatField;
dxDBGrid1FDate: TdxDBGridDateColumn;
dxDBGrid1FBillNo: TdxDBGridMaskColumn;
dxDBGrid1FType: TdxDBGridMaskColumn;
dxDBGrid1FRemark: TdxDBGridMaskColumn;
dxDBGrid1FInAmt: TdxDBGridMaskColumn;
dxDBGrid1FOutAmt: TdxDBGridMaskColumn;
dxDBGrid1FBalance: TdxDBGridMaskColumn;
ADODataSet1FCurrName: TStringField;
cbCurr: TComboBox;
lblCurr: TLabel;
qryGld100: TADOQuery;
qryOrd150: TADOQuery;
qryOrd150FNo: TAutoIncField;
qryOrd150FCode: TWideStringField;
qryOrd150FName: TWideStringField;
qryCsh610: TADOQuery;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbSearchClick(Sender: TObject);
procedure cbTypeChange(Sender: TObject);
procedure sbCustClick(Sender: TObject);
procedure edtCustExit(Sender: TObject);
procedure cbCurrChange(Sender: TObject);
procedure ADODataSet1FTypeGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
private
AType:array[0..1,0..2] of string;
ATypeNo:array[1..3] of string;
function GetCsh510Code(AAccNo:integer;ADate:TDateTime;ABillNo:Integer):string ;
{ Private declarations }
public
procedure OpenData(AInOut,AType,ACustNo,ACurrNo:Integer;AFromDate,AToDate:TDateTime);
procedure SetInterface; override;
procedure BrowseEvent; override;
procedure RefreshEvent; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Csh730_02Form: TCsh730_02Form;
implementation
uses SYSDATA, CommFun, CshComm, HwSelData, Csh510_02, Ord510_02, Pur510_02;
{$R *.dfm}
procedure TCsh730_02Form.OpenData(AInOut,AType,ACustNo,ACurrNo:Integer;AFromDate,AToDate:TDateTime);
begin
cbInOut.ItemIndex:=AInOut;
cbType.ItemIndex:=AType;
cbTypeChange(cbType);
qryOrd150.Locate('FNo',ACustNo,[]);
edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;
edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;
qryGld100.Locate('G100_001',ACurrNo,[]);
cbCurr.ItemIndex:=cbCurr.Items.IndexOf(qryGld100.FieldByName('G100_003').AsString);
edtFromDate.Date:=AFromDate;
edtToDate.Date:=AToDate;
sbSearch.Click;
end;
procedure TCsh730_02Form.SetInterface;
begin
inherited;
Caption:=GetDBString('CSH73002001'); //债权债务明细
lblType.Caption:=GetDBString('CSH73002023'); //对象
lblInOut.Caption:=GetDBString('CSH73002002'); //类型
lblDate.Caption:=GetDBString('CSH73002003'); //日期
lblCurr.Caption:=GetDBString('CSH73002004'); //币别
lblCust.Caption:=GetDBString('CSH73002005'); //编号
sbSearch.Caption:=GetDBString('CSH73002006'); //查询
ADODataSet1FCurrName.DisplayLabel:=GetDBString('CSH73002007'); //币别名称
ADODataSet1FDate.DisplayLabel:=GetDBString('CSH73002008'); //发生日期
ADODataSet1FBillNo.DisplayLabel:=GetDBString('CSH73002009'); //单据编号
ADODataSet1FType.DisplayLabel:=GetDBString('CSH73002010'); //单据类型
ADODataSet1FRemark.DisplayLabel:=GetDBString('CSH73002011'); //摘要说明
AType[0,0]:=GetDBString('CSH73002012'); //应收金额
AType[0,1]:=GetDBString('CSH73002013'); //已收金额
AType[0,2]:=GetDBString('CSH73002014'); //未收金额
AType[1,0]:=GetDBString('CSH73002015'); //应付金额
AType[1,1]:=GetDBString('CSH73002016'); //已付金额
AType[1,2]:=GetDBString('CSH73002017'); //未付金额
//1=销售发票,2=采购发票,3=收支单
ATypeNo[1]:=GetDBString('CSH73002024'); //销售发票
ATypeNo[2]:=GetDBString('CSH73002025'); //采购发票
ATypeNo[3]:=GetDBString('CSH73002026'); //收支单
cbType.Clear;
cbType.Items.Add(GetDBString('CSH73002018')); //客户
cbType.Items.Add(GetDBString('CSH73002019')); //员工
cbType.ItemIndex:=0;
cbTypeChange(cbType);
cbInOut.Clear;
cbInOut.Items.Add(GetDBString('CSH73002020')); //债权
cbInOut.Items.Add(GetDBString('CSH73002021')); //债务
cbInOut.ItemIndex:=0;
//币别名称
cbCurr.Clear;
qryGld100.Close;
qryGld100.Open;
while not qryGld100.Eof do
begin
cbCurr.Items.Add(qryGld100.FieldByName('G100_003').AsString);
qryGld100.Next;
end;
qryGld100.First;
//本位币
qryGld100.Locate('G100_003',ACurrName,[]);
cbCurr.ItemIndex:=cbCurr.Items.IndexOf(ACurrName);
end;
procedure TCsh730_02Form.FormCreate(Sender: TObject);
var
ADate:TDateTime;
begin
inherited;
ADate:=GetServerDate;
edtFromDate.Date:=GetMonthFirstDate(ADate);
edtToDate.Date:=GetMonthEndDate(ADate);
sbSearch.Click;
end;
procedure TCsh730_02Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
//
end;
procedure TCsh730_02Form.BrowseEvent;
var
ADate:TDateTime;
ABillNo:String;
begin
inherited;
ADate:=ADODataSet1FDate.Value;
ABillNo:=ADODataSet1FBillNo.Value;
//1=销售发票,2=采购发票,3=收支单
if ADODataSet1.FieldByName('FType').AsInteger=1 then
begin
Ord510_02Form:=TOrd510_02Form.Create(Application);
Ord510_02Form.OpenData(ABillNo);
Ord510_02Form.ShowModal;
end else
if ADODataSet1.FieldByName('FType').AsInteger=2 then
begin
Pur510_02Form:=TPur510_02Form.Create(Application);
Pur510_02Form.OpenData(ABillNo);
Pur510_02Form.ShowModal;
end else
if ADODataSet1.FieldByName('FType').AsInteger=3 then
begin
Csh510_02Form:=TCsh510_02Form.Create(Application);
Csh510_02Form.OpenData(GetCsh510Code(0,ADate,StrToInt(ABillNo)));
Csh510_02Form.ShowModal;
end;
end;
procedure TCsh730_02Form.RefreshEvent;
begin
inherited;
sbSearch.Click;
end;
procedure TCsh730_02Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
end;
procedure TCsh730_02Form.sbSearchClick(Sender: TObject);
var
AFromDate,AToDate:TDateTime;
AInOut,ACustNo,ACurrNo,AObjType:Integer;
begin
inherited;
//查询
if (edtFromDate.Text='') or (edtToDate.Text='') then
begin
ShowMsg('UMS10000319'); //起止日期不可为空
if edtFromDate.Text='' then edtFromDate.SetFocus else edtToDate.SetFocus;
Abort;
end;
if edtFromDate.Date>edtToDate.Date then
begin
ShowMsg('UMS10000320'); //结束日期不能小于起始日期
edtToDate.SetFocus;
Abort;
end;
AFromDate:=edtFromDate.Date;
AToDate:=edtToDate.Date;
if trim(edtCust.Text)='' then
begin
ShowMsg('UMS10000590'); //对象编号不能为空
edtCust.SetFocus;
Abort;
end;
if not qryOrd150.Locate('FCode',edtCust.Text,[]) then
begin
ShowMsg('UMS10000589'); //输入的对象编号无效,请重新输入
edtCust.SetFocus;
Abort;
end;
try
Screen.Cursor:=crHourGlass;
ADODataSet1.DisableControls;
ADODataSet1.Close;
ADODataSet1.CreateDataSet;
ADODataSet1FInAmt.DisplayLabel:=AType[cbInOut.ItemIndex,0];
ADODataSet1FOutAmt.DisplayLabel:=AType[cbInOut.ItemIndex,1];
ADODataSet1FBalance.DisplayLabel:=AType[cbInOut.ItemIndex,2];
//期初余额
AInOut:=cbInOut.ItemIndex;
ACustNo:=qryOrd150.FieldByName('FNo').AsInteger;
ACurrNo:=qryGld100.FieldByName('G100_001').AsInteger;
AObjType:=cbType.ItemIndex;
ADODataSet1.Append;
ADODataSet1.FieldByName('FCurrName').Value:=qryGld100.FieldByName('G100_003').Value;
ADODataSet1.FieldByName('FBalance').Value:=GetAcrOpen(AInOut,ACustNo,ACurrNo,AObjType,AFromDate);
ADODataSet1.FieldByName('FRemark').Value:=GetDBString('CSH73002022'); //期初余额
ADODataSet1.Post;
qryCsh610.Close;
qryCsh610.SQL.Clear;
qryCsh610.SQL.Add('select * from');
qryCsh610.SQL.Add(' (select A.*,');
qryCsh610.SQL.Add(' B.O150_002,B.O150_003,');
qryCsh610.SQL.Add(' C.G100_002,C.G100_003');
qryCsh610.SQL.Add(' from CSH610 A,ORD150 B,GLD100 C');
qryCsh610.SQL.Add(' where C610_001=0 and C610_002=O150_001 and C610_003=G100_001 and C610_005<>0');
qryCsh610.SQL.Add(' union');
qryCsh610.SQL.Add(' select A.*,');
qryCsh610.SQL.Add(' B.H150_002,B.H150_003,');
qryCsh610.SQL.Add(' C.G100_002,C.G100_003');
qryCsh610.SQL.Add(' from CSH610 A,HRM150 B,GLD100 C');
qryCsh610.SQL.Add(' where C610_001=1 and C610_002=H150_001 and C610_003=G100_001 and C610_005<>0) AA');
qryCsh610.SQL.Add('where C610_001='+IntToStr(cbType.ItemIndex)+' and C610_002='+qryOrd150.FieldByName('FNo').AsString+' and C610_003='+qryGld100.FieldByName('G100_001').AsString+' and C610_004='+IntToStr(cbInOut.ItemIndex)+' and C610_006>='+GetDateString(AFromDate)+' and C610_006<='+GetDateString(AToDate));
qryCsh610.SQL.Add('order by C610_001,O150_002,G100_002,C610_006,C610_011');
qryCsh610.Open;
while not qryCsh610.Eof do
begin
ADODataSet1.Append;
ADODataSet1.FieldByName('FCurrName').Value:=qryCsh610.FieldByName('G100_003').Value;
ADODataSet1.FieldByName('FType').Value:=qryCsh610.FieldByName('C610_012').Value;
case qryCsh610.FieldByName('C610_005').AsInteger of //0=期初,1=收入,2=支出
1:ADODataSet1.FieldByName('FInAmt').Value:=qryCsh610.FieldByName('C610_007').Value;
2:ADODataSet1.FieldByName('FOutAmt').Value:=qryCsh610.FieldByName('C610_007').Value;
end;
ADODataSet1.FieldByName('FBalance').Value:=qryCsh610.FieldByName('C610_008').Value;
ADODataSet1.FieldByName('FRemark').Value:=qryCsh610.FieldByName('C610_009').Value;
ADODataSet1.FieldByName('FBillNo').Value:=qryCsh610.FieldByName('C610_010').Value;
ADODataSet1.FieldByName('FDate').Value:=qryCsh610.FieldByName('C610_006').Value;
ADODataSet1.Post;
qryCsh610.Next;
end;
finally
ADODataSet1.EnableControls;
Screen.Cursor:=crDefault;
end;
ARecordCount:=GetDataSetCount(ADODataSet1);
end;
procedure TCsh730_02Form.cbTypeChange(Sender: TObject);
begin
inherited;
qryOrd150.Close;
qryOrd150.SQL.Clear;
case cbType.ItemIndex of
0:qryOrd150.SQL.Add('select O150_001 as FNo,O150_002 as FCode,O150_003 as FName from ORD150 order by O150_002');
1:qryOrd150.SQL.Add('select H150_001 as FNo,H150_002 as FCode,H150_003 as FName from HRM150 order by H150_002');
end;
qryOrd150.Open;
edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;
edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;
end;
procedure TCsh730_02Form.sbCustClick(Sender: TObject);
begin
inherited;
//对象编号
if not edtCust.Focused then edtCust.SetFocus;
HwSelDataForm:=THwSelDataForm.Create(Application);
HwSelDataForm.OpenSelData(qryOrd150,nil);
if HwSelDataForm.ShowModal=1 then
begin
if qryOrd150.IsEmpty then Exit;
edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;
edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;
end;
end;
procedure TCsh730_02Form.edtCustExit(Sender: TObject);
begin
inherited;
//对象编号
if trim(edtCust.Text)='' then Exit;
if qryOrd150.Locate('FCode',edtCust.Text,[]) then
begin
edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;
edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;
end else
begin
ShowMsg('UMS10000589'); //输入的对象编号无效,请重新输入
edtCust.SetFocus;
Abort;
end;
end;
procedure TCsh730_02Form.cbCurrChange(Sender: TObject);
begin
inherited;
qryGld100.Locate('G100_003',cbCurr.Text,[]);
end;
procedure TCsh730_02Form.ADODataSet1FTypeGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
if ADODataSet1.IsEmpty then Exit;
if Sender.AsString='' then Exit;
Text:=ATypeNo[Sender.AsInteger];
end;
function TCsh730_02Form.GetCsh510Code(AAccNo: integer; ADate: TDateTime;
ABillNo: Integer): string;
var
AQuery:TADOQuery;
begin
AQuery:=TADOQuery.Create(nil);
AQuery.Connection:=SYSDM.ADOC;
AQuery.Close;
AQuery.SQL.Clear;
AQuery.SQL.Add('select * from CSH510A where C510A_003='+inttostr(AAccNo)+' and C510A_010='+DateTimetostr(ADate)+' and C510A_002='+inttostr(ABillNo));
AQuery.Open;
Result:=AQuery.FieldByName('C510A_001').AsString;
AQuery:=nil;
AQuery.Free;
end;
initialization
RegisterClass(TCsh730_02Form);
finalization
UnRegisterClass(TCsh730_02Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -