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

📄 csh730_02.pas.svn-base

📁 开源的网站整站程序,功能强大带采集系统.
💻 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 + -