📄 gl_enter_carryforward.pas
字号:
unit Gl_Enter_CarryForward;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Dialog, Db, AdODB, StdCtrls, Mask, linkedit, Grids, DBGridEh;
Type
TFrm_Gl_Enter_CarryForward = Class(TFrm_Base_Dialog)
Label2: TLabel;
Edt_CLKmCode: TLinkEdit;
Edt_ClKmName: TEdit;
procedure btn_CancelClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure btn_okClick(Sender: TObject);
procedure Edt_CLKmCodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edt_CLKmCodeButtonClick(Sender: TObject);
procedure Edt_CLKmCodeExit(Sender: TObject);
procedure AdoQueryBeforeInsert(DataSet: TDataSet);
private
{ Private declarations }
public
SySCredenceNo,CredenceNo : String; //系统凭证号 、凭证号
procedure GetCredenceNo;
{ Public declarations }
end;
var
Frm_Gl_Enter_CarryForward: TFrm_Gl_Enter_CarryForward;
implementation
uses Sys_Global;
{$R *.DFM}
procedure TFrm_Gl_Enter_CarryForward.GetCredenceNo;
var PreStr :String;
SqlText : String;
begin
SqlText := 'select SysProduceCrendentNoWay,ProduceCrendentNoWay from Gl_AccountParam ';
ExecuteSQl(AdoQry_Tmp,SqlText,0);
case AdoQry_Tmp.fieldbyname('SysProduceCrendentNoWay').AsInteger of
1: begin
// PerStr := OrderOrdinalBLetter;
SqlText := ' Select Max(SySCredenceNo) As MaxOrderNo From Gl_Credence ';
// +' Where SySCredenceNo Like '''+PerStr+'''+''%''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString <> '' then
begin
SySCredenceNo := copy(InttoStr(100000000+StrToInt(AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString)+1),2,8);
end
else
begin
SySCredenceNo := '00000001';
end;
end;
2 : begin
PreStr :=copy(FormatDateTime('YYYY',date()),3,2);
SqlText := ' Select Max(SySCredenceNo) As MaxOrderNo From Gl_Credence '
+' Where SySCredenceNo Like '''+PreStr+'''+''%''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString <> '' then
begin
SySCredenceNo := PreStr+Copy(InttoStr(10000000+StrToInt(Copy(AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString,Length(PreStr)+1,7))+1),2,7);
end
else
begin
SySCredenceNo := PreStr+'0000001';
end;
end;
3:begin
PreStr := copy(FormatDateTime('YYYY',date()),3,2)+FormatDateTime('MM',date());
SqlText :=' Select Max(SySCredenceNo) As MaxOrderNo From Gl_Credence '
+' Where SySCredenceNo Like '''+PreStr+'''+''%''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString <> '' then
begin
SySCredenceNo := PreStr+Copy(InttoStr(10000+StrToInt(Copy(AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString,Length(PreStr)+1,4))+1),2,4);
end
else
begin
SySCredenceNo := PreStr+'0001';
end;
end;
end;
SqlText := 'select SysProduceCrendentNoWay,ProduceCrendentNoWay from Gl_AccountParam ';
ExecuteSQl(AdoQry_Tmp,SqlText,0);
case AdoQry_Tmp.fieldbyname('ProduceCrendentNoWay').AsInteger of
1: begin
// PerStr := OrderOrdinalBLetter;
SqlText := ' Select Max(CredenceNo) As MaxOrderNo From Gl_Credence ';
// +' Where CredenceNo Like '''+PerStr+'''+''%''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString <> '' then
begin
CredenceNo := copy(InttoStr(100000000+StrToInt(AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString)+1),2,8);
end
else
begin
CredenceNo := '00000001';
end;
end;
2 : begin
PreStr :=copy(FormatDateTime('YYYY',date()),3,2);
SqlText := ' Select Max(CredenceNo) As MaxOrderNo From Gl_Credence '
+' Where CredenceNo Like '''+PreStr+'''+''%''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString <> '' then
begin
CredenceNo := PreStr+Copy(InttoStr(10000000+StrToInt(Copy(AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString,Length(PreStr)+1,7))+1),2,7);
end
else
begin
CredenceNo := PreStr+'0000001';
end;
end;
3:begin
PreStr := copy(FormatDateTime('YYYY',date()),3,2)+FormatDateTime('MM',date());
SqlText :=' Select Max(CredenceNo) As MaxOrderNo From Gl_Credence '
+' Where CredenceNo Like '''+PreStr+'''+''%''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString <> '' then
begin
CredenceNo := PreStr+Copy(InttoStr(10000+StrToInt(Copy(AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString,Length(PreStr)+1,4))+1),2,4);
end
else
begin
CredenceNo := PreStr+'0001';
end;
end;
4: begin
PreStr := userCode;
SqlText := ' Select Max(CredenceNo) As MaxOrderNo From Gl_Credence '
+' Where CredenceNo Like '''+PreStr+'''+''%''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString <> '' then
begin
CredenceNo := PreStr+copy(InttoStr(100000000+StrToInt(Copy(AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString,Length(PreStr)+1,8))+1),2,8);
end
else
begin
CredenceNo := PreStr+'00000001';
end;
end;
5: begin
PreStr := 'J';
SqlText := ' Select Max(CredenceNo) As MaxOrderNo From Gl_Credence '
+' Where CredenceNo Like '''+PreStr+'''+''%''';
AdoQry_Tmp.Close;
AdoQry_Tmp.SQL.clear;
AdoQry_Tmp.SQL.Text := SqlText;
AdoQry_Tmp.Open;
if AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString <> '' then
begin
CredenceNo := PreStr+copy(InttoStr(100000000+StrToInt(Copy(AdoQry_Tmp.fieldbyname('MaxOrderNo').AsString,Length(PreStr)+1,8))+1),2,8);
end
else
begin
CredenceNo := PreStr+'00000001';
end;
end;
end;
end;
procedure TFrm_Gl_Enter_CarryForward.btn_CancelClick(Sender: TObject);
begin
inherited;
Close;
end;
procedure TFrm_Gl_Enter_CarryForward.FormActivate(Sender: TObject);
var SqlText : String;
begin
inherited;
Edt_ClKmCode.Text := '3131';
// Edt_ClKmCode.OnExit(Edt_ClKmCode);
{ AdoQuery.Connection := Dbconnect;
SqlText := ' DeclAre @CurrentYear Int, '
+' @CurrentMonth Int, '
+' @NextYear Int, '
+' @NextMonth Int '
+' select @CurrentYear = AccountPeriodYear, '
+' @CurrentMonth = AccountPeriodMonth '
+' from Gl_AccountPeriod '
+' where CurrentPeriod=1 '
+' select @NextYear = DatePArt(yy,DateAdd(mm,1,Convert(varchAr,@CurrentYear)+''.''+Convert(varchAr,@CurrentMonth)+''.01'')), '
+' @NextMonth = DatePArt(mm,DateAdd(mm,1,Convert(varchAr,@CurrentYear)+''.''+Convert(varchAr,@CurrentMonth)+''.01'')) '
+' '
+' select Currency.CurrencyCode, '
+' Currency.CurrencyName, '
+' Currency.CurrencyCode+'' ''+Currency.CurrencyName as CurrencyFlag, '
+' Sum(case when DatePArt(yy,ExchRate.ExchMonth+''.01'')=@CurrentYear '
+' and DatePArt(mm,ExchRate.ExchMonth+''.01'')=@CurrentMonth '
+' then ExchRate.ExchRate '
+' else 0.0 '
+' end )as FirstExchRate, '
+' Sum(case when DatePArt(yy,ExchRate.ExchMonth+''.01'')=@NextYear '
+' and DatePArt(mm,ExchRate.ExchMonth+''.01'')=@NextMonth '
+' then ExchRate.ExchRate '
+' else 0.0 '
+' end ) as LastExchRate '
+' from Currency '
+' join ExchRate on Currency.CurrencyCode = ExchRate.CurrencyCode '
+' where Currency.IsMaster<>1 '
+' group by Currency.CurrencyCode,CurrencyName '
+' ';
ExecuteSql(AdoQuery,SQlTExt,0) ; }
end;
procedure TFrm_Gl_Enter_CarryForward.btn_okClick(Sender: TObject);
var ChractorNo : String;
begin
inherited;
If Trim(Edt_ClKmCode.Text)='' then
begin
DispInfo('请选择本年利润科目!',3);
Edt_ClKmCode.SetFocus;
Abort;
end;
Edt_ClKmCode.OnExit(Edt_ClKmCode);
If DispInfo('确认要结转损益吗?',2)<>'y' then Exit;
ExecuteSql(AdoQry_Tmp,'select * from Gl_CredenceType Order by CharacterNo',0);
ChractorNo := AdoQry_Tmp.fieldbyname('CharacterNo').AsString;
GetCredenceNo;
try
Dbconnect.beginTrans;
ExecuteSql(AdoQry_Tmp,' declAre @Ff varchAr(100) '
+' Exec dbo.Usp_CarryForward '+QuotedStr(Trim(Edt_ClKmCode.Text))+','
+QuotedStr(CredenceNo)+','
+QuotedStr(SySCredenceNo)+','
+QuotedStr(ChractorNo)+','
+QuotedStr(UserCode)+', @FF output'
+' select @FF as FF ',0);
If AdoQry_Tmp.fieldbyname('FF').AsString<>'' then
begin
DispInfo(AdoQry_Tmp.fieldbyname('FF').AsString,1);
Abort;
end;
Dbconnect.CommitTrans;
DispInfo('结转损益成功!',3);
Except
If Dbconnect.InTransaction then Dbconnect.RollBackTrans;
DispInfo('结转损益失败!',1);
Abort;
end;
end;
procedure TFrm_Gl_Enter_CarryForward.Edt_CLKmCodeKeyDown(
Sender: TObject; var Key: Word; Shift: TShiftState);
begin
inherited;
if key=120 then
CommOnHint(Sender,AdoQry_Tmp,'kmName','科目名称','kmCode',
'科目代码',' Gl_AccountSubject ',
' endkm=1 and kmfreeze=0 '
+' and Exists(select CurrencyCode from Currency '
+' where Gl_AccountSubject.FCurrecy=Currency.CurrencyCode '
+' and Currency.IsMaster=1 ) ');
end;
procedure TFrm_Gl_Enter_CarryForward.Edt_CLKmCodeButtonClick(
Sender: TObject);
begin
inherited;
CommOnHint(Sender,AdoQry_Tmp,'kmName','科目名称','kmCode',
'科目代码',' Gl_AccountSubject ',
' endkm=1 and kmfreeze=0 '
+' and Exists(select CurrencyCode from Currency '
+' where Gl_AccountSubject.FCurrecy=Currency.CurrencyCode '
+' and Currency.IsMaster=1 ) ');
end;
procedure TFrm_Gl_Enter_CarryForward.Edt_CLKmCodeExit(
Sender: TObject);
begin
inherited;
if(ActiveControl.Name='btn_Cancel')then
Abort;
if TCustomEdit(Sender).Text <>'' then
begin
ExecuteSql(AdoQry_Tmp,' Select KmCode,KmName from Gl_AccountSubject '
+' where KmCode= '+QuotedStr(TCustomEdit(Sender).Text)
+' and endkm=1 and kmfreeze=0 '
+' and Exists(select CurrencyCode from Currency '
+' where Gl_AccountSubject.FCurrecy=Currency.CurrencyCode '
+' and Currency.IsMaster=1 ) ' ,0);
if not AdoQry_Tmp.Eof then
EDT_CLKmName.Text := AdoQry_Tmp.fieldbyname('KmName').AsString
else
begin
DispInfo('科目代码错误,请重新输入',1);
TWinControl(Sender).SetFocus;
Abort;
end;
end
else
EDT_CLKmName.Text := '';
end;
procedure TFrm_Gl_Enter_CarryForward.AdoQueryBeforeInsert(
DataSet: TDataSet);
begin
inherited;
Abort;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -