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, Images, Vcl.DBGrids, UiContext, Vcl.ExtCtrls; type TfmInfoLogScherm = class(TfmDrieKnoppenScherm) lblToelevering: TLabel; lblAantalGescand: TLabel; lblTotaalAantal: TLabel; lblSlash: TLabel; lblAantallen: TLabel; sgToeleveringData: TStringGrid; btnEerst: TButton; btnVorige: TButton; btnVolgende: TButton; btnLaatst: TButton; procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure actSluitenExecute(Sender: TObject); procedure actOngedaanMakenExecute(Sender: TObject); procedure actVolgendeExecute(Sender: TObject); procedure btnEerstClick(Sender: TObject); procedure btnVorigeClick(Sender: TObject); procedure btnVolgendeClick(Sender: TObject); procedure btnLaatstClick(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.actSluitenExecute(Sender: TObject); begin inherited; Self.ModalResult := mrDnaCode; end; procedure TfmInfoLogScherm.actOngedaanMakenExecute(Sender: TObject); var Service: DnaCodeServiceSoap; Request: DnaCodeAfmeldenRequest; Response: DnaCodeAfmeldenResponse; Header: RequestHeader; fWaarschuwingModalResult: TModalResult; begin Self.ModalResult := mrInfoLog; fWaarschuwingModalResult := ToonPopupScherm('Scan ongedaan maken?'+sgToeleveringData.Rows[sgToeleveringData.Row][0],'Ja','Nee'); if fWaarschuwingModalResult = mrOk then 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 := UiContext.Toelevering; 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; end; procedure TfmInfoLogScherm.actVolgendeExecute(Sender: TObject); var Response: ZoekViaToeleveringResponse; begin inherited; Self.ModalResult := mrInfoLog; ToonGescand := not(ToonGescand); Response := ToeleveringDataOphalen(); VulGridMetToeleveringData(Response.DnaCodes); end; procedure TfmInfoLogScherm.btnEerstClick(Sender: TObject); begin inherited; sgToeleveringData.Row := 1; end; procedure TfmInfoLogScherm.btnLaatstClick(Sender: TObject); begin inherited; sgToeleveringData.Row := sgToeleveringData.RowCount - 1; end; procedure TfmInfoLogScherm.btnVolgendeClick(Sender: TObject); begin inherited; if sgToeleveringData.Row < sgToeleveringData.RowCount - 1 then sgToeleveringData.Row := sgToeleveringData.Row + 1; end; procedure TfmInfoLogScherm.btnVorigeClick(Sender: TObject); begin inherited; if sgToeleveringData.Row > 1 then sgToeleveringData.Row := sgToeleveringData.Row - 1; 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 := actSluiten; btnCentraalOnder.Action := actOngedaanMaken; btnRechtsOnder.Action := actVolgende; lblToelevering.Caption := UiContext.Toelevering; 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 := UiContext.Initialen; Header.ComputerNaam := ComputerName(); Request.Header := Header; Request.Toelevering := UiContext.Toelevering; 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.