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

📄 csh600_02.pas.svn-base

📁 开源的网站整站程序,功能强大带采集系统.
💻 SVN-BASE
字号:
unit Csh600_02;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Bas200_16, DB, ADODB, Menus, StdCtrls, Buttons, ExtCtrls,
  wwdbdatetimepicker;

type
  TCsh600_02Form = class(TBas200_16Form)
    lblType: TLabel;
    lblCust: TLabel;
    lblCurr: TLabel;
    lblInOut: TLabel;
    lblDate: TLabel;
    lblAmount: TLabel;
    lblRemark: TLabel;
    cbType: TComboBox;
    cbCurr: TComboBox;
    cbInOut: TComboBox;
    edtDate: TwwDBDateTimePicker;
    edtAmount: TEdit;
    edtCust: TEdit;
    sbCust: TSpeedButton;
    edtCustName: TEdit;
    memRemark: TMemo;
    qryOrd150: TADOQuery;
    qryGld100: TADOQuery;
    qryOrd150FNo: TAutoIncField;
    qryOrd150FCode: TWideStringField;
    qryOrd150FName: TWideStringField;
    qryCsh610: TADOQuery;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure sbCustClick(Sender: TObject);
    procedure cbTypeChange(Sender: TObject);
    procedure cbCurrChange(Sender: TObject);
    procedure edtAmountKeyPress(Sender: TObject; var Key: Char);
    procedure edtCustExit(Sender: TObject);
  private
    AOldAmount,AAmount:Double;
    AOldTypeNo,AOldCustNo,AOldCurrNo:Integer;
    AOldDate:TDateTime;
    { Private declarations }
  public
    procedure OpenData(AType,ACustNo,ACurrNo:Integer);
    procedure SetInterface; override;
    procedure GetDataInfo; override;
    procedure SetEmptyInit; override;
    procedure InsertInit; override;
    procedure TableBeforePost; override;
    procedure TableAfterPost; override;
    { Public declarations }
  end;

var
  Csh600_02Form: TCsh600_02Form;

implementation

uses CommFun, HwSelData, SYSDATA, CshComm;

{$R *.dfm}

procedure TCsh600_02Form.OpenData(AType,ACustNo,ACurrNo:Integer);
begin
  if (AType=0) and (ACustNo=0) and (ACurrNo=0) then AMode:='ADD' else AMode:='UPD';
  ADOQuery1.DisableControls;
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select AA.C600_001,AA.C600_002,AA.C600_003,BB.O150_002,BB.O150_003,BB.G100_002,BB.G100_003,AA.C600_004,AA.C600_005,AA.C600_006,AA.C600_007');
  ADOQuery1.SQL.Add('from CSH600 AA,');
  ADOQuery1.SQL.Add('  (select A.C600_001,A.C600_002,A.C600_003,');
  ADOQuery1.SQL.Add('       B.O150_002,B.O150_003,');
  ADOQuery1.SQL.Add('       C.G100_002,C.G100_003');
  ADOQuery1.SQL.Add('  from CSH600 A,ORD150 B,GLD100 C');
  ADOQuery1.SQL.Add('  where C600_001=0 and C600_002=O150_001 and C600_003=G100_001');
  ADOQuery1.SQL.Add('  union');
  ADOQuery1.SQL.Add('  select A.C600_001,A.C600_002,A.C600_003,');
  ADOQuery1.SQL.Add('       B.H150_002,B.H150_003,');
  ADOQuery1.SQL.Add('       C.G100_002,C.G100_003');
  ADOQuery1.SQL.Add('  from CSH600 A,HRM150 B,GLD100 C');
  ADOQuery1.SQL.Add('  where C600_001=1 and C600_002=H150_001 and C600_003=G100_001');
  ADOQuery1.SQL.Add('  ) BB');
  ADOQuery1.SQL.Add('where AA.C600_001=BB.C600_001 and AA.C600_002=BB.C600_002 and AA.C600_003=BB.C600_003');
  ADOQuery1.SQL.Add('order by AA.C600_001,BB.O150_002,BB.G100_002');
  ADOQuery1.Open;
  if AMode<>'ADD' then
  begin
    ADOQuery1.Locate('C600_001;C600_002;C600_003',VarArrayOf([AType,ACustNo,ACurrNo]),[]);
    ADOQuery1AfterScroll(ADOQuery1);
  end else
  begin
    SetEmptyInit;
  end;
  ADOQuery1.EnableControls;
end;

procedure TCsh600_02Form.SetInterface;
begin
  inherited;
  Caption:=GetDBString('CSH60002001');  //债权债务设置
  lblInOut.Caption:=GetDBString('CSH60002002');  //债仅债务
  lblType.Caption:=GetDBString('CSH60002003');  //对象类型
  lblCurr.Caption:=GetDBString('CSH60002004');  //币别编号
  lblCust.Caption:=GetDBString('CSH60002005');  //对象编号
  lblDate.Caption:=GetDBString('CSH60002006');  //建立日期
  lblAmount.Caption:=GetDBString('CSH60002007');  //期初金额
  lblRemark.Caption:=GetDBString('CSH60002008');  //备注说明

  cbInOut.Clear;
  cbInOut.Items.Add(GetDBString('CSH60002009'));  //债权
  cbInOut.Items.Add(GetDBString('CSH60002010'));  //债务
  cbInOut.ItemIndex:=0;

  cbType.Clear;
  cbType.Items.Add(GetDBString('CSH60002011'));  //客户
  cbType.Items.Add(GetDBString('CSH60002012'));  //员工
  cbType.ItemIndex:=0;
  cbTypeChange(cbType);
  
  qryOrd150FCode.DisplayLabel:=GetDBString('CSH60002013');  //对象编号
  qryOrd150FName.DisplayLabel:=GetDBString('CSH60002014');  //对象名称

  //币别名称
  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 TCsh600_02Form.FormCreate(Sender: TObject);
begin
  inherited;
  AOldAmount:=0;
end;

procedure TCsh600_02Form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  qryOrd150.Close;
  qryGld100.Close;
end;

procedure TCsh600_02Form.GetDataInfo;
begin
  inherited;
  cbType.ItemIndex:=ADOQuery1.FieldByName('C600_001').Value;  //对象类型
  cbTypeChange(cbType);
  qryOrd150.Locate('FNo',ADOQuery1.FieldByName('C600_002').Value,[]);  //对象编号
  edtCust.Text:=qryOrd150.FieldByName('FCode').AsString;  //对象编号
  edtCustName.Text:=qryOrd150.FieldByName('FName').AsString;  //对象名称
  qryGld100.Locate('G100_001',ADOQuery1.FieldByName('C600_003').Value,[]);
  cbCurr.ItemIndex:=cbCurr.Items.IndexOf(qryGld100.FieldByName('G100_003').AsString);
  cbInOut.ItemIndex:=ADOQuery1.FieldByName('C600_004').Value;  //债权债务

  edtDate.Date:=ADOQuery1.FieldByName('C600_005').Value;  //建立日期
  edtAmount.Text:=ADOQuery1.FieldByName('C600_006').AsString;  //期初金额
  memRemark.Text:=ADOQuery1.FieldByName('C600_007').AsString;  //备注说明

  AOldTypeNo:=cbType.ItemIndex;
  AOldCustNo:=qryOrd150.FieldByName('FNo').AsInteger;
  AOldCurrNo:=qryGld100.FieldByName('G100_001').AsInteger;
  AOldDate:=edtDate.Date;
  AOldAmount:=StrToFloat(edtAmount.Text);
  AOldCode:=IntToStr(cbInOut.ItemIndex)+IntToStr(cbType.ItemIndex)+cbCurr.Text+edtCust.Text;
end;

procedure TCsh600_02Form.InsertInit;
begin
  inherited;
  SetEmptyInit;
end;

procedure TCsh600_02Form.SetEmptyInit;
begin
  inherited;
  cbInOut.ItemIndex:=0;
  cbType.ItemIndex:=0;
  cbTypeChange(cbType);
  //币别=本位币
  qryGld100.Locate('G100_003',ACurrName,[]);
  cbCurr.ItemIndex:=cbCurr.Items.IndexOf(ACurrName);
  edtCust.Text:='';
  edtCustName.Text:='';
  edtDate.Date:=GetServerDate;
  edtAmount.Text:='0';
  memRemark.Text:='';

  AOldAmount:=0;
  AAmount:=0;
  AOldTypeNo:=0;
  AOldCustNo:=0;
  AOldCurrNo:=0;
  AOldDate:=0;
  AOldCode:='';
end;

procedure TCsh600_02Form.TableBeforePost;
var
  ADate:TDateTime;
begin
  inherited;
  if trim(edtCust.Text)='' then
  begin
    ShowMsg('UMS10000590');  //对象编号不能为空
    edtCust.SetFocus;
    Abort;
  end;
  if trim(edtDate.Text)='' then
  begin
    ShowMsg('UMS10000645');  //建立日期不能为空
    edtDate.SetFocus;
    Abort;
  end;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select C510A_010 from CSH510A,CSH550 where C510A_003=C550_001 and C510A_004=0 and C510A_007='+IntToStr(cbType.ItemIndex)+' and C510A_008='+qryOrd150.FieldByName('FNo').AsString+' and C550_005='+qryGld100.FieldByName('G100_001').AsString);
  SYSDM.qryQuery.Open;
  if not SYSDM.qryQuery.IsEmpty then
  begin
    ADate:=SYSDM.qryQuery.Fields[0].Value;
    if edtDate.Date>ADate then
    begin
      ShowMsg('UMS10000648');  //日期必须小于或等于所有收支单和转帐单的日期
      edtDate.SetFocus;
      Abort;
    end;
  end;
  try
    StrToFloat(edtAmount.Text);
  except
    ShowMsg('UMS10000646');  //输入的期初金额值无效
    edtAmount.SetFocus;
    Abort;
  end;
  AAmount:=StrToFloat(edtAmount.Text);
  if AOldCode<>IntToStr(cbInOut.ItemIndex)+IntToStr(cbType.ItemIndex)+cbCurr.Text+edtCust.Text then
  begin
    if IsExists('select 1 from CSH600 where C600_001='+IntToStr(cbType.ItemIndex)+' and C600_002='+qryOrd150.FieldByName('FNo').AsString+' and C600_003='+qryGld100.FieldByName('G100_001').AsString) then
    begin
      ShowMsg('UMS10000647');  //不能重复设置相同的客户债务或债务记录
      cbInout.SetFocus;
      Abort;
    end;
  end;

  qryCsh610.Close;
  qryCsh610.SQL.Clear;
  qryCsh610.SQL.Add('delete from CSH610 where C610_001='+IntToStr(cbType.ItemIndex)+' and C610_002='+qryOrd150.FieldByName('FNo').AsString+' and C610_003='+qryGld100.FieldByName('G100_001').AsString);
  qryCsh610.ExecSQL;
  if AMode='ADD' then ADOQuery1.Append else ADOQuery1.Edit;
  ADOQuery1.FieldByName('C600_001').Value:=cbType.ItemIndex;  //对象类型
  ADOQuery1.FieldByName('C600_002').Value:=qryOrd150.FieldByName('FNo').Value;  //对象编号
  ADOQuery1.FieldByName('C600_003').Value:=qryGld100.FieldByName('G100_001').Value;  //币别编号
  ADOQuery1.FieldByName('C600_004').Value:=cbInOut.ItemIndex;  //债权债务
  ADOQuery1.FieldByName('C600_005').Value:=edtDate.Date;  //建立日期
  ADOQuery1.FieldByName('C600_006').Value:=StrToFloat(edtAmount.Text);  //期初金额
  ADOQuery1.FieldByName('C600_007').AsString:=memRemark.Text;  //备注说明
end;

procedure TCsh600_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 TCsh600_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;
end;

procedure TCsh600_02Form.cbCurrChange(Sender: TObject);
begin
  inherited;
  qryGld100.Locate('G100_003',cbCurr.Text,[]);
end;

procedure TCsh600_02Form.edtAmountKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  ValidFloat(Sender,Key);
end;

procedure TCsh600_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 TCsh600_02Form.TableAfterPost;
begin
  inherited;
  //更新债权债务帐本表 CSH610
  UpdateCSH610(AOldTypeNo,AOldCustNo,AOldCurrNo,0,0,0,0,AOldDate,AOldAmount,'','','DEL');
  UpdateCSH610(cbType.ItemIndex,qryOrd150.FieldByName('FNo').AsInteger,qryGld100.FieldByName('G100_001').AsInteger,0,cbInOut.ItemIndex,0,0,edtDate.Date,AAmount,'',GetDBString('CSH60002015'),'ADD');
end;

initialization
  RegisterClass(TCsh600_02Form);

finalization
  UnRegisterClass(TCsh600_02Form);

end.

⌨️ 快捷键说明

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