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

📄 cwa500_02.pas.svn-base

📁 这是一个功能齐全的,代码完整的ERP企业信息管理系统,现在上传和大家分享
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
      ATime:=StrToInt(Cwa500_02Form.edtValue.Text);
    Result:=Result+ATime;
    //插入考勤事务表(CWA500)
    if (ATime<>0) and (AFlag) then
    begin
      SYSDM.qryQuery.Close;
      SYSDM.qryQuery.SQL.Clear;
      SYSDM.qryQuery.SQL.Add('insert into CWA500(C500_001,C500_002,C500_003,C500_004,C500_005,C500_006,C500_007,C500_008,C500_009,C500_010)');
      SYSDM.qryQuery.SQL.Add('select '+IntToStr(ATypeNo)+',null,'+''''+Cwa500_02Form.cbType.Text+''''+','+IntToStr(AEmpNo)+','+GetDateString(ADate)+','+''''+AFromTime+''''+','+''''+AToTime+''''+','+FloatToStr(ATime)+','+IntToStr(AUnitNo)+',0');
      SYSDM.qryQuery.ExecSQL;
    end;
    ADate:=ADate+1;
  end;
end;

procedure TCwa500_02Form.bbtnOkClick(Sender: TObject);
var
  AFromEmpID,AToEmpID:string;
  ADeptNo,AEmpNo,ATypeNo:Integer;
  AFromTime,AToTime:string;
  AUnitNo:Integer;  //项目的计量单位
  AHours:Integer;
  AFromDate,AToDate:TDateTime;
begin
  inherited;
//确定
  if trim(cbType.Text)='' then
  begin
    ShowMsg('UMS10000073');  //事务类型不能为空
    cbType.SetFocus;
    Abort;
  end;
  ATypeNo:=GetValue('select C150_001 from CWA150 where C150_003='+''''+cbType.Text+'''');
  ADeptNo:=cbDepart.ItemIndex;
  if ADeptNo<>0 then ADeptNo:=GetValue('select H100_001 from HRM100 where H100_002='+''''+cbDepart.Text+'''');
  AFromEmpID:=trim(edtFromEmpID.Text);
  AToEmpID:=trim(edtToEmpID.Text);
  if AFromEmpID='' then AFromEmpID:=GetValue('select min(H150_002) from HRM150');
  if AToEmpID='' then AToEmpID:=GetValue('select max(H150_002) from HRM150');
  AFromDate:=dtFromDate.Date;
  AToDate:=dtToDate.Date;

  //每日开工时数
  AHours:=StrToInt(trim(GetSysParams('CWA0006')));

  if AFromEmpID>AToEmpID then
  begin
    ShowMsg('UMS10000076');  //起始员工编号不能大于结束编号
    edtFromEmpID.SetFocus;
    Abort;
  end;

  if AFromDate>AToDate then
  begin
    ShowMsg('UMS10000044');  //起始日期不能大于结束日期
    dtFromDate.SetFocus;
    Abort;
  end;

  if (edtFromTime.Time=0) and (edtToTime.Time=0) then
  begin
    ShowMsg('UMS10000075');  //起始时间或结束时间不能为空
    edtFromTime.SetFocus;
    Abort;
  end;

  if edtFromTime.Time>edtToTime.Time then
  begin
    ShowMsg('UMS10000070');  //起始时间不能大于结束时间
    edtFromTime.SetFocus;
    Abort;
  end;

  if (trim(edtValue.Text)='') or (trim(edtValue.Text)='0') then
  begin
    ShowMsg('UMS10000252');  //事务数值不能为空或零
    edtValue.SetFocus;
    Abort;
  end;
  try
    StrToInt(edtValue.Text)
  except
    ShowMsg('UMS10000251');  //事务数值必须输入数值
    edtValue.SetFocus;
    Abort;
  end;

  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select 1 from CWA120 where C120_004>='+GetDateString(dtFromDate.Date)+' and C120_004<='+GetDateString(dtToDate.Date));
  SYSDM.qryQuery.Open;
  if SYSDM.qryQuery.IsEmpty then
  begin
    ShowMsg('UMS10000069');  //输入的起止日期内没有员工班别资料
    dtFromDate.SetFocus;
    Abort;
  end;

  //取得项目的计量单位
  AUnitNo:=GetValue('select C150_008 from CWA150 where C150_001='+IntToStr(ATypeNo));

  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select H150_001, H150_003 from HRM150');
  SYSDM.qryQuery.SQL.Add('where H150_002>='+''''+AFromEmpID+''''+' and H150_002<='+''''+AToEmpID+'''');
  if cbDepart.ItemIndex<>0 then SYSDM.qryQuery.SQL.Add(' and H150_005='+IntToStr(ADeptNo));
  SYSDM.qryQuery.Open;
  while not SYSDM.qryQuery.Eof do
  begin
    AEmpNo:=SYSDM.qryQuery.FieldByName('H150_001').Value;
    GetDateTime(ATypeNo,AUnitNo,AEmpNo,AHours,AFromDate,AToDate,AFromTime,AToTime,True);
    SYSDM.qryQuery.Next;
  end;

  ShowMsg('UMS10000077');  //成批录入成功
  Close;
end;

procedure TCwa500_02Form.bbtnExitClick(Sender: TObject);
begin
  inherited;
//退出
  Close;
end;

procedure TCwa500_02Form.cbTypeChange(Sender: TObject);
begin
  inherited;
  if cbType.Text='' then Exit;
  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select C150_001,C150_005 from CWA150 where C150_003='+''''+cbType.Text+'''');
  SYSDM.qryQuery.Open;
  //事务类型=请假时,事务数值自动计算,并不可修改
  edtValue.Enabled:=SYSDM.qryQuery.Fields[0].Value<>4;
  if edtValue.Enabled then edtValue.Color:=AEnableColor else edtValue.Color:=ADisableColor;
  //计量单位
  case SYSDM.qryQuery.Fields[1].AsInteger of
    1:lblUnit.Caption:=GetDBString('COM00004009');  //1=分钟
    2:lblUnit.Caption:=GetDBString('COM00004010');  //2=小时
    3:lblUnit.Caption:=GetDBString('COM00004011');  //3=天
    4:lblUnit.Caption:=GetDBString('COM00004012');  //4=次
  end;
end;

procedure TCwa500_02Form.SpeedButton1Click(Sender: TObject);
begin
  inherited;
//员工编号查询1
  if not edtFromEmpID.Focused then edtFromEmpID.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryHrm150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtFromEmpID.Text:=qryHrm150.FieldByName('H150_002').AsString;
  end;
end;

procedure TCwa500_02Form.SpeedButton2Click(Sender: TObject);
begin
  inherited;
//员工编号查询2
  if not edtToEmpID.Focused then edtToEmpID.SetFocus;
  HwSelDataForm:=THwSelDataForm.Create(Application);
  HwSelDataForm.OpenSelData(qryHrm150,nil);
  if HwSelDataForm.ShowModal=1 then
  begin
    edtToEmpID.Text:=qryHrm150.FieldByName('H150_002').AsString;
  end;
end;

procedure TCwa500_02Form.edtFromEmpIDKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key=vk_F4 then SpeedButton1.Click;
end;

procedure TCwa500_02Form.edtToEmpIDKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key=vk_F4 then SpeedButton2.Click;
end;

procedure TCwa500_02Form.edtToTimeExit(Sender: TObject);
var
  ATypeNo,AEmpNo,AUnitNo,ADeptNo,AHours:Integer;
  ATime:Double;
  AFromDate,AToDate:TDateTime;
  AFromTime,AToTime:string;
  AFromEmpID,AToEmpID:string;
begin
  inherited;
  if trim(cbType.Text)='' then
  begin
    ShowMsg('UMS10000073');  //事务类型不能为空
    cbType.SetFocus;
    Abort;
  end;
  ATypeNo:=GetValue('select C150_001 from CWA150 where C150_003='+''''+cbType.Text+'''');
  ADeptNo:=cbDepart.ItemIndex;
  if ADeptNo<>0 then ADeptNo:=GetValue('select H100_001 from HRM100 where H100_002='+''''+cbDepart.Text+'''');
  AFromEmpID:=trim(edtFromEmpID.Text);
  AToEmpID:=trim(edtToEmpID.Text);
  if AFromEmpID='' then AFromEmpID:=GetValue('select min(H150_002) from HRM150');
  if AToEmpID='' then AToEmpID:=GetValue('select max(H150_002) from HRM150');
  AFromDate:=dtFromDate.Date;
  AToDate:=dtToDate.Date;

  //每日开工时数
  AHours:=StrToInt(trim(GetSysParams('CWA0006')));

  if AFromEmpID>AToEmpID then
  begin
    ShowMsg('UMS10000076');  //起始员工编号不能大于结束编号
    edtFromEmpID.SetFocus;
    Abort;
  end;

  if AFromDate>AToDate then
  begin
    ShowMsg('UMS10000044');  //起始日期不能大于结束日期
    dtFromDate.SetFocus;
    Abort;
  end;

  if (edtFromTime.Time=0) and (edtToTime.Time=0) then
  begin
    ShowMsg('UMS10000075');  //起始时间或结束时间不能为空
    edtFromTime.SetFocus;
    Abort;
  end;

  if edtFromTime.Time>edtToTime.Time then
  begin
    ShowMsg('UMS10000070');  //起始时间不能大于结束时间
    edtFromTime.SetFocus;
    Abort;
  end;

  if (trim(edtValue.Text)='') or (trim(edtValue.Text)='0') then
  begin
    ShowMsg('UMS10000252');  //事务数值不能为空或零
    edtValue.SetFocus;
    Abort;
  end;
  try
    StrToInt(edtValue.Text)
  except
    ShowMsg('UMS10000251');  //事务数值必须输入数值
    edtValue.SetFocus;
    Abort;
  end;

  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select 1 from CWA120 where C120_004>='+GetDateString(dtFromDate.Date)+' and C120_004<='+GetDateString(dtToDate.Date));
  SYSDM.qryQuery.Open;
  if SYSDM.qryQuery.IsEmpty then
  begin
    ShowMsg('UMS10000069');  //输入的起止日期内没有员工班别资料
    dtFromDate.SetFocus;
    Abort;
  end;

  //取得项目的计量单位
  AUnitNo:=GetValue('select C150_008 from CWA150 where C150_001='+IntToStr(ATypeNo));

  SYSDM.qryQuery.Close;
  SYSDM.qryQuery.SQL.Clear;
  SYSDM.qryQuery.SQL.Add('select top 1 H150_001, H150_003 from HRM150');
  SYSDM.qryQuery.SQL.Add('where H150_002>='+''''+AFromEmpID+''''+' and H150_002<='+''''+AToEmpID+'''');
  if cbDepart.ItemIndex<>0 then SYSDM.qryQuery.SQL.Add(' and H150_005='+IntToStr(ADeptNo));
  SYSDM.qryQuery.Open;
  AEmpNo:=SYSDM.qryQuery.FieldByName('H150_001').Value;
  ATime:=GetDateTime(ATypeNo,AUnitNo,AEmpNo,AHours,AFromDate,AToDate,AFromTime,AToTime,False);

  edtFromTime.Time:=StrToTime(AFromTime);
  edtToTime.Time:=StrToTime(AToTime);
  edtValue.Text:=FloatToStr(ATime);
end;

procedure TCwa500_02Form.edtValueKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  ValidFloat(Sender,Key);
end;

initialization
  RegisterClass(TCwa500_02Form);

finalization
  UnRegisterClass(TCwa500_02Form);

end.

⌨️ 快捷键说明

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