unit DInputEmpNo; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.pngimage, Vcl.ExtCtrls, System.ImageList, Vcl.ImgList, PngImageList, IdHTTP, Vcl.Buttons; type TDlgInputEmpNo = class(TForm) imgTop: TImage; Label1: TLabel; Label9: TLabel; Label10: TLabel; edEmpNo: TEdit; edVpnId: TEdit; btnOk: TButton; btnCancel: TButton; btnInfo: TSpeedButton; procedure btnOkClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnCancelClick(Sender: TObject); procedure btnInfoClick(Sender: TObject); private { Private declarations } HTTP_: TIdHTTP; public { Public declarations } Constructor Create(aOwner: TComponent; aHTTP: TIdHTTP); procedure process_WM_COPYDATA(var msg: TMessage); Message WM_COPYDATA; end; var DlgInputEmpNo: TDlgInputEmpNo; implementation uses Tocsg.Safe, ManagerService, superobject, CrmUtil, Condition, Tocsg.Path, GlobalDefine, DefineHelper, Tocsg.Shell, Tocsg.Trace, Tocsg.Exception, Tocsg.Process, Define; resourcestring RS_NoConnectServer = '서버에 연결할 수 없습니다.'; RS_WaitRetry = '잠시 후 다시 시도해 주십시오.'; RS_SameCurEmpNo = '현재 사번과 같습니다. '; RS_SameCurEmpNo2 = '현재 ID와 같습니다. '; RS_WatchTry = '확인 후 다시 시도해 주십시오.'; RS_InputEmpNo = '사번을 입력해주십시오.'; RS_InputEmpNo2 = 'ID를 입력해주십시오.'; RS_InputEmpNoOver = '사번을 24자 이내로 입력해주십시오.'; RS_InputEmpNoOver2 = 'ID를 24자 이내로 입력해주십시오.'; RS_InputVpnAccount = 'VPN 계정을 입력해주십시오.'; RS_InvaludEmpNo = '유효하지 않은 사번입니다.'; RS_InvaludEmpNo2 = '유효하지 않은 ID입니다.'; RS_Q_Change = '변경 하시겠습니까?'; RS_Q_EmpNo = '사용자 정보를 변경하시겠습니까?'; RS_Q_EmpNo2 = 'ID를 변경하시겠습니까?'; RS_FMT_EmpNoInfo = '사번 : %s'#13#10'이름 : %s'#13#10'부서 : %s'#13#10'상태 : %s'; RS_FMT_EmpNoInfo2 = 'ID : %s'#13#10'이름 : %s'#13#10'부서 : %s'#13#10'상태 : %s'; RS_GetEmpNoInfo = '사번 정보를 확인했습니다.'; RS_GetEmpNoInfo2 = 'ID 정보를 확인했습니다.'; RS_Deleted = '삭제됨'; RS_Normal = '정상'; {$R *.dfm} Constructor TDlgInputEmpNo.Create(aOwner: TComponent; aHTTP: TIdHTTP); begin Inherited Create(aOwner); HTTP_ := aHTTP; Caption := APP_TITLE; if IsCJ_Affiliates then begin Label9.Caption := 'ID'; end; end; procedure TDlgInputEmpNo.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TDlgInputEmpNo.btnCancelClick(Sender: TObject); begin Close; end; procedure TDlgInputEmpNo.btnInfoClick(Sender: TObject); var sInfo: String; O: ISuperObject; begin edEmpNo.Text := Trim(edEmpNo.Text); if edEmpNo.Text = '' then begin if IsCJ_Affiliates then MessageBox(Handle, PChar(RS_InputEmpNo2), PChar(Caption), MB_ICONWARNING or MB_OK) else MessageBox(Handle, PChar(RS_InputEmpNo ), PChar(Caption), MB_ICONWARNING or MB_OK); edEmpNo.SetFocus; exit; end; sInfo := GetEmpNoInfo(gMgSvc.DestServerUrl, HTTP_, edEmpNo.Text); try O := SO(sInfo); except // .. end; if (O <> nil) and (O.S['result'] <> 'false') then begin if O.S['deleteyn'] = 'true' then sInfo := RS_Deleted else sInfo := RS_Normal; if IsCJ_Affiliates then begin sInfo := Format(RS_FMT_EmpNoInfo2, [O.S['empno'], O.S['name'], O.S['dept'], sInfo]); MessageBox(Handle, PChar(RS_GetEmpNoInfo2 + #13#10#13#10 + sInfo), PChar(Caption), MB_ICONINFORMATION or MB_OK) end else begin sInfo := Format(RS_FMT_EmpNoInfo, [O.S['empno'], O.S['name'], O.S['dept'], sInfo]); MessageBox(Handle, PChar(RS_GetEmpNoInfo + #13#10#13#10 + sInfo), PChar(Caption), MB_ICONINFORMATION or MB_OK); end; end else if IsCJ_Affiliates then MessageBox(Handle, PChar(RS_InvaludEmpNo2), PChar(Caption), MB_ICONWARNING or MB_OK) else MessageBox(Handle, PChar(RS_InvaludEmpNo), PChar(Caption), MB_ICONWARNING or MB_OK); end; procedure TDlgInputEmpNo.btnOkClick(Sender: TObject); begin edEmpNo.Text := Trim(edEmpNo.Text); // edVpnId.Text := Trim(edVpnId.Text); if not gMgSvc.Connected then begin MessageBox(Handle, PChar(RS_NoConnectServer+#13+#10+RS_WaitRetry), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; if CompareText(gMgSvc.AgentModel.EmpNo, edEmpNo.Text) = 0 then begin if IsCJ_Affiliates then MessageBox(Handle, PChar(RS_SameCurEmpNo2+#13+#10+RS_WatchTry), PChar(Caption), MB_ICONWARNING or MB_OK) else MessageBox(Handle, PChar(RS_SameCurEmpNo+#13+#10+RS_WatchTry), PChar(Caption), MB_ICONWARNING or MB_OK); edEmpNo.SetFocus; exit; end; if edEmpNo.Text = '' then begin if IsCJ_Affiliates then MessageBox(Handle, PChar(RS_InputEmpNo2), PChar(Caption), MB_ICONWARNING or MB_OK) else MessageBox(Handle, PChar(RS_InputEmpNo), PChar(Caption), MB_ICONWARNING or MB_OK); edEmpNo.SetFocus; exit; end; if Length(edEmpNo.Text) > 24 then begin if IsCJ_Affiliates then MessageBox(Handle, PChar(RS_InputEmpNoOver2), PChar(Caption), MB_ICONWARNING or MB_OK) else MessageBox(Handle, PChar(RS_InputEmpNoOver), PChar(Caption), MB_ICONWARNING or MB_OK); edEmpNo.SetFocus; exit; end; // if edVpnId.Text = '' then // begin // MessageBox(Handle, PChar(RS_InputVpnAccount), PChar(Caption), MB_ICONWARNING or MB_OK); // edVpnId.SetFocus; // exit; // end; if not VerifyEmpNo(gMgSvc.DestServerUrl, HTTP_, edEmpNo.Text) then begin case CUSTOMER_TYPE of CUSTOMER_KFTC, CUSTOMER_SERVE1 : begin MessageBox(Handle, PChar(RS_InvaludEmpNo), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; else begin if IsCJ_Affiliates then begin MessageBox(Handle, PChar(RS_InvaludEmpNo2), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end else if MessageBox(Handle, PChar(RS_InvaludEmpNo+#13+#10+RS_Q_Change), PChar(Caption), MB_ICONWARNING or MB_YESNO) = IDNO then exit; end; end; end else begin if CUSTOMER_TYPE = CUSTOMER_KFTC then begin var sExe: String := GetRunExePathDir + DIR_CONF + EXE_HLP; if FileExists(sExe) then begin var O: ISuperObject := SO; O.I['RcvWnd'] := Handle; O.I['Cmd'] := HPCMD_PERSONALINFO_AGREE; SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM); {$IFDEF DEBUG} ExecutePath(sExe); {$ELSE} ExecuteAppAsUser('explorer.exe', sExe, '', SW_SHOWNORMAL); {$ENDIF} end; exit; end; if IsCJ_Affiliates then begin if MessageBox(Handle, PChar(RS_Q_EmpNo2), PChar(Caption), MB_ICONQUESTION or MB_YESNO) = IDNO then exit; end else begin if MessageBox(Handle, PChar(RS_Q_EmpNo), PChar(Caption), MB_ICONQUESTION or MB_YESNO) = IDNO then exit; end; end; TTgTrace.T('[02] 사번 변경, %s > %s', [gMgSvc.AgentModel.EmpNo, edEmpNo.Text], 1); gMgSvc.SendEventLogEx(LOG_CHANGE_EMPNO, Format('[User] EmpId Changed. (%s > %s)', [gMgSvc.AgentModel.EmpNo, edEmpNo.Text]), false); gMgSvc.AgentModel.EmpNo := edEmpNo.Text; // gMgSvc.AgentModel.VpnInfo := edEmpNo.Text; // gMgSvc.AgentModel.VpnInfo := edVpnId.Text; gMgSvc.AgentModel.Save; gMgSvc.UpdateAgentInfo; if (gMgSvc.HeModeKind = hmkSecurity) and IsCJ_Affiliates then gMgSvc.DoEmpNoCheck := IsCheckEmpNo and gMgSvc.PrefModel.IsEmpVerify; Close; end; procedure TDlgInputEmpNo.process_WM_COPYDATA(var msg: TMessage); var dwData: DWORD; pCpData: PCopyDataStruct; O: ISuperObject; begin msg.Result := 0; dwData := 0; pCpData := PCopyDataStruct(msg.LParam); try dwData := pCpData.dwData; case dwData of HPCMD_PERSONALINFO_AGREE : begin TTgTrace.T('[03] 사번 변경, %s > %s', [gMgSvc.AgentModel.EmpNo, edEmpNo.Text], 1); gMgSvc.SendEventLogEx(LOG_CHANGE_EMPNO, Format('[User] EmpId Changed. (%s > %s)', [gMgSvc.AgentModel.EmpNo, edEmpNo.Text]), false); gMgSvc.AgentModel.EmpNo := edEmpNo.Text; gMgSvc.AgentModel.Save; gMgSvc.UpdateAgentInfo; if (gMgSvc.HeModeKind = hmkSecurity) and IsCJ_Affiliates then gMgSvc.DoEmpNoCheck := IsCheckEmpNo and gMgSvc.PrefModel.IsEmpVerify; Close; end; end; except on E: Exception do ETgException.TraceException(Self, E, Format('Fail .. process_WM_COPYDATA(), dwData=%d', [dwData])); end; end; end.