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

📄 gl_enter_passaccount.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -