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; procedure FormShow(Sender: TObject); procedure actPalletExecute(Sender: TObject); procedure actHomeExecute(Sender: TObject); procedure actVolgendeExecute(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(); public end; var fmDnaCodeScherm: TfmDnaCodeScherm; implementation uses UiContext; {$R *.dfm} procedure TfmDnaCodeScherm.actHomeExecute(Sender: TObject); begin inherited; Self.ModalResult := mrHome; end; procedure TfmDnaCodeScherm.actPalletExecute(Sender: TObject); begin inherited; Self.ModalResult := mrPallet; end; procedure TfmDnaCodeScherm.actVolgendeExecute(Sender: TObject); var fWaarschuwingModalResult: TModalResult; begin inherited; if lblAantalGescand.Caption = lblTotaalAantal.Caption then begin ZetToeleveringStatus(DnaCodeStatus.InBuffer); end else begin fWaarschuwingModalResult := ToonPopupScherm('Onvolledige toelevering','Scan'+#13#10+'DNA-codes','Nieuwe'+#13#10+'toelevering'); if fWaarschuwingModalResult = mrYes then begin Self.ModalResult := mrDnaCode; end else begin fWaarschuwingModalResult := ToonPopupScherm('Nieuwe toelevering starten?','Ja','Nee',true,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 := actVolgende; edtDnaCode.Text := ''; ActiveControl := edtDnaCode; lblHuidigePalletData.Caption := UiContext.Pallet; fImagesScherm.ilAlgemeen64.GetIcon(1, imgInfo.Picture.Icon); if not (UiContext.Toelevering = '') then ToeleveringDataOphalen(); 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 Service: DnaCodeServiceSoap; Request: DnaCodeAfmeldenRequest; Response: DnaCodeAfmeldenResponse; Header: RequestHeader; begin Service := DnaCodeService.GetDnaCodeServiceSoap(); // request opbouwen Request := DnaCodeAfmeldenRequest.Create; Header := RequestHeader.Create; try Header.Initialen := UiContext.Initialen; Header.ComputerNaam := ComputerName(); Request.Header := Header; Request.DnaCode := edtDnaCode.Text; Request.Aantal := 1; Request.Toelevering := UiContext.Toelevering; Request.PalletCode := UiContext.Pallet; Response := Service.DnaCodeAfmelden(Request); try if Response.Header.Status <> '200' then begin Self.ModalResult := mrDnaCode; 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); if Response.DnaCodes[0].IsGlsDirect then begin ToonPopupScherm('GLS DIRECT', 'OK'); imgGls.Visible := Response.DnaCodes[0].IsGlsDirect; end; lblLaatstGescandData.Caption := Request.DnaCode; Self.ModalResult := mrDnaCode; end; finally Response.Free; end; finally Request.Free; end; end; procedure TfmDnaCodeScherm.ToeleveringDataOphalen; 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 UiContext.Toelevering := Response.DnaCodes[0].Toelevering; lblToeleveringData.Caption := UiContext.Toelevering; lblAantalGescand.Caption := IntToStr(Response.AantalReedsGescand); lblTotaalAantal.Caption := IntToStr(Response.AantalInToelevering); if Response.DnaCodes[0].IsGlsDirect then begin ToonPopupScherm('GLS DIRECT', 'OK'); imgGls.Visible := Response.DnaCodes[0].IsGlsDirect; end; Self.ModalResult := mrDnaCode; end; finally Response.Free; end; finally Request.Free; end; end; procedure TfmDnaCodeScherm.ZetToeleveringStatus(Status: DnaCodeStatus); var Service: DnaCodeServiceSoap; Request: ToeleveringBijwerkenRequest; Response: ToeleveringBijwerkenResponse; Header: RequestHeader; begin Service := DnaCodeService.GetDnaCodeServiceSoap(); // request opbouwen Request := ToeleveringBijwerkenRequest.Create; Header := RequestHeader.Create; try Header.Initialen := UiContext.Initialen; Header.ComputerNaam := ComputerName(); Request.Header := Header; Request.Toelevering := UiContext.Toelevering; Request.Status := Status; Response := Service.ToeleveringBijwerken(Request); 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; finally Request.Free; end; end; end.