Index: ProScan/UI/DnaCodeScherm.pas =================================================================== diff -u -r647 -r688 --- ProScan/UI/DnaCodeScherm.pas (.../DnaCodeScherm.pas) (revision 647) +++ ProScan/UI/DnaCodeScherm.pas (.../DnaCodeScherm.pas) (revision 688) @@ -53,6 +53,8 @@ procedure ZetAfrondActieStatus(actief: boolean); function GeefJuisteToelevering(fDnaCodeAfmeldenResponse: DnaCodeAfmeldenResponse; fDnaCode: string): string; function GeefAantalOpPallet(Palletcode: String): integer; + procedure GenereerTbpCode(DnaCode: DnaCode); + procedure ZetPalletContext(PalletCode: string); public end; @@ -158,8 +160,10 @@ end else begin Self.ModalResult := mrDnaCode; end; - end else + end else begin + UiContext.Pallet := ''; Self.ModalResult := mrPallet; + end; finally ZetAfrondActieStatus(true); PostMessage(Self.Handle,WM_Close,0,0); @@ -238,7 +242,9 @@ if UiContext.LaatsteDnaCode = '' then exit; - if StartsText('O1',UiContext.Pallet) then begin + if UiContext.Pallet = '' then begin + result := 0; + end else if StartsText('O1',UiContext.Pallet) then begin fAgent := TAgent.Create(UiContext); fZoekAlleVhossLadesBijDnaCodeResponse := fAgent.ZoekAlleVhossLadesBijDnaCode(UiContext.LaatsteDnaCode); fAgent.Free; @@ -274,7 +280,6 @@ fDirecteLeveringResponse: DirecteLeveringResponse; fAgent: TAgent; begin - result := false; fAgent := TAgent.Create(UiContext); fDirecteLeveringResponse := fAgent.IsDirecteLevering(UiContext.Toelevering); fAgent.Free; @@ -338,6 +343,8 @@ procedure TfmDnaCodeScherm.MeldDnaCodeAf; var + fZoekViaDnaCodeResponse: ZoekViaDnaCodeResponse; + fDnaCode: DnaCode; Response: DnaCodeAfmeldenResponse; List: TStrings; Locatie: string; @@ -346,6 +353,20 @@ if edtDnaCode.Text = '' then exit; + if UiContext.MoetTbpCodeGenereren then begin + fAgent := TAgent.Create(UiContext); + fZoekViaDnaCodeResponse := fAgent.ZoekViaDnaCode(edtDnaCode.Text); + fAgent.Free; + + if fZoekViaDnaCodeResponse.Header.Status <> '200' then begin + ToonPopupScherm(fZoekViaDnaCodeResponse.Header.Omschrijving, 'Probeer opnieuw') + end else begin + fDnaCode := fZoekViaDnaCodeResponse.DnaCodes; + GenereerTbpCode(fDnaCode); + UiContext.MoetTbpCodeGenereren := false; + end; + end; + UiContext.LaatsteDnaCode := edtDnaCode.Text; lblLaatstGescandData.Caption := edtDnaCode.Text; @@ -379,7 +400,7 @@ UiContext.LaatsteDnaCodeGoedAfgemeld := false; end; else begin - Self.ModalResult := mrDnaCode; + Self.ModalResult := mrPallet; ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw'); UiContext.LaatsteDnaCodeGoedAfgemeld := false; end; @@ -391,6 +412,31 @@ (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); end; +procedure TfmDnaCodeScherm.GenereerTbpCode(DnaCode: DnaCode); +var + fGeefVolgendeTbpCodeResponse: GeefVolgendeTbpCodeResponse; + fTbpCode: string; + fAgent: TAgent; +begin + inherited; + fAgent := TAgent.Create(UiContext); + fGeefVolgendeTbpCodeResponse := fAgent.GeefVolgendeTbpCode(DnaCode.Toelevering, DnaCode.ProductNummer); + fAgent.Free; + try + if fGeefVolgendeTbpCodeResponse.Header.Status <> '200' then begin + Self.ModalResult := mrPallet; + ToonPopupScherm(fGeefVolgendeTbpCodeResponse.Header.Omschrijving, 'Probeer opnieuw'); + fTbpCode := ''; + end else begin + fTbpCode := fGeefVolgendeTbpCodeResponse.VolgendeTbpCode; + UiContext.Toelevering := ''; + end; + ZetPalletContext(fTbpCode); + finally + fGeefVolgendeTbpCodeResponse.Free; + end; +end; + function TfmDnaCodeScherm.GeefJuisteToelevering(fDnaCodeAfmeldenResponse: DnaCodeAfmeldenResponse; fDnaCode: string): string; var fDnaCodeTeller: integer; @@ -822,12 +868,26 @@ fZoekViaPalletCodeResponse: ZoekViaPalletCodeResponse; fAantal: integer; begin - fAgent := TAgent.Create(UiContext); - fZoekViaPalletCodeResponse := fAgent.ZoekViaPalletCode(PalletCode); - fAgent.Free; - fAantal := length(fZoekViaPalletCodeResponse.DnaCodes); - fZoekViaPalletCodeResponse.Free; + if (UiContext.MoetTbpCodeGenereren = true) then begin + fAantal := 0; + end else begin + fAgent := TAgent.Create(UiContext); + fZoekViaPalletCodeResponse := fAgent.ZoekViaPalletCode(PalletCode); + fAgent.Free; + fAantal := length(fZoekViaPalletCodeResponse.DnaCodes); + fZoekViaPalletCodeResponse.Free; + end; Result := fAantal; end; +procedure TfmDnaCodeScherm.ZetPalletContext(PalletCode: string); +begin + if TCommonFunctions.IsKaderdeurLocatie(PalletCode) then + UiContext.Pallet := PalletCode + else + UiContext.Pallet := UpperCase(PalletCode); + + lblHuidigePalletData.Caption := UiContext.Pallet; +end; + end.