unit PalletScherm; 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.ExtCtrls, Vcl.Imaging.pngimage, Agent, BlPallet; type TfmPalletScherm = class(TfmDrieKnoppenScherm) lblScanPallet: TLabel; imgPallet: TImage; edtPallet: TEdit; btnGenereerTbp: TButton; procedure FormShow(Sender: TObject); procedure actHomeExecute(Sender: TObject); procedure actVolgendeExecute(Sender: TObject); procedure edtPalletKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure btnGenereerTbpClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormHide(Sender: TObject); private fAgent: TAgent; fBlPallet: TBlPallet; procedure SetContext; procedure SetModus(GescandeInput: string); function ValideerPalletCode(GescandeInput: string): boolean; public end; var fmPalletScherm: TfmPalletScherm; implementation uses DnaCodeService, UiContext, ProScanMain, StrUtils, CommonFunctions; {$R *.dfm} procedure TfmPalletScherm.actHomeExecute(Sender: TObject); begin inherited; PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(mrHome); end; procedure TfmPalletScherm.actVolgendeExecute(Sender: TObject); var fZoekViaPalletCodeResponse: ZoekViaPalletCodeResponse; fZoekViaToeleveringResponse: ZoekViaToeleveringResponse; fPalletGevalideerd: boolean; begin SetModus(UiContext.Pallet); fPalletGevalideerd := false; if not (UiContext.Modus = modusKAD) then fPalletGevalideerd := ValideerPalletCode(UiContext.Pallet); //checken of pallet in gebruik is indien het vorige geslaagd is if fPalletGevalideerd and not(UiContext.Modus = modusKAD )then begin fZoekViaPalletCodeResponse := TAgent.Create(UiContext).ZoekViaPalletCode(UiContext.Pallet); try if fZoekViaPalletCodeResponse.Header.Status = '200' then begin UiContext.Toelevering := fZoekViaPalletCodeResponse.DnaCodes[0].Toelevering; Self.ModalResult := mrBestaandePallet; end else begin //enkel leegmaken indien de huidige toelevering al compleet is fZoekViaToeleveringResponse := TAgent.Create(UiContext).ZoekViaToelevering(UiContext.Toelevering); if fZoekViaToeleveringResponse.AantalInToelevering = fZoekViaToeleveringResponse.AantalReedsGescand then UiContext.Toelevering := ''; Self.ModalResult := mrDnaCode; end; finally fZoekViaPalletCodeResponse.Free; end; //popups resetten UiContext.IsDirecteLeveringPopupGetoond := false; UiContext.IsWegwerpPalletPopupGetoond := false; UiContext.InternVhossId := ''; end else if (UiContext.Modus = modusKAD) then begin Self.ModalResult := mrDnaCode; end else begin Self.ModalResult := mrPallet; end; PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); end; function TfmPalletScherm.ValideerPalletCode(GescandeInput: string): boolean; var fValideerPalletCodeResponse: ValideerPalletCodeResponse; begin // pallet code valideren result := false; fValideerPalletCodeResponse := TAgent.Create(UiContext).ValideerPalletCode(GescandeInput); try if fValideerPalletCodeResponse.Header.Status <> '200' then begin Self.ModalResult := mrPallet; ToonPopupScherm(fValideerPalletCodeResponse.Header.Omschrijving, 'Probeer opnieuw'); edtPallet.Text := ''; UiContext.Pallet := ''; SetContext; end else begin result := true; end; finally fValideerPalletCodeResponse.Free; end; end; procedure TfmPalletScherm.btnGenereerTbpClick(Sender: TObject); var fGeefVolgendeTbpCodeResponse: GeefVolgendeTbpCodeResponse; fGegenereerdeTbp: string; begin inherited; try fBlPallet.GenereerTbp; actVolgendeExecute(Self); except on e: EExternalException do begin ToonPopupScherm(e.Message, 'Probeer opnieuw'); end; end; end; procedure TfmPalletScherm.edtPalletKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; SetContext; if Key = VK_RETURN then begin actVolgende.Execute; Key := 0; end; end; procedure TfmPalletScherm.FormActivate(Sender: TObject); begin inherited; ActiveControl := edtPallet; end; procedure TfmPalletScherm.FormHide(Sender: TObject); begin inherited; fBlPallet.Free; end; procedure TfmPalletScherm.FormShow(Sender: TObject); begin fBlPallet := TBlPallet.Create(UiContext); btnLinksOnder.Action := nil; btnCentraalOnder.Action := actHome; btnRechtsOnder.Action := actVolgende; edtPallet.Text := ''; edtPallet.SetFocus; SetContext; inherited; end; procedure TfmPalletScherm.SetContext; begin if TCommonFunctions.IsKaderdeurLocatie(edtPallet.Text) then UiContext.Pallet := edtPallet.Text else UiContext.Pallet := UpperCase(edtPallet.Text); end; procedure TfmPalletScherm.SetModus(GescandeInput: string); begin if TCommonFunctions.IsKaderdeurLocatie(GescandeInput) then UiContext.Modus := modusKAD else if (Length(GescandeInput)=10) and StartsText('O1',GescandeInput) then UiContext.Modus := modusVHOSS else Uicontext.Modus := modusDefault; end; end.