ad_enter_workload_d.pas

来自「一个MRPII系统源代码版本」· PAS 代码 · 共 290 行

PAS
290
字号
unit Ad_Enter_WorkLoad_D;

Interface

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

Type
  TFrm_Ad_Enter_WorkLoad_D = Class(TFrm_Base_Detail)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    EDT_PeriodRate: TEdit;
    EDT_Depreciation: TEdit;
    EDT_RemArk: TExtEdit;
    Label5: TLabel;
    lbl_DeptName: TLabel;
    Label6: TLabel;
    Edt_AssetCode: TLinkEdit;
    Label7: TLabel;
    EDT_AssetName: TEdit;
    EDT_Intending: TExtEdit;
    Label23: TLabel;
    Label25: TLabel;
    MEDT_Month: TMaskEdit;
    EDT_WorkLoad: TEdit;
    procedure Edt_AssetCodeExit(Sender: TObject);
    procedure Edt_AssetCodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edt_AssetCodeButtonClick(Sender: TObject);
    procedure MEDT_MonthExit(Sender: TObject);
    procedure EDT_WorkLoadChange(Sender: TObject);
    procedure EDT_WorkLoadExit(Sender: TObject);
  private
    OldMonth:String;
    Function getMonth:String;
    procedure SaveHistoryWorkLoad(ChgType:String);
    { Private declarations }
  public
    procedure InitControls; Override;
    procedure SaveData; Override;
    { Public declarations }
  end;

var
  Frm_Ad_Enter_WorkLoad_D: TFrm_Ad_Enter_WorkLoad_D;

implementation

uses Sys_Global;

{$R *.DFM}

procedure TFrm_Ad_Enter_WorkLoad_D.InitControls;
begin
  if Add then
  begin
    SetFocus_Control:=Edt_AssetCode;
    Edt_AssetCode.Enabled:=True;
  end
  else
    SetFocus_Control:=MEDT_Month;
  inherited;
  with AdoQry_Maintain do
  begin
    Edt_AssetCode.Text:=fieldbyname('AssetCode').AsString;
    EDT_AssetName.Text:=fieldbyname('AssetName').AsString;
//    EDT_Intending.Text:=fieldbyname('Intending').AsString;
    If fieldbyname('Intending').AsString='' Then EDT_Intending.Text:='0' Else EDT_Intending.Text:=fieldbyname('Intending').AsString;
    MEDT_Month.Text:=fieldbyname('YearMonth').AsString;
    If fieldbyname('PCDepreciation').AsString='' Then EDT_PeriodRate.Text:='0' Else EDT_PeriodRate.Text:=fieldbyname('PCDepreciation').AsString;
    If fieldbyname('WorkLoad').AsString='' Then EDT_WorkLoad.Text:='0' Else EDT_WorkLoad.Text:=fieldbyname('WorkLoad').AsString;
//    EDT_PeriodRate.Text:=fieldbyname('PeriodRate').AsString;
    EDT_Depreciation.Text:=fieldbyname('Depreciation').AsString;
    EDT_RemArk.Text:=fieldbyname('RemArk').AsString;
    OldMonth:=fieldbyname('YearMonth').AsString;
  end;
  if not Add then  Edt_AssetCode.Enabled:=False Else
  begin
   EDT_Intending.Text:='0';
   EDT_PeriodRate.Text:='0';
   EDT_WorkLoad.Text:='0';
   MEDT_Month.Text:=getMonth;
  end;
end;

procedure TFrm_Ad_Enter_WorkLoad_D.SaveData;
var
   ChgType:String;
begin
  inherited;
  with AdoQry_Tmp do
  begin
    Close;
    if(Add)then
    begin
      SQL.Text:='Insert into Ad_WorkLoad(AssetCode,YearMonth,WorkLoad,Depreciation,RemArk)'
        +' Values('
        +' '''+Edt_AssetCode.Text+''''
        +','''+MEDT_Month.Text+''''
        +','''+EDT_WorkLoad.Text+''''
        +','''+EDT_Depreciation.Text+''''
        +','''+EDT_RemArk.Text+''''
        +')';
      ChgType:='增加';
    end else
    begin
      SQL.Text:='Update Ad_WorkLoad'
        +' Set YearMonth='''+MEDT_Month.Text+''''
        +',WorkLoad='''+EDT_WorkLoad.Text+''''
        +',Depreciation='''+EDT_Depreciation.Text+''''
        +',RemArk='''+EDT_RemArk.Text+''''
        +' Where AssetCode='''+Edt_AssetCode.Text+''' And YearMonth='''+OldMonth+''' ';
      ChgType:='修改';
    end;
    ExecSQL;
  end;
  SaveHistoryWorkLoad(ChgType);
  If MEDT_Month.Text=FormatDateTime('yyyy.mm',Date) Then
  begin
    with AdoQry_Maintain do
    begin
      fieldbyname('AssetCode').AsString:=Edt_AssetCode.Text;
      fieldbyname('AssetName').AsString:=EDT_AssetName.Text;
      fieldbyname('Intending').AsString:=EDT_Intending.Text;
      fieldbyname('YearMonth').AsString:=MEDT_Month.Text;
      fieldbyname('WorkLoad').AsString:=EDT_WorkLoad.Text;
      fieldbyname('PCDepreciation').AsString:=EDT_PeriodRate.Text;
      fieldbyname('Depreciation').AsString:=EDT_Depreciation.Text;
      fieldbyname('RemArk').AsString:=EDT_RemArk.Text;
      Post;
    end;
  end;
end;

procedure TFrm_Ad_Enter_WorkLoad_D.SaveHistoryWorkLoad(ChgType:String);
begin
  with AdoQry_Tmp do
  begin
    Close;
    Sql.clear;
    SQL.Text:='Insert into Ad_WordkLoadHistory(AssetCode,YearMonth,WorkLoad,Depreciation,RemArk,ChgEmployeeCode,ChgTime,ChgType)'
      +' Values('
      +' '''+Edt_AssetCode.Text+''''
      +','''+MEDT_Month.Text+''''
      +','''+EDT_WorkLoad.Text+''''
      +','''+EDT_Depreciation.Text+''''
      +','''+EDT_RemArk.Text+''''
      +','''+UserCode+''''
      +',getdate()'
      +','''+ChgType+''''
      +')';
    ExecSQL;
  end;
end;

procedure TFrm_Ad_Enter_WorkLoad_D.Edt_AssetCodeExit(Sender: TObject);
begin
  inherited;
  if(ActiveControl.Name='btn_Cancel')then
    Abort;
  if  TCustomEdit(Sender).Text <>'' then
  begin
    AdoQry_Tmp.Close;
    AdoQry_Tmp.SQL.clear;
    AdoQry_Tmp.SQL.Text:=' select AssetCode,AssetName,Intending,PCDepreciation from Ad_AssetCard '+
                         ' Where DepreciationWay=2 '
                        +' And AssetCode= '''+TCustomEdit(Sender).Text+''' ';
    AdoQry_Tmp.Open;
    if not AdoQry_Tmp.Eof then
    begin
      EDT_AssetName.Text := AdoQry_Tmp.fieldbyname('AssetName').AsString;
      EDT_Intending.Text := AdoQry_Tmp.fieldbyname('Intending').AsString;
      EDT_PeriodRate.Text := AdoQry_Tmp.fieldbyname('PCDepreciation').AsString;
    end
    else
    begin
      DispInfo('固定资产编号错误,请重新输入',1);
      TWinControl(Sender).SetFocus;
      Abort;
    end;

  end else
  begin
    EDT_AssetName.Text:='';
    EDT_Intending.Text:='';
    EDT_PeriodRate.Text:='';
  end;
end;

procedure TFrm_Ad_Enter_WorkLoad_D.Edt_AssetCodeKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  inherited;
   If key=120 Then
  CommOnHint(Sender,AdoQry_Tmp,'AssetName','固定资产名称','AssetCode',
             '固定资产编号',' Ad_AssetCard ','DepreciationWay=''2'' ');

end;

procedure TFrm_Ad_Enter_WorkLoad_D.Edt_AssetCodeButtonClick(
  Sender: TObject);
begin
  inherited;
  CommOnHint(Sender,AdoQry_Tmp,'AssetName','固定资产名称','AssetCode',
             '固定资产编号',' Ad_AssetCard ','DepreciationWay=''2'' ');
end;

procedure TFrm_Ad_Enter_WorkLoad_D.MEDT_MonthExit(Sender: TObject);
begin
  inherited;
  MonthCheck(Sender);
  if (Add)or((not Add) and
    (TEdit(Sender).Text<>AdoQry_Maintain.fieldbyname('YearMonth').AsString)) then
  begin
    with AdoQry_Tmp do
    begin
      Close;
      SQL.clear;
      SQL.Add('Select YearMonth From Ad_WorkLoad '+
              'Where YearMonth='''+TEdit(Sender).Text+''' '+
              'And AssetCode='''+Edt_AssetCode.Text+''' ');
      Open;
      if fieldbyname('YearMonth').AsString<>'' then
      begin
        DispInfo('  固定资产编号与月份已经存在,不允许增加或修改!  ',1);
        TWinControl(Sender).SetFocus;
        Abort;
      end;
    end;
  end;

end;

procedure TFrm_Ad_Enter_WorkLoad_D.EDT_WorkLoadChange(Sender: TObject);
begin
  inherited;
  If EDT_WorkLoad.Text<>'' Then
  begin
    FloatCheck(Sender);
    EDT_Depreciation.Text:=FloatToStr(StrToFloat(EDT_PeriodRate.Text)*StrToFloat(EDT_WorkLoad.Text));
  end;
end;

procedure TFrm_Ad_Enter_WorkLoad_D.EDT_WorkLoadExit(Sender: TObject);
begin
  inherited;
  If EDT_WorkLoad.Text<>'' Then
  begin
    FloatCheck(Sender);
    if (Add)or((not Add) and
      (TEdit(Sender).Text<>AdoQry_Maintain.fieldbyname('WorkLoad').AsString)) then
    begin
      If StrToFloat(EDT_WorkLoad.Text)>StrToFloat(EDT_Intending.Text) Then
      begin
        DispInfo('本月月工作量累计值不能大于预计完成工作量',3);
        Abort;
      end;
    end;
    EDT_Depreciation.Text:=FloatToStr(StrToFloat(EDT_PeriodRate.Text)*StrToFloat(EDT_WorkLoad.Text));
  end;

end;

function TFrm_Ad_Enter_WorkLoad_D.getMonth: String;
var
  Month:String;
begin
  With AdoQry_Tmp Do
  begin
    Close;
    Sql.clear;
    Sql.Text:='select dateAdd(Month,1,max(YearMonth)+''.01'') m_Month from Ad_MonthCheckout';
    Open;
    If Eof Then
    begin
      Close;
      Sql.clear;
      SQL.Add('select ParamValueC m_Month from Ad_Param Where ParamCode=''StartUseMonth''');
      Open;
    end;
    Month:=fieldbyname('m_Month').AsString;
  end;
  Result:=Month;
end;

end.

⌨️ 快捷键说明

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