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 actOngedaanMakenExecute(Sender: TObject); procedure btnEerstClick(Sender: TObject); procedure btnVorigeClick(Sender: TObject); procedure btnVolgendeClick(Sender: TObject); procedure btnLaatstClick(Sender: TObject); procedure actSchermRechtsExecute(Sender: TObject); procedure actSchermLinksExecute(Sender: TObject); procedure actTerugExecute(Sender: TObject); private function ToeleveringDataOphalen(): ZoekViaToeleveringResponse; procedure VulGridMetToeleveringData(DnaCodes: array of DnaCode); procedure GridLeegmaken(); function GridToontData: boolean; procedure SwitchGrid(); public { Public declarations } end; var fmInfoLogScherm: TfmInfoLogScherm; implementation uses Agent, CommonFunctions, ProScanMain; {$R *.dfm} procedure TfmInfoLogScherm.actSchermLinksExecute(Sender: TObject); begin SwitchGrid() end; procedure TfmInfoLogScherm.actSchermRechtsExecute(Sender: TObject); begin SwitchGrid() end; procedure TfmInfoLogScherm.actTerugExecute(Sender: TObject); begin inherited; PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(mrDnaCode); end; procedure TfmInfoLogScherm.actOngedaanMakenExecute(Sender: TObject); var Response: DnaCodeAfmeldenResponse; fWaarschuwingModalResult: TModalResult; begin Self.ModalResult := mrInfoLog; fWaarschuwingModalResult := ToonPopupScherm('Scan ongedaan maken?'+#13#10+sgToeleveringData.Rows[sgToeleveringData.Row][0],'Ja','Nee',14,6,7); if fWaarschuwingModalResult = mrYes then begin Response := TAgent.Create(UiContext).DnaCodeAfmelden(sgToeleveringData.Rows[sgToeleveringData.Row][2], UiContext.Toelevering, sgToeleveringData.Rows[sgToeleveringData.Row][1], -1); 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; end; PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); 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'; end; procedure TfmInfoLogScherm.FormShow(Sender: TObject); var Response: ZoekViaToeleveringResponse; begin btnLinksOnder.Action := actTerug; btnCentraalOnder.Action := actOngedaanMaken; if UiContext.InfoLogSchermToonGescand then begin btnRechtsOnder.Action := actSchermRechts; end else begin btnRechtsOnder.Action := actSchermLinks; end; lblToelevering.Caption := UiContext.Toelevering; Response := ToeleveringDataOphalen(); VulGridMetToeleveringData(Response.DnaCodes); inherited; end; function TfmInfoLogScherm.ToeleveringDataOphalen: ZoekViaToeleveringResponse; var Response: ZoekViaToeleveringResponse; begin Response := TAgent.Create(UiContext).ZoekViaToelevering(UiContext.Toelevering); try if Response.Header.Status <> '200' then begin ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw','') end else begin if UiContext.InfoLogSchermToonGescand 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; end; end; procedure TfmInfoLogScherm.VulGridMetToeleveringData(DnaCodes: array of DnaCode); var DnaCodeTeller: Integer; VuilbakTonen: boolean; begin GridLeegMaken(); for DnaCodeTeller := 0 to length(DnaCodes)-1 do begin if (UiContext.InfoLogSchermToonGescand and (DnaCodes[DnaCodeTeller].InitialenScanner <> '')) or ((not UiContext.InfoLogSchermToonGescand) and (DnaCodes[DnaCodeTeller].InitialenScanner = '')) then begin sgToeleveringData.Rows[sgToeleveringData.RowCount-1].Add(TCommonFunctions.VerkorteDnaCode(DnaCodes[DnaCodeTeller].DnaCode)); sgToeleveringData.Rows[sgToeleveringData.RowCount-1][1] := (DnaCodes[DnaCodeTeller].PalletCode); sgToeleveringData.Rows[sgToeleveringData.RowCount-1][2] := (DnaCodes[DnaCodeTeller].DnaCode); sgToeleveringData.RowCount := sgToeleveringData.RowCount + 1; end; end; if sgToeleveringData.RowCount > 2 then sgToeleveringData.RowCount := sgToeleveringData.RowCount - 1; VuilbakTonen := GridToontData and UiContext.InfoLogSchermToonGescand; if VuilbakTonen then begin actOngedaanMaken.Enabled := true; imgCentraalOnder.Visible := true; btnCentraalOnder.Action := actOngedaanMaken; end else begin actOngedaanMaken.Enabled := false; imgCentraalOnder.Visible := false; btnCentraalOnder.Action := nil; end; end; procedure TfmInfoLogScherm.GridLeegmaken; var i: Integer; begin for i := 1 to sgToeleveringData.RowCount do sgToeleveringData.Rows[i].Clear; sgToeleveringData.RowCount := 2; end; function TfmInfoLogScherm.GridToontData: boolean; begin result := false; if sgToeleveringData.RowCount > 2 then result := true; if (sgToeleveringData.RowCount = 2) and (Trim(sgToeleveringData.Rows[1].Text) <> '') then result := true; end; procedure TfmInfoLogScherm.SwitchGrid; var Response: ZoekViaToeleveringResponse; begin inherited; Self.ModalResult := mrInfoLog; if UiContext.InfoLogSchermToonGescand then begin btnRechtsOnder.Action := actSchermRechts; end else begin btnRechtsOnder.Action := actSchermLinks; end; btnRechtsOnder.Visible := false; Repaint; UiContext.InfoLogSchermToonGescand := not(UiContext.InfoLogSchermToonGescand); Response := ToeleveringDataOphalen(); VulGridMetToeleveringData(Response.DnaCodes); end; end.