⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csh550_01.pas.svn-base

📁 开源的网站整站程序,功能强大带采集系统.
💻 SVN-BASE
字号:
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);
    function GetUserNo(AEngName:string):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 CSH510A where C510A_004<>0 and C510A_003='+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
  AUserNo,AccNo:Integer;
  ACode:string;
  ADate:TDateTime;
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('select C510A_001 from CSH510A where C510A_004=0 and C510A_003='+IntToStr(AccNo));
    SYSDM.qryQuery.Open;
    ACode:=SYSDM.qryQuery.FieldByName('C510A_001').AsString;
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('delete from CSH510A where C510A_004=0 and C510A_003='+IntToStr(AccNo));
    SYSDM.qryQuery.ExecSQL;
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('delete from CSH510B where C510B_001='+''''+ACode+'''');
    SYSDM.qryQuery.ExecSQL;
    //插入新数据
    ACode:=GetAutoCode('CSH510');
    AUserNo:=GetUserNo(AUserName);
    ADate:=GetServerDate;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select * from CSH510A');
    SYSDM.qryQuery.Open;
    SYSDM.qryQuery.Append;
    SYSDM.qryQuery.FieldByName('C510A_001').Value:=ACode;    //收支单号
    SYSDM.qryQuery.FieldByName('C510A_002').Value:=0;    //顺序编号
    SYSDM.qryQuery.FieldByName('C510A_003').Value:=AccNo;    //帐户编号(关联帐户表)
    SYSDM.qryQuery.FieldByName('C510A_004').Value:=0;    //单据类型(0=建帐单,1=收入单,2=支出单,3=转帐单,4=借入单,5=借出单,6=还入单,7=还出单)
    SYSDM.qryQuery.FieldByName('C510A_005').Value:=0;    //收入支出(0=收入,1=支出)
    SYSDM.qryQuery.FieldByName('C510A_006').Value:=0;    //来源类型(0=手工输入,1=销售定单,2=采购定单,3=任务工单)
    SYSDM.qryQuery.FieldByName('C510A_007').Value:=2;    //对象类型(0=客户,1=员工,2=空白)
//    SYSDM.qryQuery.FieldByName('C510A_008').Value:=;    //对象编号(存放客户编号,员工编号)
    SYSDM.qryQuery.FieldByName('C510A_009').Value:=0;    //收支金额(收支金额汇总)
    SYSDM.qryQuery.FieldByName('C510A_010').Value:=ADOQuery1.FieldByName('C550_007').value;    //收支日期
//    SYSDM.qryQuery.FieldByName('C510A_011').Value:=;    //票据编号(银行帐使用(未使用))
    SYSDM.qryQuery.FieldByName('C510A_012').Value:=AUserNo;    //经办人员(关联员工表)
    SYSDM.qryQuery.FieldByName('C510A_013').Value:=ADOQuery1.FieldByName('C550_008').Value;    //帐户余额
//    SYSDM.qryQuery.FieldByName('C510A_014').Value:=;    //原始单号
    SYSDM.qryQuery.FieldByName('C510A_015').Value:=GetDBString('CSH55001012');    //摘要说明
    SYSDM.qryQuery.FieldByName('C510A_016').Value:=FormatDateTime('yyyy-mm-dd hh:mm:ss',ADate);    //制单日期
    SYSDM.qryQuery.FieldByName('C510A_017').Value:=AUserName;    //制单人员
    SYSDM.qryQuery.FieldByName('C510A_018').Value:=FormatDateTime('yyyy-mm-dd hh:mm:ss',ADate);    //修改日期
    SYSDM.qryQuery.FieldByName('C510A_019').Value:=AUserName;    //修改人员
    SYSDM.qryQuery.Post;


    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select top 1 * from CSH510B');
    SYSDM.qryQuery.Open;
    //在这里需要更新CSH510A,CSH510B这两个表,关键的是:单据的自动编号
    //处理的一笔记录,没有复杂的关系
    SYSDM.qryQuery.Append;
    SYSDM.qryQuery.FieldByName('C510B_001').Value:=ACode;  //收支单号(关联主表)
    SYSDM.qryQuery.FieldByName('C510B_002').Value:=1;   //收支行号(子表行号)
    //SYSDM.qryQuery.FieldByName('C510B_003').Value:=;  //发票编号(能够关系到采购定单和销售定单得到料品的详细信息)
    //SYSDM.qryQuery.FieldByName('C510B_004').Value:=;  //发票行号(能够得到发票上每一行的应收金额       来源类型是销售发票和采购发票时显示)
    //SYSDM.qryQuery.FieldByName('C510B_005').Value:=;  //应收金额(应收应付金额)
    SYSDM.qryQuery.FieldByName('C510B_006').Value:=0;   //实收金额(实际交易金额)
    //SYSDM.qryQuery.FieldByName('C510B_007').Value:=;  //业务分类(关联业务表)
    //SYSDM.qryQuery.FieldByName('C510B_008').Value:=;  //项目编号(关联项目表)
    //SYSDM.qryQuery.FieldByName('C510B_009').Value:=;  //部门编号(关联部门表)
    //SYSDM.qryQuery.FieldByName('C510B_010').Value:=;  //任务工单(来源类型是任务工单时显示)
    SYSDM.qryQuery.FieldByName('C510B_011').Value:=GetDBString('CSH55001012');  //备注说明(备注说明)
    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);
var
  AQuery:TADOQuery;
begin
//删除
  CheckAccoutUsed(ADOQuery1C550_001.Value);
  if ADOQuery1.IsEmpty then
  begin
    ShowMsg('UMS10000002');  //表记录为空,操作无效
    Abort;
  end;

  AQuery:=TADOQuery.Create(nil);
  AQuery.Connection:=SYSDM.ADOC;
  if ShowDialog('UMS10000008')=IDYES then  //确定要删除此记录吗?
  begin
    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('select * from CSH510A where C510A_003='+IntToStr(ADOQuery1.FieldByName('C550_001').Value));
    SYSDM.qryQuery.Open;
    //删除帐户相关的收支记录
    SYSDM.qryQuery.First;
    while not SYSDM.qryQuery.Eof do
    begin
      AQuery.Close;
      AQuery.SQL.Clear;
      AQuery.SQL.Add('delete * from CSH510B where C510B_001='+''''+SYSDM.qryQuery.FieldByName('C510A_001').AsString+'''');
      AQuery.ExecSQL;
      SYSDM.qryQuery.Next;
    end;
    AQuery:=nil;
    AQuery.Free;

    SYSDM.qryQuery.Close;
    SYSDM.qryQuery.SQL.Clear;
    SYSDM.qryQuery.SQL.Add('delete from CSH510A where C510A_003='+IntToStr(ADOQuery1.FieldByName('C550_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;

function TCsh550_01Form.GetUserNo(AEngName: string): integer;
var
  AQyery:TADOQuery;
begin
  AQyery:=TADOQuery.Create(nil);
  AQyery.Connection:=SYSDM.ADOC;
  AQyery.Close;
  AQyery.SQL.Clear;
  AQyery.SQL.Add('select * from SYS500A where S500A_002='+''''+AEngName+'''');
  AQyery.Open;
  Result:=AQyery.FieldByName('S500A_001').Value;
  AQyery:=nil;
  AQyery.Free;
end;

initialization
  RegisterClass(TCsh550_01Form);

finalization
  UnRegisterClass(TCsh550_01Form);

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -