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

📄 gl_enter_carryforward.pas

📁 一个MRPII系统源代码版本
💻 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 + -