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 + -
显示快捷键?