csh550_01.pas.svn-base
来自「一个用Delphi开发的ERP软件」· SVN-BASE 代码 · 共 338 行
SVN-BASE
338 行
unit Csh550_01;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, BAS200_01, dxExEdtr, ActnList, DB, ADODB, Menus, dxCntner, dxTL,
dxDBCtrl, dxDBGrid, ComCtrls, ExtCtrls,
ToolWin, StdCtrls, DBCtrls, dxEditor, dxEdLib, dxDBELib, Mask,
wwdbdatetimepicker, dxDBTLCl, dxGrClms;
type
TCsh550_01Form = class(TBas200_01Form)
lblName: TLabel;
lblDesc: TLabel;
lblType: TLabel;
lblCurr: TLabel;
lblPerson: TLabel;
lblDate: TLabel;
lblAmount: TLabel;
edtName: TDBEdit;
edtDesc: TDBEdit;
edtAmount: TDBEdit;
cbPerson: TDBLookupComboBox;
cbType: TComboBox;
cbCurr: TDBLookupComboBox;
dsHrm150: TDataSource;
qryHrm150: TADOQuery;
dsGld100: TDataSource;
qryGld100: TADOQuery;
dtpDate: TwwDBDateTimePicker;
ADOQuery1C550_001: TAutoIncField;
ADOQuery1C550_002: TStringField;
ADOQuery1C550_003: TStringField;
ADOQuery1C550_005: TIntegerField;
ADOQuery1C550_006: TIntegerField;
ADOQuery1C550_007: TDateTimeField;
ADOQuery1C550_008: TFloatField;
dxDBGrid1C550_002: TdxDBGridMaskColumn;
dxDBGrid1C550_003: TdxDBGridMaskColumn;
dxDBGrid1C550_004: TdxDBGridMaskColumn;
dxDBGrid1G100_003: TdxDBGridMaskColumn;
dxDBGrid1H150_003: TdxDBGridMaskColumn;
dxDBGrid1C550_007: TdxDBGridDateColumn;
dxDBGrid1C550_008: TdxDBGridMaskColumn;
ADOQuery1G100_003: TStringField;
ADOQuery1H150_003: TStringField;
ADOQuery1C550_004: TSmallintField;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ADOQuery1AfterScroll(DataSet: TDataSet);
procedure ActSaveExecute(Sender: TObject);
procedure ActInsertExecute(Sender: TObject);
procedure ActUpdateExecute(Sender: TObject);
procedure ActDeleteExecute(Sender: TObject);
procedure ADOQuery1C550_004GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure ActPrintExecute(Sender: TObject);
private
AOldName:string;
procedure CheckAccoutUsed(AccNo:integer);
{ Private declarations }
public
procedure SetInterface; override;
procedure ReportGetValue(const ParName: String; var ParValue: Variant); override;
{ Public declarations }
end;
var
Csh550_01Form: TCsh550_01Form;
implementation
uses CommFun, SYSDATA;
{$R *.dfm}
//检验帐户是否正在使用
procedure TCsh550_01Form.CheckAccoutUsed(AccNo:integer);
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from CSH500 where C500_002<>0 and C500_001='+IntToStr(AccNo));
SYSDM.qryQuery.Open;
if not SYSDM.qryQuery.IsEmpty then
begin
ShowMsg('UMS10000175'); //该帐户正在使用,操作无效
Abort;
end;
end;
procedure TCsh550_01Form.SetInterface;
begin
inherited;
Caption:=GetDBString('CSH55001001'); //新建帐户
lblName.Caption:=GetDBString('CSH55001002'); //帐户名称
lblDesc.Caption:=GetDBString('CSH55001003'); //帐户说明
lblType.Caption:=GetDBString('CSH55001004'); //帐户类型
lblCurr.Caption:=GetDBString('CSH55001005'); //币别
lblPerson.Caption:=GetDBString('CSH55001006'); //经办人
lblDate.Caption:=GetDBString('CSH55001007'); //建帐日期
lblAmount.Caption:=GetDBString('CSH55001008'); //余额
ADOQuery1C550_002.DisplayLabel:=GetDBString('CSH55001002'); //帐户名称
ADOQuery1C550_003.DisplayLabel:=GetDBString('CSH55001003'); //帐户说明
ADOQuery1C550_004.DisplayLabel:=GetDBString('CSH55001004'); //帐户类型
ADOQuery1G100_003.DisplayLabel:=GetDBString('CSH55001005'); //币别
ADOQuery1H150_003.DisplayLabel:=GetDBString('CSH55001006'); //经办人
ADOQuery1C550_007.DisplayLabel:=GetDBString('CSH55001007'); //建帐日期
ADOQuery1C550_008.DisplayLabel:=GetDBString('CSH55001008'); //余额
cbType.Items.Clear;
cbType.Items.Add(GetDBString('CSH55001009')); //现金帐
cbType.Items.Add(GetDBString('CSH55001010')); //银行帐
end;
procedure TCsh550_01Form.FormCreate(Sender: TObject);
begin
inherited;
SetInterface;
qryGld100.Open;
qryHrm150.Open;
ADOQuery1AfterScroll(ADOQuery1);
end;
procedure TCsh550_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
qryGld100.Close;
qryHrm150.Close;
end;
procedure TCsh550_01Form.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
inherited;
AOldName:=trim(ADOQuery1C550_002.Value);
cbType.ItemIndex:=ADOQuery1C550_004.Value;
end;
procedure TCsh550_01Form.ActSaveExecute(Sender: TObject);
var
AccNo:Integer;
begin
//保存
//帐户名称
if trim(edtName.Text)='' then
begin
ShowMsg('UMS10000176'); //帐户名称不能为空
edtName.SetFocus;
Abort;
end;
if AOldName<>trim(edtName.Text) then
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from CSH550 where C550_002='+''''+trim(edtName.Text)+'''');
SYSDM.qryQuery.Open;
if not SYSDM.qryQuery.IsEmpty then
begin
ShowMsg('UMS10000255'); //帐户名称已存在,请重新输入
edtName.SetFocus;
Abort;
end;
end;
//币别
if trim(cbCurr.Text)='' then
begin
ShowMsg('UMS10000020'); //币别名称不能为空
cbCurr.SetFocus;
Abort;
end;
//建帐日期
if trim(dtpDate.Text)='' then
begin
ShowMsg('UMS10000017'); //建帐日期不能为空
dtpDate.SetFocus;
Abort;
end;
//余额
if trim(edtAmount.Text)='' then
begin
ShowMsg('UMS10000256'); //余额不能为空
edtAmount.SetFocus;
Abort;
end;
AccNo:=0;
try
SYSDM.ADOC.BeginTrans;
ADOQuery1C550_004.Value:=cbType.ItemIndex;
inherited;
ADOQuery1.Refresh;
AccNo:=ADOQuery1C550_001.AsInteger;
//删除旧数据
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH500 where C500_002=0 and C500_001='+IntToStr(AccNo));
SYSDM.qryQuery.ExecSQL;
//插入新数据
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from CSH500');
SYSDM.qryQuery.Open;
SYSDM.qryQuery.Append;
SYSDM.qryQuery.FieldByName('C500_001').Value:=AccNo; //帐户编号
SYSDM.qryQuery.FieldByName('C500_002').Value:=0; //单据类型(1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
SYSDM.qryQuery.FieldByName('C500_003').Value:=ADOQuery1C550_007.Value; //日期
SYSDM.qryQuery.FieldByName('C500_004').Value:=0; //单据编号
SYSDM.qryQuery.FieldByName('C500_005').AsString:=''; //客户
SYSDM.qryQuery.FieldByName('C500_006').AsString:=''; //业务分类
SYSDM.qryQuery.FieldByName('C500_007').Value:=0; //金额
SYSDM.qryQuery.FieldByName('C500_008').Value:=0; //收入支出(0=收入,1=支出)
SYSDM.qryQuery.FieldByName('C500_009').Value:=GetDBString('CSH55001012'); //建帐余额 //摘要
// SYSDM.qryQuery.FieldByName('C500_010').AsString:=''; //票据号
SYSDM.qryQuery.FieldByName('C500_011').AsString:=''; //项目
SYSDM.qryQuery.FieldByName('C500_012').AsString:=''; //部门
SYSDM.qryQuery.FieldByName('C500_013').AsString:=ADOQuery1C550_006.AsString; //经办人
SYSDM.qryQuery.FieldByName('C500_014').Value:=ADOQuery1C550_008.Value; //余额
SYSDM.qryQuery.FieldByName('C500_015').Value:=2; //对象类型(0=客户,1=员工,2=空白)
SYSDM.qryQuery.FieldByName('C500_016').Value:=0; //来源类型(0=手工输入,1=销售定单,2=采购定单)
SYSDM.qryQuery.FieldByName('C500_017').AsString:=''; //原始单号
SYSDM.qryQuery.Post;
//插入权限表
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('insert into SYS500C(S500C_001,S500C_002,S500C_003,S500C_004)');
SYSDM.qryQuery.SQL.Add('select S500A_001,C550_001,''ACC'',0 from CSH550,SYS500A');
SYSDM.qryQuery.SQL.Add('where not exists(select 1 from SYS500C where S500C_001=S500A_001 and S500C_003=''ACC'' and S500C_002=C550_001)');
SYSDM.qryQuery.ExecSQL;
SYSDM.ADOC.CommitTrans;
except
SYSDM.ADOC.RollbackTrans;
ShowMsg(SYSDM.ADOC.Errors[0].Description,1);
ActUpdate.Execute;
Abort;
end;
ADOQuery1.Refresh;
ADOQuery1.Locate('C550_001',AccNo,[]);
end;
procedure TCsh550_01Form.ActInsertExecute(Sender: TObject);
var
ACurrNo:Integer;
begin
inherited;
//新增
if not (ADOQuery1.State in [dsInsert]) then ADOQuery1.Insert;
cbType.ItemIndex:=0;
//取得本位币
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('select * from GLD100 where G100_004='+GetBoolean(True));
SYSDM.qryQuery.Open;
ACurrNo:=SYSDM.qryQuery.FieldByName('G100_001').Value;
ADOQuery1C550_004.Value:=0;
ADOQuery1C550_005.Value:=ACurrNo;
ADOQuery1C550_007.Value:=Date;
ADOQuery1C550_008.Value:=0;
edtName.SetFocus;
end;
procedure TCsh550_01Form.ActUpdateExecute(Sender: TObject);
begin
//修改
CheckAccoutUsed(ADOQuery1C550_001.Value);
inherited;
edtName.SetFocus;
if not (ADOQuery1.State in [dsEdit]) then ADOQuery1.Edit;
end;
procedure TCsh550_01Form.ActDeleteExecute(Sender: TObject);
begin
//删除
CheckAccoutUsed(ADOQuery1C550_001.Value);
if ADOQuery1.IsEmpty then
begin
ShowMsg('UMS10000002'); //表记录为空,操作无效
Abort;
end;
if ShowDialog('UMS10000008')=IDYES then //确定要删除此记录吗?
begin
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from CSH500 where C500_001='+IntToStr(ADOQuery1C550_001.Value));
SYSDM.qryQuery.ExecSQL;
//删除相关的权限记录
SYSDM.qryQuery.Close;
SYSDM.qryQuery.SQL.Clear;
SYSDM.qryQuery.SQL.Add('delete from SYS500C where S500C_003=''ACC'' and S500C_002='+IntToStr(ADOQuery1C550_001.Value));
SYSDM.qryQuery.ExecSQL;
ADOQuery1.Delete;
end else
Abort;
// inherited;
end;
procedure TCsh550_01Form.ReportGetValue(const ParName: String;
var ParValue: Variant);
begin
inherited;
if ParName='C550_002' then ParValue:=GetDBString('CSH55001002') //'帐户名称'
else if ParName='C550_003' then ParValue:=GetDBString('CSH55001003') //'帐户说明'
else if ParName='C550_004' then ParValue:=GetDBString('CSH55001004') //'帐户类型'
else if ParName='C550_005' then ParValue:=GetDBString('CSH55001005') //'币别'
else if ParName='C550_006' then ParValue:=GetDBString('CSH55001006') //'经办人'
else if ParName='C550_007' then ParValue:=GetDBString('CSH55001007') //'建帐日期'
else if ParName='C550_008' then ParValue:=GetDBString('CSH55001008') //'余额'
end;
procedure TCsh550_01Form.ADOQuery1C550_004GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
inherited;
if ADOQuery1C550_004.AsString='' then Exit;
case ADOQuery1C550_004.AsInteger of
0:Text:=GetDBString('CSH55001009'); //现金帐
1:Text:=GetDBString('CSH55001010'); //银行帐
end;
end;
procedure TCsh550_01Form.ActPrintExecute(Sender: TObject);
begin
try
SYSDM.frReport2.OnGetValue:=ReportGetValue;
inherited;
finally
SYSDM.frReport2.OnGetValue:=nil;
end;
end;
initialization
RegisterClass(TCsh550_01Form);
finalization
UnRegisterClass(TCsh550_01Form);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?