unit DnaCodeScherm; 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, DnaCodeService, Vcl.ExtCtrls, Images, Vcl.Imaging.pngimage; type TfmDnaCodeScherm = class(TfmDrieKnoppenScherm) lblToeleveringData: TLabel; lblScancode: TLabel; edtDnaCode: TEdit; lblHuidigePalletData: TLabel; lblLaatstGescand: TLabel; lblLaatstGescandData: TLabel; lblAantalGescand: TLabel; lblTotaalAantal: TLabel; lblSlash: TLabel; imgGls: TImage; lblHuidigePallet: TLabel; lblScanPallet: TLabel; lblToelevering: TLabel; imgInfo: TImage; imgWegwerpPallet: TImage; procedure FormShow(Sender: TObject); procedure actPalletExecute(Sender: TObject); procedure actHomeExecute(Sender: TObject); procedure actAfrondenExecute(Sender: TObject); procedure edtDnaCodeKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure imgInfoClick(Sender: TObject); private fImagesScherm: TImagesScherm; procedure MeldDnaCodeAf(); procedure ZetToeleveringStatus(Status: DnaCodeStatus); procedure ToeleveringDataOphalen(); procedure VerwerkMogelijkePopups(EersteDnaCode: DnaCode); function BepaalAantalLadesOpHuidigePallet: integer; function BepaalDirecteLevering: boolean; procedure PalletBijwerken(Status: DnaCodeStatus; IsDirecteLevering: boolean); public end; var fmDnaCodeScherm: TfmDnaCodeScherm; implementation uses UiContext, Agent; {$R *.dfm} procedure TfmDnaCodeScherm.actHomeExecute(Sender: TObject); begin inherited; Self.ModalResult := mrHome; end; procedure TfmDnaCodeScherm.actPalletExecute(Sender: TObject); var fWaarschuwingModalResult: TModalResult; fAantalLadesOpHuidigePallet: integer; begin inherited; fAantalLadesOpHuidigePallet := BepaalAantalLadesOpHuidigePallet; if fAantalLadesOpHuidigePallet > 0 then begin fWaarschuwingModalResult := ToonPopupScherm(lblHuidigePalletData.Caption+' volledig?'+#13#10+inttostr(fAantalLadesOpHuidigePallet)+' lades','Ja','Rework',14,-1,-1); if fWaarschuwingModalResult = mrYes then begin if BepaalDirecteLevering then begin ToonPopupScherm('GLS Direct', 'OK','',15,-1,-1,clBlue); fImagesScherm.ilAlgemeen32.GetIcon(3, imgGls.Picture.Icon); imgGls.Visible := true; end; PalletBijwerken(DnaCodeStatus.InBuffer,BepaalDirecteLevering); end; PalletBijwerken(DnaCodeStatus.OnHold,false); end; Self.ModalResult := mrPallet; end; function TfmDnaCodeScherm.BepaalAantalLadesOpHuidigePallet: integer; var fZoekViaPalletCodeResponse: ZoekViaPalletCodeResponse; begin result := 0; fZoekViaPalletCodeResponse := TAgent.Create(UiContext).ZoekViaPalletCode(UiContext.Pallet); try if fZoekViaPalletCodeResponse.Header.Status = '200' then begin result := length(fZoekViaPalletCodeResponse.DnaCodes); end else begin ToonPopupScherm(fZoekViaPalletCodeResponse.Header.Omschrijving, 'Probeer opnieuw'); result := 0 end; finally fZoekViaPalletCodeResponse.Free; end; end; function TfmDnaCodeScherm.BepaalDirecteLevering: boolean; var fDirecteLeveringResponse: DirecteLeveringResponse; begin result := false; fDirecteLeveringResponse := TAgent.Create(UiContext).IsDirecteLevering(UiContext.Toelevering); try if fDirecteLeveringResponse.Header.Status = '200' then begin result := fDirecteLeveringResponse.IsDirecteLevering; end else begin ToonPopupScherm(fDirecteLeveringResponse.Header.Omschrijving, 'Probeer opnieuw'); result := false; end; finally fDirecteLeveringResponse.Free; end; end; procedure TfmDnaCodeScherm.actAfrondenExecute(Sender: TObject); var fWaarschuwingModalResult: TModalResult; begin inherited; if lblAantalGescand.Caption = lblTotaalAantal.Caption then begin ZetToeleveringStatus(DnaCodeStatus.InBuffer); if Self.ModalResult = mrPallet then ToonPopupScherm('Toelevering succesvol afgerond','OK','',19,-1,-1,clGreen) end else begin fWaarschuwingModalResult := ToonPopupScherm('Onvolledige toelevering','Scan'+#13#10+'DNA-codes','Nieuwe'+#13#10+'toelevering',18); if fWaarschuwingModalResult = mrYes then begin Self.ModalResult := mrDnaCode; end else begin fWaarschuwingModalResult := ToonPopupScherm('Nieuwe toelevering starten?','Ja','Nee',14,6,7); if fWaarschuwingModalResult = mrYes then begin ZetToeleveringStatus(DnaCodeStatus.OnHold); Self.ModalResult := mrPallet; end; end; end; end; procedure TfmDnaCodeScherm.edtDnaCodeKeyPress(Sender: TObject; var Key: Char); begin inherited; if ord(Key) = VK_RETURN then begin Key := #0; MeldDnaCodeAf; end; end; procedure TfmDnaCodeScherm.FormCreate(Sender: TObject); begin inherited; fImagesScherm := TImagesScherm.Create(self); end; procedure TfmDnaCodeScherm.FormShow(Sender: TObject); begin btnLinksOnder.Action := actPallet; btnCentraalOnder.Action := actHome; btnRechtsOnder.Action := actAfronden; edtDnaCode.Text := ''; ActiveControl := edtDnaCode; lblHuidigePalletData.Caption := UiContext.Pallet; lblToeleveringData.Caption := UiContext.Toelevering; lblAantalGescand.Caption := ''; lblTotaalAantal.Caption := ''; imgInfo.Visible := false; fImagesScherm.ilAlgemeen64.GetIcon(1, imgInfo.Picture.Icon); if not (UiContext.Toelevering = '') then ToeleveringDataOphalen() else begin imgGls.Visible := false; imgWegwerpPallet.Visible := false; end; inherited; end; procedure TfmDnaCodeScherm.imgInfoClick(Sender: TObject); begin inherited; if UiContext.Toelevering = '' then Self.ModalResult := mrDnaCode else Self.ModalResult := mrInfoLog; end; procedure TfmDnaCodeScherm.MeldDnaCodeAf; var Response: DnaCodeAfmeldenResponse; List: TStrings; begin UiContext.LaatsteDnaCode := edtDnaCode.Text; lblLaatstGescandData.Caption := edtDnaCode.Text; Response := TAgent.Create(UiContext).DnaCodeAfmelden(edtDnaCode.Text,UiContext.Toelevering,UiContext.Pallet,1); try List := TStringList.Create; ExtractStrings([':'], [], PChar(Response.Header.Status), List); case strtoint(List[0]) of 200: begin UiContext.Toelevering := Response.DnaCodes[0].Toelevering; lblToeleveringData.Caption := UiContext.Toelevering; lblAantalGescand.Caption := IntToStr(Response.AantalReedsGescand); lblTotaalAantal.Caption := IntToStr(Response.AantalInToelevering); imgInfo.Visible := true; VerwerkMogelijkePopups(Response.DnaCodes[0]); Self.ModalResult := mrDnaCode; end; 1005: begin //reeds gescand Self.ModalResult := mrDnaCodeReedsGescand; end; else begin Self.ModalResult := mrDnaCode; ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw') end; end; finally Response.Free; end; end; procedure TfmDnaCodeScherm.PalletBijwerken(Status: DnaCodeStatus; IsDirecteLevering: boolean); var Response: PalletBijwerkenResponse; begin Response := TAgent.Create(UiContext).PalletBijwerken(UiContext.Pallet,Status,IsDirecteLevering); try if Response.Header.Status <> '200' then begin ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw'); Self.ModalResult := mrPallet; end else begin ToonPopupScherm('Pallet '+UiContext.Pallet+' volledig verwerkt', 'Probeer opnieuw'); Self.ModalResult := mrPallet; end; finally Response.Free; end; end; procedure TfmDnaCodeScherm.ToeleveringDataOphalen; 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 UiContext.Toelevering := Response.DnaCodes[0].Toelevering; lblToeleveringData.Caption := UiContext.Toelevering; lblAantalGescand.Caption := IntToStr(Response.AantalReedsGescand); lblTotaalAantal.Caption := IntToStr(Response.AantalInToelevering); imgInfo.Visible := true; VerwerkMogelijkePopups(Response.DnaCodes[0]); Self.ModalResult := mrDnaCode; end; finally Response.Free; end; end; procedure TfmDnaCodeScherm.VerwerkMogelijkePopups(EersteDnaCode: DnaCode); begin if EersteDnaCode.IsGlsDirect then begin if not imgGls.Visible then ToonPopupScherm('GLS Direct', 'OK','',15,-1,-1,clBlue); fImagesScherm.ilAlgemeen32.GetIcon(3, imgGls.Picture.Icon); imgGls.Visible := EersteDnaCode.IsGlsDirect; end else begin imgGls.Visible := false; end; if EersteDnaCode.IsWegwerpPallet then begin if not imgWegwerpPallet.Visible then ToonPopupScherm('Wegwerppallet', 'OK','',16,-1,-1,clYellow); fImagesScherm.ilAlgemeen32.GetIcon(4, imgWegwerpPallet.Picture.Icon); imgWegwerpPallet.Visible := EersteDnaCode.IsWegwerpPallet; end else begin imgWegwerpPallet.Visible := false; end; end; procedure TfmDnaCodeScherm.ZetToeleveringStatus(Status: DnaCodeStatus); var Response: ToeleveringBijwerkenResponse; begin Response := TAgent.Create(UiContext).ToeleveringBijwerken(UiContext.Toelevering,Status,false); try if Response.Header.Status <> '200' then begin Self.ModalResult := mrDnaCode; ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw') end else begin Self.ModalResult := mrPallet; end; finally Response.Free; end; end; end.