unit HernoemPalletScherm; 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, Vcl.ComCtrls, Vcl.ExtCtrls, DnaCodeService, Vcl.Imaging.pngimage; type TfmHernoemPalletScherm = class(TfmDrieKnoppenScherm) pnlHoofd: TPanel; pcHernoemPallet: TPageControl; tsOudeCode: TTabSheet; tsResultaat: TTabSheet; edtOudeCode: TEdit; lblOudeCode: TLabel; sgToeleveringData: TStringGrid; lblPallet: TLabel; lblAantal: TLabel; tsNieuweCode: TTabSheet; edtNieuweCode: TEdit; lblNieuweCode: TLabel; btnLaatst: TButton; btnVolgende: TButton; btnVorige: TButton; btnEerst: TButton; imgHernoem: TImage; Image1: TImage; procedure FormShow(Sender: TObject); procedure actHomeExecute(Sender: TObject); procedure actVolgendeExecute(Sender: TObject); procedure btnEerstClick(Sender: TObject); procedure btnVorigeClick(Sender: TObject); procedure btnVolgendeClick(Sender: TObject); procedure btnLaatstClick(Sender: TObject); procedure edtOudeCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure edtNieuweCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private fEnkelDezeDnaCode: string; procedure VulGridMetToeleveringData(DnaCodes: array of DnaCode); procedure GridLeegmaken; function HernoemPallet(OudeCode, NieuweCode: string): HernoemPalletResponse; function CheckBestaandeDnaCode(Code: string): boolean; function GeefPalletCodeVanDnaCode(Code: string): string; public { Public declarations } end; var fmHernoemPalletScherm: TfmHernoemPalletScherm; implementation uses UiContext, Agent, CommonFunctions, ProScanMain, StrUtils; {$R *.dfm} procedure TfmHernoemPalletScherm.actHomeExecute(Sender: TObject); begin inherited; PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(mrHome); end; procedure TfmHernoemPalletScherm.actVolgendeExecute(Sender: TObject); begin inherited; if pcHernoemPallet.ActivePage = tsOudeCode then begin fEnkelDezeDnaCode := ''; if TCommonFunctions.IsKaderdeurLocatie(edtOudeCode.Text) then begin ToonPopupScherm('Kaderdeurlocaties kunnen niet ingescand worden.','Probeer opnieuw',''); edtOudeCode.Text := ''; end else begin if ((length(edtOudeCode.Text)=7) and CheckBestaandeDnaCode(edtOudeCode.Text) and not(StartsText('K',edtOudeCode.Text))) then begin if ToonPopupScherm('Enkel code ''' + TCommonFunctions.VerkorteDnaCode(edtOudeCode.Text) + ''' verwerken?','Ja','Nee',14,6,7) = mrYes then begin fEnkelDezeDnaCode := edtOudeCode.Text end; end; if StartsText('K',edtOudeCode.Text) then begin fEnkelDezeDnaCode := edtOudeCode.Text; lblNieuweCode.Caption := 'Scan nieuwe kaderdeurlocatie'; edtNieuweCode.CharCase := TEditCharCase(ecLowerCase); end; if fEnkelDezeDnaCode = '' then begin HernoemPallet(edtOudeCode.Text,''); end else pcHernoemPallet.ActivePage := tsNieuweCode; end; end else if pcHernoemPallet.ActivePage = tsResultaat then begin pcHernoemPallet.ActivePage := tsNieuweCode; end else if pcHernoemPallet.ActivePage = tsNieuweCode then begin if StartsText('K',edtOudeCode.Text) and not (TCommonFunctions.IsKaderdeurLocatie(edtNieuweCode.Text)) then begin ToonPopupScherm('Hier moet een kaderdeurlocatie ingescand worden.','Probeer opnieuw',''); edtNieuweCode.Text := ''; end else if not (TCommonFunctions.IsFrameId(edtNieuweCode.Text)) and (StartsText('O1',edtOudeCode.Text) or TCommonFunctions.IsFrameId(GeefPalletCodeVanDnaCode(edtOudeCode.Text))) then begin ToonPopupScherm('Hier moet een Vhosskast ingescand worden.','Probeer opnieuw',''); edtNieuweCode.Text := ''; end else begin HernoemPallet(edtOudeCode.Text, edtNieuweCode.Text); edtOudeCode.Text := ''; edtNieuweCode.Text := ''; end; end; end; procedure TfmHernoemPalletScherm.btnEerstClick(Sender: TObject); begin inherited; sgToeleveringData.Row := 1; end; procedure TfmHernoemPalletScherm.btnLaatstClick(Sender: TObject); begin inherited; sgToeleveringData.Row := sgToeleveringData.RowCount - 1; end; procedure TfmHernoemPalletScherm.btnVolgendeClick(Sender: TObject); begin inherited; if sgToeleveringData.Row < sgToeleveringData.RowCount - 1 then sgToeleveringData.Row := sgToeleveringData.Row + 1 end; procedure TfmHernoemPalletScherm.btnVorigeClick(Sender: TObject); begin inherited; if sgToeleveringData.Row > 1 then sgToeleveringData.Row := sgToeleveringData.Row - 1; end; function TfmHernoemPalletScherm.CheckBestaandeDnaCode(Code: string): boolean; var Response: ZoekViaDnaCodeResponse; fAgent: TAgent; begin fAgent := TAgent.Create(UiContext); Response := fAgent.ZoekViaDnaCode(Code); fAgent.Free; try if Response.Header.Status <> '200' then begin result := false end else begin if Assigned(Response.DnaCodes) then begin result := true end else begin result := false end; end; finally Response.Free; end; end; function TfmHernoemPalletScherm.GeefPalletCodeVanDnaCode(Code: string): string; var Response: ZoekViaDnaCodeResponse; fAgent: TAgent; begin fAgent := TAgent.Create(UiContext); Response := fAgent.ZoekViaDnaCode(Code); fAgent.Free; try if Response.Header.Status <> '200' then begin ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw','') ; result := '' end else begin if Assigned(Response.DnaCodes) then begin result := Response.DnaCodes.PalletCode end else begin result := '' end; end; finally Response.Free; end; end; procedure TfmHernoemPalletScherm.edtNieuweCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; if Key = VK_RETURN then begin actVolgende.Execute; Key := 0; end; end; procedure TfmHernoemPalletScherm.edtOudeCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; if Key = VK_RETURN then begin actVolgende.Execute; Key := 0; end; end; function TfmHernoemPalletScherm.HernoemPallet(OudeCode, NieuweCode: string): HernoemPalletResponse; var Response: HernoemPalletResponse; fAgent: TAgent; begin if not TCommonFunctions.IsKaderdeurLocatie(NieuweCode) then NieuweCode := upperCase(NieuweCode); fAgent := TAgent.Create(UiContext); Response := fAgent.HernoemPallet(OudeCode, NieuweCode, fEnkelDezeDnaCode, true); fAgent.Free; try if Response.Header.Status <> '200' then begin ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw','') ; edtOudeCode.Text := ''; pcHernoemPallet.ActivePage := tsOudeCode; end else begin if NieuweCode = '' then begin VulGridMetToeleveringData(Response.DnaCodes); pcHernoemPallet.ActivePage := tsResultaat; end else begin ToonPopupScherm(Response.Header.Omschrijving, 'OK','',19,-1,-1,clGreen); Self.ModalResult := mrHome; end; end; finally result := Response; Response.Free; end; if Self.ModalResult = mrHome then begin PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(mrHome); end; end; procedure TfmHernoemPalletScherm.FormShow(Sender: TObject); begin btnCentraalOnder.Action := actHome; btnRechtsOnder.Action := actVolgende; pcHernoemPallet.ActivePage := tsOudeCode; edtOudeCode.Text := ''; edtNieuweCode.Text := ''; lblNieuweCode.Caption := 'Scan nieuwe pallet- of DNA-Code'; edtOudeCode.SetFocus; GridLeegmaken; inherited; end; procedure TfmHernoemPalletScherm.VulGridMetToeleveringData(DnaCodes: array of DnaCode); var DnaCodeTeller: Integer; begin GridLeegMaken(); for DnaCodeTeller := 0 to length(DnaCodes)-1 do begin sgToeleveringData.Rows[sgToeleveringData.RowCount-1].Add(TCommonFunctions.VerkorteDnaCode(DnaCodes[DnaCodeTeller].DnaCode)); sgToeleveringData.RowCount := sgToeleveringData.RowCount + 1; end; if sgToeleveringData.RowCount > 2 then sgToeleveringData.RowCount := sgToeleveringData.RowCount - 1; end; procedure TfmHernoemPalletScherm.GridLeegmaken; var i: Integer; begin for i := 1 to sgToeleveringData.RowCount do sgToeleveringData.Rows[i].Clear; sgToeleveringData.RowCount := 2; end; end.