📄 csh600_02.pas.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 + -