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

📄 gl_enter_accountsubject_d.pas

📁 一个MRPII系统源代码版本
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Gl_Enter_AccountSubject_D;

Interface

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

Type
  TFrm_Gl_Enter_AccountSubject_D = Class(TFrm_Base_Detail)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Edt_KmHelpCode: TEdit;
    Edt_KmName: TEdit;
    Cmb_KmType: TComboBox;
    Cmb_KmProperty: TComboBox;
    Cmb_PageType: TComboBox;
    Edt_FCurrecy: TLinkEdit;
    Edt_UomCode: TLinkEdit;
    Edt_CurrencyName: TEdit;
    Edt_UomName: TEdit;
    Cmb_CashControl: TComboBox;
    Cmb_KmFreeze: TComboBox;
    Cmb_DepArtCalculate: TComboBox;
    Cmb_PersonCalculate: TComboBox;
    Cmb_CustomerCalculate: TComboBox;
    Cmb_VendorCalculate: TComboBox;
    Cmb_ProjectCalculate: TComboBox;
    Cmb_AmountCalculate: TComboBox;
    Lab_KmLevel: TLabel;
    Edt_KmCode: TEdit;
    procedure Edt_UomCodeExit(Sender: TObject);
    procedure Edt_FCurrecyExit(Sender: TObject);
    procedure btn_okClick(Sender: TObject);
    procedure Edt_KmCodeExit(Sender: TObject);
    procedure Cmb_KmTypeExit(Sender: TObject);
  private
    KmLevel:Integer;
    procedure SaveGl_AccountSubjectHistoryHistory(AdoConnection:TAdoConnection;KmCode:string;UserCode:string;HisType:integer);
    function KmCodeCheck(var_KmCode:String):Integer;
    procedure SetParentKm(km: string; Level: integer);

    function ModifyendKm(var_KmCode:String):Boolean;
    { Private declarations }
  public
    procedure InitControls; Override;
    procedure SaveData; Override;
    { Public declarations }
  end;

var
  Frm_Gl_Enter_AccountSubject_D: TFrm_Gl_Enter_AccountSubject_D;

implementation

uses Sys_Global, Gl_Enter_AccountSubject;

{$R *.DFM}

procedure TFrm_Gl_Enter_AccountSubject_D.Edt_UomCodeExit(Sender: TObject);
var
  SqlText:String;
begin
  inherited;
  if Trim(Edt_UomCode.Text)<> '' then
  begin
    SqlText:='Select UomCode,UomName From Uom Where UomCode='''+Trim(Edt_UomCode.Text)+''' ';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text := SqlText;
    AdoQry_Tmp.Open;
    if AdoQry_Tmp.Eof then
    begin
      DispInfo('计量单位输入错误!',1);
      Edt_UomCode.SetFocus;
      Abort;
    end
    else
      Edt_UomName.Text := AdoQry_Tmp.fieldbyname('UomName').AsString;
  end
  else
    Edt_UomName.Text := '';
end;

procedure TFrm_Gl_Enter_AccountSubject_D.Edt_FCurrecyExit(Sender: TObject);
var
  SqlText:String;
begin
  inherited;
  if not BlankCheck(Edt_FCurrecy.Text,'结算货币') then
  begin
    Edt_FCurrecy.SetFocus;
    abort;
  end;
  if Trim(Edt_FCurrecy.Text)<> '' then
  begin
    SqlText:='Select CurrencyCode,CurrencyName From Currency Where CurrencyCode='''+Trim(Edt_FCurrecy.Text)+''' ';
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text := SqlText;
    AdoQry_Tmp.Open;
    if AdoQry_Tmp.Eof then
    begin
      DispInfo('货币输入错误!',1);
      Edt_FCurrecy.SetFocus;
      Abort;
    end
    else
      Edt_CurrencyName.Text := AdoQry_Tmp.fieldbyname('CurrencyName').AsString;
  end
  else
    Edt_CurrencyName.Text := '';
end;

procedure TFrm_Gl_Enter_AccountSubject_D.InitControls;
begin
  inherited;
  If (status='Add')  Then
  begin
    Lab_KmLevel.Caption := '';
    Edt_KmCode.Text := '';
    Edt_KmHelpCode.Text := '';
    Edt_KmName.Text := '';
    //Edt_TotalKmCode.Text := '';
    ExecuteSql(AdoQry_Tmp,'select * from currency where isMaster=1 ',0);
    Edt_FCurrecy.Text := AdoQry_Tmp.fieldbyname('CurrencyCode').AsString;
    Edt_CurrencyName.Text := AdoQry_Tmp.fieldbyname('CurrencyName').AsString;
    Edt_UomCode.Text := '';
    Edt_UomName.Text := '';
    With Frm_Gl_Enter_AccountSubject do
    begin
      if  PageControl1.ActivePageIndex = 0 then
        Cmb_KmType.ItemIndex := 1
      else
        if  PageControl1.ActivePageIndex = 1 then
          Cmb_KmType.ItemIndex := 1
        else
            if  PageControl1.ActivePageIndex = 2 then
              Cmb_KmType.ItemIndex := 2
            else
                if  PageControl1.ActivePageIndex = 3 then
                   Cmb_KmType.ItemIndex := 3
                else
                  if  PageControl1.ActivePageIndex = 4 then
                    Cmb_KmType.ItemIndex := 4
                  else
                    Cmb_KmType.ItemIndex := 5;
    end;
    Cmb_KmProperty.ItemIndex := 1;
    Cmb_PageType.ItemIndex := 1;
    Cmb_AmountCalculate.ItemIndex := 0;
    Cmb_KmFreeze.ItemIndex := 0;
    Cmb_CashControl.ItemIndex := 0;
    Cmb_PersonCalculate.ItemIndex := 0;
    Cmb_DepArtCalculate.ItemIndex := 0;
    Cmb_VendorCalculate.ItemIndex := 0;
    Cmb_CustomerCalculate.ItemIndex := 0;
    Cmb_ProjectCalculate.ItemIndex := 0;
    Edt_KmCode.Enabled := True;
    if Edt_KmCode.CanFocus then
      Edt_KmCode.SetFocus ;
  end
  else
  begin
    with AdoQry_Maintain do
    begin
      Lab_KmLevel.Caption := fieldbyname('KmLevel').AsString;
      Edt_KmCode.Text := fieldbyname('KmCode').AsString;
      Edt_KmHelpCode.Text := fieldbyname('KmHelpCode').AsString;
      Edt_KmName.Text := fieldbyname('KmName').AsString;
      //Edt_TotalKmCode.Text := fieldbyname('TotalKmCode').AsString;
      Edt_FCurrecy.Text := fieldbyname('FCurrecy').AsString;
      Edt_UomCode.Text := fieldbyname('UomCode').AsString;
      if fieldbyname('FCurrecy').AsString = '' then
         Edt_CurrencyName.Text :=''
      else
      begin
        AdoQry_Tmp.Close;
        AdoQry_Tmp.SQL.clear;
        AdoQry_Tmp.SQL.Add('Select * From Currency Where CurrencyCode='''+Edt_FCurrecy.Text+''' ');
        AdoQry_Tmp.Open;
        Edt_CurrencyName.Text := AdoQry_Tmp.fieldbyname('CurrencyName').AsString;
      end;
      if fieldbyname('UomCode').AsString = '' then
         Edt_UomName.Text := ''
      else
      begin
        AdoQry_Tmp.Close;
        AdoQry_Tmp.SQL.clear;
        AdoQry_Tmp.SQL.Add('Select * From Uom  Where UomCode='''+Edt_UomCode.Text+''' ');
        AdoQry_Tmp.Open;
        Edt_UomName.Text := AdoQry_Tmp.fieldbyname('UomName').AsString;
      end;

      Cmb_KmType.ItemIndex := fieldbyname('KmType').AsInteger;
      Cmb_KmProperty.ItemIndex := fieldbyname('KmProperty').AsInteger;
      Cmb_PageType.ItemIndex := fieldbyname('PageType').AsInteger;
      Cmb_AmountCalculate.ItemIndex := fieldbyname('AmountCalculate').AsInteger;
      Cmb_KmFreeze.ItemIndex := fieldbyname('KmFreeze').AsInteger;
      Cmb_CashControl.ItemIndex := fieldbyname('CashControl').AsInteger;
      Cmb_PersonCalculate.ItemIndex := fieldbyname('PersonCalculate').AsInteger;
      Cmb_DepArtCalculate.ItemIndex := fieldbyname('DepArtCalculate').AsInteger;
      Cmb_VendorCalculate.ItemIndex := fieldbyname('VendorCalculate').AsInteger;
      Cmb_CustomerCalculate.ItemIndex := fieldbyname('CustomerCalculate').AsInteger;
      Cmb_ProjectCalculate.ItemIndex := fieldbyname('ProjectCalculate').AsInteger;
      If Pos('Edit',Status)>0 Then
        Edt_KmHelpCode.SetFocus;
      Edt_KmCode.Enabled :=False;        
    end;
  end;
end;

procedure TFrm_Gl_Enter_AccountSubject_D.SaveData;
var
  AdoQuery:TAdoQuery;
  IntAccountUseYear:Integer;
  IntAccountUseMonth:Integer;
begin
  inherited;
  AdoQuery := TAdoQuery.Create(Nil);
  AdoQuery.Connection := DbConnect;
  try
    DbConnect.beginTrans ;
    if (Add) then
    begin
      with AdoQry_Tmp do
      begin
        Close;
        SQL.clear;
        SQL.Text:= ' Insert into Gl_AccountSubject '
                  +' (KmCode,KmLevel,KmHelpCode,KmName,FCurrecy,UomCode,KmType,KmProperty,'
                  +' PageType,AmountCalculate,KmFreeze,CashControl,'
                  +' PersonCalculate,DepArtCalculate,VendorCalculate,'
                  +' CustomerCalculate,ProjectCalculate ) '
                  +' Values('
                  +' '''+Trim(Edt_KmCode.Text)+''','
                  +' '''+IntToStr(KmLevel)+''','
                  +' '''+Trim(Edt_KmHelpCode.Text)+''','
                  +' '''+Trim(Edt_KmName.Text)+''','
                  +' '''+Trim(Edt_FCurrecy.Text)+''','
                  +' '''+Trim(Edt_UomCode.Text)+''','
                  +''''+IntToStr(Cmb_KmType.ItemIndex)+''','
                  +''''+IntToStr(Cmb_KmProperty.ItemIndex)+''','
                  +''''+IntToStr(Cmb_PageType.ItemIndex)+''','
                  +''''+IntToStr(Cmb_AmountCalculate.ItemIndex)+''','
                  +''''+IntToStr(Cmb_KmFreeze.ItemIndex)+''','
                  +''''+IntToStr(Cmb_CashControl.ItemIndex)+''','
                  +''''+IntToStr(Cmb_PersonCalculate.ItemIndex)+''','
                  +''''+IntToStr(Cmb_DepArtCalculate.ItemIndex)+''','
                  +''''+IntToStr(Cmb_VendorCalculate.ItemIndex)+''','
                  +''''+IntToStr(Cmb_CustomerCalculate.ItemIndex)+''','
                  +''''+IntToStr(Cmb_ProjectCalculate.ItemIndex)+''''
                  +')';
      ExecSQL;

      if KmLevel>1 then
        SetParentKm(Trim(Edt_kmCode.text),KmLevel);
      AdoQuery.Close;
      AdoQuery.SQL.clear;
      AdoQuery.SQL.Text:= ' Select * From Gl_AccountParam ';
      AdoQuery.Prepared;
      AdoQuery.open;
      IntAccountUseYear:=AdoQuery.fieldbyname('AccountUseYear').AsInteger;
      IntAccountUseMonth:=AdoQuery.fieldbyname('AccountUseMonth').AsInteger;

      AdoQuery.Close;
      AdoQuery.SQL.clear;
      AdoQuery.SQL.Text:= ' Select @@Identity As KmID  ';
      AdoQuery.Prepared;
      AdoQuery.open;

      Close;
      SQL.clear;
      SQL.Text:= ' Insert Gl_AccountSubjectBalance (kmId,BalanceDirection,AccountPeriodYear,AccountPeriodMonth) '+
                          'Values('''+IntToStr(AdoQuery.fieldbyname('KmId').AsInteger)+''','+IntToStr(Cmb_KmProperty.ItemIndex)+','+IntToStr(IntAccountUseYear)+','+IntToStr(IntAccountUseMonth)+') ';
      ExecSQL;

      If not ModifyendKm(Trim(Edt_KmCode.Text)) then
        Abort;
      SaveGl_AccountSubjectHistoryHistory(DbConnect,Trim(Edt_KmCode.Text),UserCode,1);
      end;
    end
    else
    begin
      SaveGl_AccountSubjectHistoryHistory(DbConnect,Edt_KmCode.Text,UserCode,2);
      with AdoQry_Tmp do
      begin
        Close;
        SQL.clear;
        SQL.Text:= ' UpDate Gl_AccountSubject  Set '
                  +'        KmCode ='''+Trim(Edt_KmCode.Text)+''', '
                  +'        KmHelpCode ='''+Trim(Edt_KmHelpCode.Text)+''','
                  +'        KmName = '''+Trim(Edt_KmName.Text)+''','
                  //+'        TotalKmCode = '''+Trim(Edt_TotalKmCode.Text)+''','
                  +'        FCurrecy = '''+Trim(Edt_FCurrecy.Text)+''','
                  +'        UomCode = '''+Trim(Edt_UomCode.Text)+''','
                  +'        KmType = '''+IntToStr(Cmb_KmType.ItemIndex)+''','
                  +'        KmProperty = '''+IntToStr(Cmb_KmProperty.ItemIndex)+''','
                  +'        PageType = '''+IntToStr(Cmb_PageType.ItemIndex)+''','
//                  +'        FCurrecyCalculate = '''+IntToStr(Cmb_FCurrecyCalculate.ItemIndex)+''','
                  +'        AmountCalculate = '''+IntToStr(Cmb_AmountCalculate.ItemIndex)+''','
                  +'        KmFreeze = '''+IntToStr(Cmb_KmFreeze.ItemIndex)+''','
                  +'        CashControl = '''+IntToStr(Cmb_CashControl.ItemIndex)+''','
                  +'        PersonCalculate = '''+IntToStr(Cmb_PersonCalculate.ItemIndex)+''','
                  +'        DepArtCalculate = '''+IntToStr(Cmb_DepArtCalculate.ItemIndex)+''','
                  +'        VendorCalculate = '''+IntToStr(Cmb_VendorCalculate.ItemIndex)+''','
                  +'        CustomerCalculate = '''+IntToStr(Cmb_CustomerCalculate.ItemIndex)+''','
                  +'        ProjectCalculate = '''+IntToStr(Cmb_ProjectCalculate.ItemIndex)+''''
                  +' Where KmCode ='''+Trim(Edt_KmCode.Text)+''' ' ;
      ExecSQL;
      end
    end;
    DbConnect.CommitTrans;
  except
    DbConnect.RollBackTrans;
    abort;
  end;
  //给AdoQry_Item各字段赋值

  with AdoQry_Maintain do
  begin
    edit;
    fieldbyname('KmLevel').AsString := Lab_KmLevel.Caption ;
    fieldbyname('KmCode').AsString := Edt_KmCode.Text;
    fieldbyname('KmHelpCode').AsString := Edt_KmHelpCode.Text;
    fieldbyname('KmName').AsString := Edt_KmName.Text ;
    //fieldbyname('TotalKmCode').AsString := Edt_TotalKmCode.Text;
    fieldbyname('FCurrecy').AsString := Edt_FCurrecy.Text;
    fieldbyname('UomCode').AsString := Edt_UomCode.Text ;

    fieldbyname('KmType').AsInteger := Cmb_KmType.ItemIndex;
    fieldbyname('KmProperty').AsInteger := Cmb_KmProperty.ItemIndex;
    fieldbyname('PageType').AsInteger := Cmb_PageType.ItemIndex;
//    fieldbyname('FCurrecyCalculate').AsInteger := Cmb_FCurrecyCalculate.ItemIndex;
    fieldbyname('AmountCalculate').AsInteger := Cmb_AmountCalculate.ItemIndex;
    fieldbyname('KmFreeze').AsInteger := Cmb_KmFreeze.ItemIndex;
    fieldbyname('CashControl').AsInteger := Cmb_CashControl.ItemIndex;
    fieldbyname('PersonCalculate').AsInteger := Cmb_PersonCalculate.ItemIndex;
    fieldbyname('DepArtCalculate').AsInteger := Cmb_DepArtCalculate.ItemIndex;
    fieldbyname('VendorCalculate').AsInteger := Cmb_VendorCalculate.ItemIndex;
    fieldbyname('CustomerCalculate').AsInteger := Cmb_CustomerCalculate.ItemIndex;
    fieldbyname('ProjectCalculate').AsInteger := Cmb_ProjectCalculate.ItemIndex ;
    Post;
  end;
end;

procedure TFrm_Gl_Enter_AccountSubject_D.btn_okClick(Sender: TObject);
begin
  if not BlankCheck(Edt_FCurrecy.Text,'结算货币') then
  begin
    Edt_FCurrecy.SetFocus;
    abort;
  end;
  KmLevel:=KmCodeCheck(Trim(Edt_KmCode.Text));
  If (status='Add')  Then
    Lab_KmLevel.Caption := IntToStr(KmLevel)
  //else
    ;//emdkm:=endKmCheck(fieldbyname('endKm').AsString);
  if Trim(Edt_KmHelpCode.Text)='' Then
  begin
    DispInfo('助记码不能为空!',3);
    Edt_KmHelpCode.SetFocus;
    Abort;
  end;
  if Trim(Edt_KmName.Text)='' Then
  begin
    DispInfo('科目名称不能为空!',3);
    Edt_KmName.SetFocus;
    Abort;
  end;
  if Cmb_KmType.ItemIndex <= 0 then
  begin
    DispInfo('科目类型选择错误!',3);
    Cmb_KmType.SetFocus;
    Abort;
  end;
  if Cmb_KmProperty.ItemIndex <= 0 then
  begin
    DispInfo('科目性质选择错误!',3);
    Cmb_KmProperty.SetFocus;
    Abort;

⌨️ 快捷键说明

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