unit InfoLogScherm; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, DrieKnoppenScherm, Vcl.ActnList, Vcl.StdCtrls, Vcl.Grids, DnaCodeService, Data.DB, Datasnap.DBClient, Vcl.DBGrids; type TfmInfoLogScherm = class(TfmDrieKnoppenScherm) lblToelevering: TLabel; lblAantalGescand: TLabel; lblTotaalAantal: TLabel; lblSlash: TLabel; lblAantallen: TLabel; sgToeleveringData: TStringGrid; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure actHomeExecute(Sender: TObject); procedure actOngedaanMakenExecute(Sender: TObject); procedure actVolgendeExecute(Sender: TObject); private ToonGescand: boolean; function ToeleveringDataOphalen(): ZoekViaToeleveringResponse; procedure VulGridMetToeleveringData(DnaCodes: array of DnaCode); procedure GridLeegmaken(); public { Public declarations } end; var fmInfoLogScherm: TfmInfoLogScherm; implementation {$R *.dfm} procedure TfmInfoLogScherm.actHomeExecute(Sender: TObject); begin inherited; Self.ModalResult := mrOk; end; procedure TfmInfoLogScherm.actOngedaanMakenExecute(Sender: TObject); var Service: DnaCodeServiceSoap; Request: DnaCodeAfmeldenRequest; Response: DnaCodeAfmeldenResponse; Header: RequestHeader; begin Service := DnaCodeService.GetDnaCodeServiceSoap(); // request opbouwen Request := DnaCodeAfmeldenRequest.Create; Header := RequestHeader.Create; try Header.Initialen := lblGebruiker.Caption; Header.ComputerNaam := ComputerName(); Request.Header := Header; Request.DnaCode := sgToeleveringData.Rows[sgToeleveringData.Row][0]; Request.Aantal := -1; Request.Toelevering := lblToelevering.Caption; Request.PalletCode := sgToeleveringData.Rows[sgToeleveringData.Row][1]; Response := Service.DnaCodeAfmelden(Request); try if Response.Header.Status <> '200' then begin ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw') end else begin VulGridMetToeleveringData(Response.DnaCodes); end; finally Response.Free; end; finally Request.Free; end; end; procedure TfmInfoLogScherm.actVolgendeExecute(Sender: TObject); var Response: ZoekViaToeleveringResponse; begin inherited; ToonGescand := not(ToonGescand); Response := ToeleveringDataOphalen(); VulGridMetToeleveringData(Response.DnaCodes); end; procedure TfmInfoLogScherm.FormCreate(Sender: TObject); begin inherited; sgToeleveringData.Cols[0].Text := 'DNA Code'; sgToeleveringData.Cols[1].Text := 'Pallet'; ToonGescand := True; end; procedure TfmInfoLogScherm.FormShow(Sender: TObject); var Response: ZoekViaToeleveringResponse; begin inherited; btnLinksOnder.Action := actHome; btnCentraalOnder.Action := actOngedaanMaken; btnRechtsOnder.Action := actVolgende; Response := ToeleveringDataOphalen(); VulGridMetToeleveringData(Response.DnaCodes); end; function TfmInfoLogScherm.ToeleveringDataOphalen: ZoekViaToeleveringResponse; var Service: DnaCodeServiceSoap; Request: ZoekViaToeleveringRequest; Response: ZoekViaToeleveringResponse; Header: RequestHeader; begin Service := DnaCodeService.GetDnaCodeServiceSoap(); // request opbouwen Request := ZoekViaToeleveringRequest.Create; Header := RequestHeader.Create; try Header.Initialen := lblGebruiker.Caption; Header.ComputerNaam := ComputerName(); Request.Header := Header; Request.Toelevering := lblToelevering.Caption; Response := Service.ZoekViaToelevering(Request); try if Response.Header.Status <> '200' then begin ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw') end else begin if ToonGescand then begin lblAantallen.Caption := 'Afgescand'; lblAantalGescand.Caption := IntToStr(Response.AantalReedsGescand); end else begin lblAantallen.Caption := 'Te scannen'; lblAantalGescand.Caption := IntToStr(Response.AantalInToelevering - Response.AantalReedsGescand); end; lblTotaalAantal.Caption := IntToStr(Response.AantalInToelevering); end; finally result := Response; //Response.Free; end; finally Request.Free; end; end; procedure TfmInfoLogScherm.VulGridMetToeleveringData(DnaCodes: array of DnaCode); var DnaCodeTeller: Integer; begin GridLeegMaken(); for DnaCodeTeller := 0 to length(DnaCodes)-1 do begin if (ToonGescand and (DnaCodes[DnaCodeTeller].InitialenScanner <> '')) or ((not ToonGescand) and (DnaCodes[DnaCodeTeller].InitialenScanner = '')) then begin sgToeleveringData.Rows[sgToeleveringData.RowCount-1].Add(DnaCodes[DnaCodeTeller].DnaCode); sgToeleveringData.Rows[sgToeleveringData.RowCount-1].Append(DnaCodes[DnaCodeTeller].PalletCode); sgToeleveringData.RowCount := sgToeleveringData.RowCount + 1; end; end; if sgToeleveringData.RowCount > 2 then sgToeleveringData.RowCount := sgToeleveringData.RowCount - 1; end; procedure TfmInfoLogScherm.GridLeegmaken; var i: Integer; begin for i := 1 to sgToeleveringData.RowCount do sgToeleveringData.Rows[i].Clear; sgToeleveringData.RowCount := 2; end; end.