📄 gl_enter_passaccount.pas
字号:
unit Gl_Enter_PassAccount;
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Base_Check, Menus, Db, ActnList, AdODB, Grids, DBGridEh, StdCtrls,
ExtCtrls, ComCtrls, ToolWin, Buttons, ExtPrintReport, jpeg;
Type
TFrm_Gl_Enter_PassAccount = Class(TFrm_Base_Check)
AdoQry_HeadCharacterNo: TStringField;
AdoQry_HeadCredenceDate: TDateTimeField;
AdoQry_HeadTotalDebitAmount: TFloatField;
AdoQry_HeadTotalCreditAmount: TFloatField;
AdoQry_HeadCreateEmployeeCode: TStringField;
AdoQry_HeadSignFlag: TIntegerField;
AdoQry_HeadCashierEmployeeCode: TStringField;
AdoQry_HeadTallyFlag: TIntegerField;
AdoQry_HeadTallyEmployeeCode: TStringField;
AdoQry_HeadAssessFlag: TIntegerField;
AdoQry_HeadAssessorEmployeeCode: TStringField;
AdoQry_HeadCharacterName: TStringField;
AdoQry_HeadCreateEmployeeName: TStringField;
AdoQry_HeadCreateEmployeeFlag: TStringField;
AdoQry_HeadCashierEmployeeName: TStringField;
AdoQry_HeadCashierFlag: TStringField;
AdoQry_HeadTallyEmployeeName: TStringField;
AdoQry_HeadTallyerFlag: TStringField;
AdoQry_HeadAssessorEmployeeName: TStringField;
AdoQry_HeadAssessorFlag: TStringField;
AdoQry_HeadBillAmount: TIntegerField;
AdoQry_HeadGl_CredenceCodeNo: TStringField;
AdoQry_HeadCheckFlag: TIntegerField;
AdoQry_HeadCredenceId: TAutoIncField;
AdoQry_HeadCredenceType: TIntegerField;
AdoQry_HeadCharacterCode: TStringField;
Label1: TLabel;
AdoQry_HeadRemArk: TStringField;
AdoQry_HeadCredenceNo: TStringField;
procedure DBGridEhTitleClick(Column: TColumnEh);
procedure Act_CheckExecute(Sender: TObject);
procedure Act_LookExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure AdoQry_HeadAfterPost(DataSet: TDataSet);
procedure TlBtn_CancelCheckClick(Sender: TObject);
private
{ Private declarations }
BlnCheckFlag:Boolean;
Function CheckPassInfo(R_StrCredenceNo:String):Boolean;
public
{ Public declarations }
procedure InitForm(AdOConnection:TAdOConnection;ReadOnly:Boolean);Override;
procedure UpdateSubjectBalance(R_StrCredenceNo:String);
end;
var
Frm_Gl_Enter_PassAccount: TFrm_Gl_Enter_PassAccount;
implementation
uses Sys_Global, Gl_Enter_Credence, Gl_Enter_PassCredence;
{$R *.DFM}
procedure TFrm_Gl_Enter_PassAccount.InitForm(
AdOConnection:TAdOConnection;ReadOnly:Boolean);
var StrSqlText:String;
begin
Inherited;
StrSqlText:='Select 0 As CheckFlag,Gl_Credence.*,Gl_CredenceType.CharacterName,Gl_CredenceType.CharacterCode+''-''+Convert(varchAr,Gl_Credence.CredenceNo) '
+' As Gl_CredenceCodeNo,Gl_CredenceType.CharacterCode,A.EmployeeName As CreateEmployeeName,'
+' Gl_Credence.CreateEmployeeCode+'' ''+A.EmployeeName As CreateEmployeeFlag,'
+' B.EmployeeName As CashierEmployeeName,Gl_Credence.CashierEmployeeCode+'' ''+B.EmployeeName As CashierFlag,'
+' C.EmployeeName As TallyEmployeeName,Gl_Credence.TallyEmployeeCode+'' ''+C.EmployeeName As TallyerFlag,'
+' D.EmployeeName As AssessorEmployeeName,Gl_Credence.AssessorEmployeeCode+'' ''+D.EmployeeName As AssessorFlag '
+' Into #Gl_PassAccount From Gl_Credence '
+' Join Gl_CredenceType '
+' On Gl_Credence.CharacterNo = Gl_CredenceType.CharacterNo '
+' Left Join Employee A '
+' On Gl_Credence.CreateEmployeeCode = A.EmployeeCode '
+' Left Join Employee B '
+' On Gl_Credence.CashierEmployeeCode = B.EmployeeCode '
+' Left Join Employee C '
+' On Gl_Credence.TallyEmployeeCode = C.EmployeeCode '
+' Left Join Employee D '
+' On Gl_Credence.AssessorEmployeeCode = D.EmployeeCode ';
ExecuteSql(AdoQry_Tmp,StrSqlText,1);
SelectFromSql:='Select * From #Gl_PassAccount';
OrderByFields:='CharacterNo,CredenceNo';
ConditionUserDefine := 'AssessFlag=1';
Condition:='TallyFlag=0';
GetData;
BlnCheckFlag:=False;
ToolButton6.Enabled:=True;
end;
procedure TFrm_Gl_Enter_PassAccount.DBGridEhTitleClick(Column: TColumnEh);
var BookMArk:String;
begin
inherited;
If Trim(Column.Title.Caption)<>'标记' Then
Abort;
If AdoQry_Head.RecordCount=0 Then
Abort;
BookMArk:=AdoQry_Head.BookmArk;
AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
AdoQry_Head.Edit;
IF BlnCheckFlag=False Then
AdoQry_Head.fieldbyname('CheckFlag').AsInteger := 1
Else
AdoQry_Head.fieldbyname('CheckFlag').AsInteger := 0;
AdoQry_Head.Post;
AdoQry_Head.Next;
end;
IF BlnCheckFlag=False Then
BlnCheckFlag:=True
Else
BlnCheckFlag:=False;
AdoQry_Head.BookmArk:=BookMArk;
end;
procedure TFrm_Gl_Enter_PassAccount.Act_CheckExecute(Sender: TObject);
var BkmBookMArk:String;
StrSqlText:String;
StrCredenceNo:String;
AdoQry:TAdoQuery;
begin
inherited;
If AdoQry_Head.RecordCount=0 Then Exit;
If DispInfo('您真的要对这些凭证过账吗?',2)='n' Then Exit;
If AdoQry_Head.State In [dsEdit,DsInsert] then AdoQry_Head.Post;
AdoQry := TAdoQuery.Create(nil);
AdoQry.Connection := Dbconnect;
AdoQry.EnableBCD := False;
BkmBookMArk:=AdoQry_Head.BookMArk;
try
ExecuteSql(AdoQry,'select * from #Gl_PassAccount '
+' where CheckFlag=1',0);
While Not AdoQry.Eof do begin
If Not CheckPassInfo(AdoQry.fieldbyname('CredenceNo').AsString) then
begin
DispInfo('记账凭证'+QuotedStr(AdoQry.fieldbyname('CredenceNo').AsString)+'已被其他用户过帐了!',1);
AdoQry_Head.Locate('CredenceNo',AdoQry.fieldbyname('CredenceNo').AsString,[]) ;
Abort;
end;
AdoQry.Next;
end;
// AdoQry.Free;
Except
If Assigned(AdoQry) then AdoQry.Free;
Abort;
end;
Try
dbconnect.beginTrans;
StrSqlText:='Update Gl_Credence '
+' Set TallyFlag=1,TallyEmployeeCode='''+UserCode+''' '
+'Where CredenceNo In (select CredenceNo from #Gl_PassAccount where CheckFlag=1)';
ExecuteSql(AdoQry_Tmp,StrSqlText,1);
UpdateSubjectBalance(StrCredenceNo);
ExecuteSql(AdoQry,'select * from #Gl_PassAccount '
+' where CheckFlag=1',0);
While Not AdoQry.Eof do begin
SaveCredenceHistory(DBConnect,AdoQry.fieldbyname('CredenceNo').AsString,UserCode,8);
If AdoQry_Head.Locate('CredenceNo',AdoQry.fieldbyname('CredenceNo').AsString,[]) then
begin
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('TallyFlag').AsInteger := 1;
AdoQry_Head.fieldbyname('CheckFlag').AsInteger := 0;
AdoQry_Head.Post;
end;
AdoQry.Next;
end;
AdoQry.Free;
Dbconnect.CommitTrans;
except
If Assigned(AdoQry) then AdoQry.Free;
If Dbconnect.InTransaction then Dbconnect.RollBackTrans;
DispInfo('数据更新失败!',1);
Abort;
end;
AdoQry_Head.BookmArk := BkmBookMArk;
{ AdoQry_Head.First;
While Not AdoQry_Head.Eof Do
begin
IF (AdoQry_Head.fieldbyname('CheckFlag').AsInteger = 1) And
(AdoQry_Head.fieldbyname('TallyFlag').AsInteger = 0 ) Then
begin
StrCredenceNo:=AdoQry_Head.fieldbyname('CredenceNo').AsString;
DbConnect.beginTrans;
If CheckPassInfo(StrCredenceNo) Then
begin
Try
SaveCredenceHistory(DBConnect,StrCredenceNo,UserCode,8);
StrSqlText:='Update Gl_Credence Set TallyFlag=1,TallyEmployeeCode='''+UserCode+''' '+
'Where CredenceNo='+QuotedStr(StrCredenceNo)+'';
ExecuteSql(AdoQry_Tmp,StrSqlText,1);
UpdateSubjectBalance(StrCredenceNo);
DbConnect.CommitTrans;
Except
DbConnect.RollBackTrans;
DispInfo('当前记录更新失败,稍后请重试',1);
Abort;
end;
AdoQry_Head.Edit;
AdoQry_Head.fieldbyname('CheckFlag').AsInteger:=0;
AdoQry_Head.fieldbyname('TallyFlag').AsInteger:=1;
AdoQry_Head.Post;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -