unit Main; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Bde.DBTables, Vcl.Grids, Vcl.DBGrids, Vcl.OleCtrls, CACHEQUERYLib_TLB, TLLib_TLB, Vcl.OleServer, CacheActiveX_TLB, Vcl.StdCtrls, Datasnap.DBClient, UiContext, Vcl.ComCtrls, DnaCodeService, Vcl.ExtCtrls, GebruikerService; type TfmMain = class(TForm) dsDnaCodes: TDataSource; CacheQuery1: TCacheQuery; cdsDnaCodes: TClientDataSet; dbgDnaCodes: TDBGrid; pnlZoekKnoppen: TPanel; pnlActies: TPanel; btnZoekViaToelevering: TButton; edtZoekInput: TEdit; btnZoekViaPallet: TButton; btnZoekViaDnaCode: TButton; btnMaatwerketiket: TButton; btnKlantEtiket: TButton; btnProboxetiket: TButton; pcMain: TPageControl; tsDnaCodes: TTabSheet; tsGebruikers: TTabSheet; Panel1: TPanel; btnGebruikerAfmelden: TButton; dbgGebruikers: TDBGrid; cdsGebruikers: TClientDataSet; dsGebruikers: TDataSource; procedure btnZoekViaToeleveringClick(Sender: TObject); procedure btnZoekViaPalletClick(Sender: TObject); procedure btnZoekViaDnaCodeClick(Sender: TObject); procedure btnMaatwerketiketClick(Sender: TObject); procedure btnKlantEtiketClick(Sender: TObject); procedure btnProboxetiketClick(Sender: TObject); procedure tsGebruikersShow(Sender: TObject); procedure btnGebruikerAfmeldenClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private fUiContext: TUiContext; procedure VulDnaCodeGridMetData(DnaCodes: ArrayOfDnaCodeDnaCode); procedure VulGebruikersGridMetData(Gebruikers: ArrayOfGebruikerGebruiker); function BepaalGeselecteerdeDnaCodes(): TStringList; function GeefAlleDnaCodesUitGrid(): TStringList; procedure ZoekAlleGebruikers(); public property UiContext: TUiContext Read fUiContext Write fUiContext; end; var fmMain: TfmMain; implementation uses Agent, typinfo, System.StrUtils, LoginScherm; {$R *.dfm} procedure TfmMain.btnGebruikerAfmeldenClick(Sender: TObject); var rijteller: integer; begin if dbgGebruikers.SelectedRows.Count > 0 then begin for rijteller := 0 to dbgGebruikers.SelectedRows.Count-1 do begin dbgGebruikers.DataSource.DataSet.GotoBookmark(Pointer(dbgGebruikers.SelectedRows.Items[rijteller])); if dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersInitialen').AsString = UiContexT.Initialen then ShowMessage('Je kan jezelf hier niet afmelden') else TAgent.Create(UiContext).GebruikerAfmelden(dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersInitialen').AsString,dbgGebruikers.DataSource.DataSet.FieldByName('cdsGebruikersLoginCode').AsString) end; end; ZoekAlleGebruikers(); end; procedure TfmMain.btnKlantEtiketClick(Sender: TObject); var DnaCodesStringList: TStringList; begin DnaCodesStringList := BepaalGeselecteerdeDnaCodes(); //relevante webmethod oproepen end; procedure TfmMain.btnMaatwerketiketClick(Sender: TObject); var DnaCodesStringList: TStringList; begin DnaCodesStringList := BepaalGeselecteerdeDnaCodes() //relevante webmethod oproepen end; procedure TfmMain.btnProboxetiketClick(Sender: TObject); var DnaCodesStringList: TStringList; fProboxAfdrukkenResponse: ProboxEtiketAfdrukkenResponse; begin DnaCodesStringList := GeefAlleDnaCodesUitGrid(); fProboxAfdrukkenResponse := TAgent.Create(UiContext).ProboxEtiketAfdrukken(DnaCodesStringList); try if fProboxAfdrukkenResponse.Header.Status <> '200' then begin ShowMessage(fProboxAfdrukkenResponse.Header.Omschrijving) end else begin Self.ModalResult := mrPallet; end; finally fProboxAfdrukkenResponse.Free; end; end; procedure TfmMain.btnZoekViaDnaCodeClick(Sender: TObject); var fZoekViaDnaCodeResponse: ZoekViaDnaCodeResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaDnaCodeResponse := TAgent.Create(UiContext).ZoekViaDnaCode(edtZoekInput.Text); try if fZoekViaDnaCodeResponse.Header.Status = '200' then begin SetLength(DnaCodes,1); DnaCodes[0] := fZoekViaDnaCodeResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); btnProboxetiket.Visible := false; end else begin ShowMessage(fZoekViaDnaCodeResponse.Header.Omschrijving); end; finally fZoekViaDnaCodeResponse.Free; end; end; procedure TfmMain.btnZoekViaPalletClick(Sender: TObject); var fZoekViaPalletResponse: ZoekViaPalletCodeResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaPalletResponse := TAgent.Create(UiContext).ZoekViaPalletCode(edtZoekInput.Text); try if fZoekViaPalletResponse.Header.Status = '200' then begin DnaCodes := fZoekViaPalletResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); if StartsText('TBP',edtZoekInput.Text) then btnProboxetiket.Visible := true; end else begin ShowMessage(fZoekViaPalletResponse.Header.Omschrijving); end; finally fZoekViaPalletResponse.Free; end; end; procedure TfmMain.btnZoekViaToeleveringClick(Sender: TObject); var fZoekViaToeleveringResponse: ZoekViaToeleveringResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaToeleveringResponse := TAgent.Create(UiContext).ZoekViaToelevering(edtZoekInput.Text); try if fZoekViaToeleveringResponse.Header.Status = '200' then begin DnaCodes := fZoekViaToeleveringResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); btnProboxetiket.Visible := false; end else begin ShowMessage(fZoekViaToeleveringResponse.Header.Omschrijving); end; finally fZoekViaToeleveringResponse.Free; end; end; procedure TfmMain.FormCreate(Sender: TObject); begin UiContext := TUiContext.Create(); if ParamStr(1) <> '' then UiContext.ServerName := Copy(ParamStr(1),Pos('=',ParamStr(1))+1,length(ParamStr(1))) else UiContext.ServerName := 'tve-w10'; pcMain.ActivePage := tsDnaCodes; end; procedure TfmMain.FormShow(Sender: TObject); var fLoginScherm: TfmLogin; fGebruikerAanmeldenResponse: GebruikerAanmeldenResponse; begin fLoginScherm := TfmLogin.Create(self); fLoginScherm.ShowModal; if fLoginScherm.ModalResult = mrOk then begin fGebruikerAanmeldenResponse := TAgent.Create(UiContext).GebruikerAanmelden(fLoginScherm.edtInitialen.Text, fLoginScherm.edtLoginCode.Text); try if fGebruikerAanmeldenResponse.Header.Status <> '200' then begin ShowMessage(fGebruikerAanmeldenResponse.Header.Omschrijving); Application.Terminate; end else begin UiContext.Initialen := fLoginScherm.edtInitialen.Text; UiContext.LoginCode := fLoginScherm.edtLoginCode.Text; Self.Caption := 'PlanScan '+UiContext.Initialen; end; except on E: Exception do begin ShowMessage(E.Message); Application.Terminate; end; end; fGebruikerAanmeldenResponse.Free; end else begin Application.Terminate; end; fLoginScherm.Free; end; procedure TfmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin TAgent.Create(UiContext).GebruikerAfmelden(UiContext.Initialen, UiContext.LoginCode); end; function TfmMain.BepaalGeselecteerdeDnaCodes: TStringList; var DnaCodesStringList: TStringList; RijTeller: integer; begin DnaCodesStringList := TStringList.Create(); if dbgDnaCodes.SelectedRows.Count > 0 then begin for rijteller := 0 to dbgDnaCodes.SelectedRows.Count - 1 do begin dbgDnaCodes.DataSource.DataSet.GotoBookmark(Pointer(dbgDnaCodes.SelectedRows.Items[rijteller])); DnaCodesStringList.Add(dbgDnaCodes.DataSource.DataSet.FieldByName('cdsDnaCodesDnaCode').AsString); end; end; result := DnaCodesStringList; end; function TfmMain.GeefAlleDnaCodesUitGrid: TStringList; var DnaCodesStringList: TStringList; begin DnaCodesStringList := TStringList.Create(); dbgDnaCodes.DataSource.DataSet.First; while not dbgDnaCodes.DataSource.DataSet.Eof do begin DnaCodesStringList.Add(dbgDnaCodes.DataSource.DataSet.FieldByName('cdsDnaCodesDnaCode').AsString); dbgDnaCodes.DataSource.DataSet.Next; end; result := DnaCodesStringList; end; procedure TfmMain.tsGebruikersShow(Sender: TObject); begin UiContext.LoginCode := '1513'; UiContext.Initialen := 'TSN'; ZoekAlleGebruikers(); end; procedure TfmMain.ZoekAlleGebruikers(); var fZoekGebruikersResponse: ZoekGebruikersResponse; begin fZoekGebruikersResponse := TAgent.Create(UiContext).ZoekAlleGebruikers(); try if fZoekGebruikersResponse.Header.Status = '200' then begin VulGebruikersGridMetData(fZoekGebruikersResponse.Gebruikers); end else begin ShowMessage(fZoekGebruikersResponse.Header.Omschrijving); end; finally fZoekGebruikersResponse.Free; end; end; procedure TfmMain.VulDnaCodeGridMetData(DnaCodes: ArrayOfDnaCodeDnaCode); var ii: integer; ScanTijdstipAsString: string; begin cdsDnaCodes.Close; cdsDnaCodes.CreateDataSet; ii := 0; while ii <= length(DnaCodes)-1 do begin if DnaCodes[ii].ScanTijdstip = nil then ScanTijdstipAsString := '' else ScanTijdstipAsString := DateTimeToStr(DnaCodes[ii].ScanTijdstip.AsUTCDateTime); cdsDnaCodes.InsertRecord([DnaCodes[ii].DnaCode, DnaCodes[ii].PalletCode, DnaCodes[ii].Toelevering, GetEnumName(typeInfo(DnaCodeStatus),Ord(DnaCodes[ii].Status)), DnaCodes[ii].BatchId, ScanTijdstipAsString, DnaCodes[ii].InitialenScanner]); ii := ii + 1; end; end; procedure TfmMain.VulGebruikersGridMetData(Gebruikers: ArrayOfGebruikerGebruiker); var ii: integer; AangemeldSindsAsString: string; LaatsteActiviteitAsString: string; begin cdsGebruikers.Close; cdsGebruikers.CreateDataSet; ii := 0; while ii <= length(Gebruikers)-1 do begin if Gebruikers[ii].AangemeldSinds = nil then AangemeldSindsAsString := '' else AangemeldSindsAsString := DateTimeToStr(Gebruikers[ii].AangemeldSinds.AsUTCDateTime); if Gebruikers[ii].LaatsteActiviteit = nil then LaatsteActiviteitAsString := '' else LaatsteActiviteitAsString := DateTimeToStr(Gebruikers[ii].LaatsteActiviteit.AsUTCDateTime); cdsGebruikers.InsertRecord([Gebruikers[ii].Initialen, Gebruikers[ii].ComputerNaam, AangemeldSindsAsString, LaatsteActiviteitAsString, Gebruikers[ii].LoginCode]); ii := ii + 1; end; end; end.