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

📄 gl_enter_firstsubjectbalance_d1.pas

📁 一个MRPII系统源代码版本
💻 PAS
字号:
unit Gl_Enter_FirstSubjectBalance_D1;

Interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Base_Detail, Db, AdODB, ExtCtrls, StdCtrls;

Type
  TFrm_Gl_Enter_FirstSubjectBalance_D1 = Class(TFrm_Base_Detail)
    Label1: TLabel;
    Label2: TLabel;
    edt_kmName: TEdit;
    edt_kmCode: TEdit;
    Label3: TLabel;
    edt_fdebit: TEdit;
    edt_fcredit: TEdit;
    Label4: TLabel;
    edt_fFirstBalance: TEdit;
    Label5: TLabel;
    edt_AmountBalance: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    edt_Debit: TEdit;
    edt_Credit: TEdit;
    Label8: TLabel;
    edt_FirstBalance: TEdit;
    Label9: TLabel;
    cmb_Balancedir: TComboBox;
    Label10: TLabel;
    Label11: TLabel;
    Edt_ExchRate: TEdit;
    procedure btn_okClick(Sender: TObject);
  private
    FirstBalance:double;
    fFirstBalance:double;
    { Private declarations }
  public
    stArtYear,stArtMonth:integer;
    procedure InitControls; Override;
    procedure SaveData;Override;
    procedure SetStatus(CurrentStatus:String;var EnableControls:String); Override;
    { Public declarations }
  end;

var
  Frm_Gl_Enter_FirstSubjectBalance_D1: TFrm_Gl_Enter_FirstSubjectBalance_D1;

implementation
uses Sys_Global;
{$R *.DFM}
procedure TFrm_Gl_Enter_FirstSubjectBalance_D1.InitControls;
var SqlText : String;
begin
  inherited;
  setfocus_Control:=edt_Debit;
  case AdoQry_Maintain.fieldbyname('Amountcalculate').asinteger of
    1 : edt_AmountBalance.Enabled:=True;
    0 : edt_AmountBalance.Enabled:=False;
  end;
  with AdoQry_Maintain do
  begin
    edt_kmCode.Text:=fieldbyname('kmCode').asstring;
    edt_kmName.Text:=Trim(fieldbyname('kmName').asstring);
    edt_fdebit.Text:=floattostr(fieldbyname('FirstfdebitBalance').asfloat);
    edt_fcredit.Text:=floattostr(fieldbyname('FirstfcreditBalance').asfloat);
    edt_fFirstBalance.Text:=floattostr(fieldbyname('fFirstBalance').asfloat);
    edt_Debit.Text:=floattostr(fieldbyname('FirstdebitBalance').asfloat);
    edt_Credit.Text:=floattostr(fieldbyname('FirstcreditBalance').asfloat);
    edt_FirstBalance.Text:=floattostr (fieldbyname('FirstBalance').asfloat);
    Edt_ExchRate.Text := FloatToStr(fieldbyname('FCurrencyRate').AsFloat);
    edt_AmountBalance.Text:=floattostr(fieldbyname('FirstAmountBalance').asfloat);
  end;
  Executesql(AdoQry_tmp,'select * from Gl_AccountParam',0) ;
  stArtYear:=AdoQry_tmp.fieldbyname('AccountuseYear').asinteger;
  stArtMonth:=AdoQry_tmp.fieldbyname('AccountuseMonth').asinteger;
  ExecuteSql(AdoQry_Tmp,'select * from Currency where IsMaster=1 and CurrencyCode='+QuotedStr(AdoQry_Maintain.fieldbyname('Fcurrecy').AsString),0);
  If AdoQry_tmp.RecordCount>0 then
  begin
    Edt_ExchRate.Text := '1';  
    Edt_ExchRate.Enabled := False;
  end
  else
  begin
    If AdoQry_Maintain.fieldbyname('Fcurrecy').AsString='' then
    begin
      Edt_ExchRate.Text := '1';  
      Edt_ExchRate.Enabled := False;
    end
    else
    begin
   //   Executesql(AdoQry_tmp,'select dateName(yy,getdate())+''.''+dateName(mm,getdate()) as nMonth',0);
      sqltext:='select ExchRate   from ExchRate ' 
              +' where Convert(int,SubString(ExchMonth,1,4))='+IntToStr(StArtYear)
              +'  and  Convert(int,SubString(ExchMonth,6,2))='+IntToStr(StArtMonth)
              +'  and  currencyCode='+quotedstr(AdoQry_Maintain.fieldbyname('Fcurrecy').asstring);
      ExecuteSQl(AdoQry_tmp,SQlText,0);
      If Trim(Edt_ExchRate.Text) = '0' then 
      If AdoQry_tmp.RecordCount>0 then 
      Edt_ExchRate.Text := FloatToStr(AdoQry_Tmp.fieldbyname('ExchRate').AsFloat);
      Edt_ExchRate.Enabled := True;
    end;
  end;

  cmb_Balancedir.ItemIndex:=AdoQry_Maintain.fieldbyname('Balancedirection').asinteger-1;
  edt_fdebit.Enabled:=iifValue(stArtMonth>1,True,False);
  edt_fcredit.Enabled:=iifValue(stArtMonth>1,True,False);
end;

procedure TFrm_Gl_Enter_FirstSubjectBalance_D1.SaveData;
var sqltext:string;
begin
 inherited;
 try
 dbconnect.beginTrans;
 Executesql(AdoQry_tmp,'select * from Gl_AccountSubjectBalance where kmid='+inttostr(AdoQry_Maintain.fieldbyname('kmid').asinteger),0);
 if AdoQry_tmp.RecordCount=0 then 
  begin
    sqltext:='insert into Gl_AccountSubjectBalance(kmid,debitBalance,creditBalance, '
            +'                                     fdebitBalance,fcreditBalance, '
            +'                                     FirstBalance,FirstfBalance,FCurrencyRate, '
            +' Balancedirection,endBalance,endFBalance,endBalanceDirection,'+iifstring(stArtMonth>13,'AmountBalance','FirstAmountBalance')+')'
            +' Values('+inttostr(AdoQry_Maintain.fieldbyname('kmid').asinteger)+','
            +           Trim(edt_Debit.text)+','
            +           Trim(edt_Credit.text)+','
            +           Trim(edt_fdebit.text)+','
            +           Trim(edt_fcredit.text)+','
            +           Trim(edt_FirstBalance.text)+','
            +           Trim(edt_fFirstBalance.text)+','
            +           Trim(Edt_ExchRate.Text)+','
            +           inttostr(cmb_Balancedir.Itemindex+1)+','
            +           Trim(edt_FirstBalance.text)+','
            +           Trim(edt_fFirstBalance.text)+','
            +           inttostr(cmb_Balancedir.Itemindex+1)+','
            +           iifstring(AdoQry_Maintain.fieldbyname('Amountcalculate').asinteger=1,Trim(edt_AmountBalance.text),'0')            
            +')';
    Executesql(AdoQry_tmp,sqltext,1);
  end
  else 
   begin
    sqltext:='update Gl_AccountSubjectBalance'
         +' set  debitBalance='+Trim(edt_Debit.text) +','
         +'      creditBalance='+Trim(edt_Credit.text)+','
         +'      fdebitBalance='+Trim(edt_fdebit.text)+','
         +'      fcreditBalance='+Trim(edt_fcredit.text)+','
         +'      FirstBalance='+Trim(edt_FirstBalance.text)+','
         +'      endBalance='+Trim(Edt_FirstBalance.Text)+','
         +'      FCurrencyRate='+Trim(Edt_ExchRate.Text)+','
         +'      FirstfBalance='+Trim(edt_fFirstBalance.text)+','
         +'      endFBalance='+Trim(Edt_FFirstBalance.Text)+','
         +'      Balancedirection='+inttostr(cmb_Balancedir.Itemindex+1)+','
         +'      endBalanceDirection='+IntToStr(Cmb_BalanceDir.ItemIndex+1)+','
         +iifstring(stArtMonth>13,' AmountBalance= ','      FirstAmountBalance=')+iifstring(AdoQry_Maintain.fieldbyname('Amountcalculate').asinteger=1,Trim(edt_AmountBalance.text),'0')
         +' where kmid='+inttostr(AdoQry_Maintain.fieldbyname('kmid').asinteger);
    Executesql(AdoQry_tmp,sqltext,1)      ;
   end;
 sqltext:='update #FirstBalance '
         +' set  FirstdebitBalance='+Trim(edt_Debit.text) +','
         +'      FirstcreditBalance='+Trim(edt_Credit.text)+','
         +'      FirstBalance='+Trim(edt_FirstBalance.text)+','
         +'      endBalance='+Trim(Edt_FirstBalance.Text)+','
         +'      FirstfdebitBalance='+Trim(edt_fdebit.text)+','
         +'      FirstfcreditBalance='+Trim(edt_fcredit.text)+','
         +'      FCurrencyRate='+Trim(Edt_ExchRate.Text)+','
         +'      fFirstBalance='+Trim(edt_fFirstBalance.text)+','
         +'      endFBalance='+Trim(Edt_FFirstBalance.Text)+','
         +'      Balancedirection='+inttostr(cmb_Balancedir.Itemindex+1)+','
         +'      endBalanceDirection = '+IntToStr(Cmb_BalanceDir.ItemIndex+1)+','
         +'      FirstAmountBalance='+iifstring(AdoQry_Maintain.fieldbyname('Amountcalculate').asinteger=1,Trim(edt_AmountBalance.text),'0')
         +' where kmid='+inttostr(AdoQry_Maintain.fieldbyname('kmid').asinteger);
  Executesql(AdoQry_tmp,sqltext,1)         ;
  dbconnect.CommitTrans;
  except
    if dbconnect.InTransaction then dbconnect.RollBackTrans;
    abort;
  end;
  AdoQry_Maintain.fieldbyname('FirstdebitBalance').asfloat:=strtofloat(Trim(edt_Debit.text));
  AdoQry_Maintain.fieldbyname('FirstcreditBalance').asfloat:=strtofloat(Trim(edt_Credit.text));
  AdoQry_Maintain.fieldbyname('FirstfdebitBalance').asfloat:=strtofloat(Trim(edt_fdebit.text));
  AdoQry_Maintain.fieldbyname('FirstfcreditBalance').asfloat:=strtofloat(Trim(edt_fcredit.text));
  AdoQry_Maintain.fieldbyname('FirstAmountBalance').asfloat:=strtofloat(Trim(edt_AmountBalance.text));
  AdoQry_Maintain.fieldbyname('FirstBalance').asfloat:=strtofloat(Trim(edt_FirstBalance.text));
  AdoQry_Maintain.fieldbyname('fFirstBalance').asfloat:=strtofloat(Trim(edt_fFirstBalance.text));
  AdoQry_Maintain.fieldbyname('endBalance').asfloat:=strtofloat(Trim(edt_FirstBalance.text));
  AdoQry_Maintain.fieldbyname('endFBalance').asfloat:=strtofloat(Trim(edt_fFirstBalance.text));
  AdoQry_Maintain.fieldbyname('FCurrencyRate').asfloat:=strtofloat(Trim(edt_ExchRate.text));
  AdoQry_Maintain.fieldbyname('Balancedirection').asinteger:=cmb_Balancedir.ItemIndex+1;
  AdoQry_Maintain.fieldbyname('endBalancedirection').asinteger:=cmb_Balancedir.ItemIndex+1;
end;

procedure TFrm_Gl_Enter_FirstSubjectBalance_D1.SetStatus(CurrentStatus:String;var EnableControls:String);
begin
 inherited;
 
end;

procedure TFrm_Gl_Enter_FirstSubjectBalance_D1.btn_okClick(Sender: TObject);
  
var Month:string;
    sqltext:string;
begin
{  Executesql(AdoQry_tmp,'select dateName(yy,getdate())+''.''+dateName(mm,getdate()) as nMonth',0);
  Month:=AdoQry_tmp.fieldbyname('nMonth') .asstring;
  sqltext:='select ExchRate   from ExchRate ' 
          +' where ExchMonth='+quotedstr(Month)
          +'  and  currencyCode='+quotedstr(AdoQry_Maintain.fieldbyname('Fcurrecy').asstring);
  Executesql(AdoQry_tmp,sqltext,0)         ;
  if AdoQry_tmp.RecordCount=0 then
  begin
    DispInfo('无当月该外币的汇率资料!',3);
    Edt_Fdebit.SetFocus;
    ModalResult := MrNone;
    abort;
  end;
}
  If Trim(Edt_ExchRate.TExt)='0' then 
  begin
    DispInfo('汇率不能为0!',3);
    if Edt_ExchRate.CanFocus then
    Edt_ExchRate.SetFocus;
    ModalResult := MrNone;
    abort;
  end;
  edt_Debit.Text:=floattostr(strtofloat(Trim(edt_fdebit.text))*StrToFloat(Edt_ExchRate.Text));
  edt_Credit.Text:=floattostr(strtofloat(Trim(edt_fcredit.text))*StrToFloat(Edt_ExchRate.Text));
  edt_FirstBalance.Text:= floattostr(strtofloat(Trim(edt_fFirstBalance.text))*StrToFloat(Edt_ExchRate.Text));
 { case AdoQry_Maintain.fieldbyname('kmproperty').asinteger of 
   1 : 
     begin
     FirstBalance:=strtofloat(Trim(edt_Debit.text))-strtofloat(Trim(edt_Credit.text));
     fFirstBalance:=strtofloat(Trim(edt_fdebit.text))-strtofloat(Trim(edt_fcredit.text));
     end;     
   0 : 
      begin
      FirstBalance:=strtofloat(Trim(edt_Credit.text))-strtofloat(Trim(edt_Debit.text));
      fFirstBalance:=strtofloat(Trim(edt_fcredit.text))-strtofloat(Trim(edt_fdebit.text));
      end;
 end; 
 edt_FirstBalance.Text:=floattostr(FirstBalance)  ; }
  inherited;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -