Index: ProScan/UI/DnaCodeScherm.pas =================================================================== diff -u -r522 -r696 --- ProScan/UI/DnaCodeScherm.pas (.../DnaCodeScherm.pas) (revision 522) +++ ProScan/UI/DnaCodeScherm.pas (.../DnaCodeScherm.pas) (revision 696) @@ -25,9 +25,11 @@ imgPallet: TImage; imgLaatstGescand: TImage; imgExport: TImage; + imgBlumXs: TImage; + lblAantalOpPallet: TLabel; + imgKartonnenPallet: 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); @@ -39,7 +41,7 @@ procedure ZetToeleveringStatus(Status: DnaCodeStatus; isDirecteLevering: boolean = false); procedure ToeleveringDataOphalen(); procedure VhossDataOphalen(); - procedure VerwerkMogelijkePopups(DnaCodes: ArrayofDnaCodeDnaCode; Toelevering: String); + procedure VerwerkMogelijkePopups(DnaCodes: ArrayofDnaCodeDnaCode; Toelevering: String; IsSST: boolean = false); function BepaalIndexEersteRelevanteDnaCode(DnaCodes: ArrayofDnaCodeDnaCode; Toelevering: String): integer; function BepaalAantalLadesOpHuidigePallet: integer; function BepaalDirecteLevering: boolean; @@ -51,6 +53,9 @@ procedure RondAfVhossBatch(); 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; @@ -80,20 +85,22 @@ procedure TfmDnaCodeScherm.FormShow(Sender: TObject); begin btnLinksOnder.Action := actPallet; - btnCentraalOnder.Action := actHome; btnRechtsOnder.Action := actAfronden; edtDnaCode.Text := ''; lblHuidigePalletData.Caption := UiContext.Pallet; lblToeleveringData.Caption := UiContext.Toelevering; lblAantalGescand.Caption := ''; lblTotaalAantal.Caption := ''; + lblAantalOpPallet.Caption := IntToStr(GeefAantalOpPallet(UiContext.Pallet)); btnInfo.Visible := false; fImagesScherm.ilAlgemeen64.GetIcon(8, imgToelevering.Picture.Icon); fImagesScherm.ilAlgemeen64.GetIcon(9, imgPallet.Picture.Icon); fImagesScherm.ilAlgemeen64.GetIcon(10, imgLaatstGescand.Picture.Icon); fImagesScherm.ilAlgemeen32.GetIcon(5, imgWegwerpPallet.Picture.Icon); fImagesScherm.ilAlgemeen32.GetIcon(3, imgDirecteLevering.Picture.Icon); fImagesScherm.ilAlgemeen32.GetIcon(4, imgExport.Picture.Icon); + fImagesScherm.ilAlgemeen32.GetIcon(6, imgBlumXs.Picture.Icon); + fImagesScherm.ilAlgemeen32.GetIcon(7, imgKartonnenPallet.Picture.Icon); if UiContext.Modus = modusVHOSS then begin VhossDataOphalen(); @@ -104,70 +111,67 @@ imgDirecteLevering.Visible := false; imgWegwerpPallet.Visible := false; imgExport.Visible := false; + imgBlumXs.Visible := false; + imgKartonnenPallet.Visible := false; end; end; ZetIcoontjesBovenaan; edtDnaCode.SetFocus; inherited; end; -procedure TfmDnaCodeScherm.actHomeExecute(Sender: TObject); -begin - inherited; - if UiContext.Modus = modusVhoss then begin - UiContext.Pallet := ''; - UiContext.Toelevering := ''; - UiContext.BatchId := ''; - end; - PostMessage(Self.Handle,WM_Close,0,0); - (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(mrHome); -end; - procedure TfmDnaCodeScherm.actPalletExecute(Sender: TObject); var fAantalLadesOpHuidigePallet: integer; fIsDirecteLevering: boolean; begin inherited; - fAantalLadesOpHuidigePallet := BepaalAantalLadesOpHuidigePallet; - if fAantalLadesOpHuidigePallet > 0 then begin - if (UiContext.Modus = modusKAD) then begin - PalletBijwerken(DnaCodeStatus.InBuffer,false); - UiContext.Pallet := ''; - Self.ModalResult := mrPallet; - end else if (UiContext.Modus = modusVHOSS) then begin - if lblAantalGescand.Caption = lblTotaalAantal.Caption then begin + ZetAfrondActieStatus(false); + try + fAantalLadesOpHuidigePallet := BepaalAantalLadesOpHuidigePallet; + if fAantalLadesOpHuidigePallet > 0 then begin + if (UiContext.Modus = modusKAD) then begin PalletBijwerken(DnaCodeStatus.InBuffer,false); UiContext.Pallet := ''; - UiContext.Toelevering := ''; - UiContext.BatchId := ''; Self.ModalResult := mrPallet; - end else begin - if (ToonPopupScherm('Vhoss nog niet volledig.'+#13#10+'Toch verwerken?','Ja','Annuleren',14,6,7) = mrYes) then begin + end else if (UiContext.Modus = modusVHOSS) then begin + if lblAantalGescand.Caption = lblTotaalAantal.Caption then begin PalletBijwerken(DnaCodeStatus.InBuffer,false); UiContext.Pallet := ''; + UiContext.Toelevering := ''; + UiContext.BatchId := ''; Self.ModalResult := mrPallet; end else begin - Self.ModalResult := mrDnaCode; + if (ToonPopupScherm('Vhoss nog niet volledig.'+#13#10+'Toch verwerken?','Ja','Annuleren',14,6,7) = mrYes) then begin + PalletBijwerken(DnaCodeStatus.InBuffer,false); + UiContext.Pallet := ''; + Self.ModalResult := mrPallet; + end else begin + Self.ModalResult := mrDnaCode; + end; end; + end else if ((UiContext.Modus = modusDefault) and (ToonPopupScherm(lblHuidigePalletData.Caption+' verwerken?'+#13#10+inttostr(fAantalLadesOpHuidigePallet)+' lade(s)','Ja','Annuleren',14,6,7) = mrYes)) then begin + fIsDirecteLevering := (UiContext.Modus = modusDefault) and BepaalDirecteLevering; + if fIsDirecteLevering then begin + ToonPopupScherm('Directe levering', 'OK','',15,-1,-1,clBlue); + imgDirecteLevering.Visible := true; + end; + PalletBijwerken(DnaCodeStatus.InBuffer,fIsDirecteLevering); + DrukProboxEtiketAfIndienNodig; + UiContext.Pallet := ''; + Self.ModalResult := mrPallet; + end else begin + Self.ModalResult := mrDnaCode; end; - end else if ((UiContext.Modus = modusDefault) and (ToonPopupScherm(lblHuidigePalletData.Caption+' verwerken?'+#13#10+inttostr(fAantalLadesOpHuidigePallet)+' lade(s)','Ja','Annuleren',14,6,7) = mrYes)) then begin - fIsDirecteLevering := (UiContext.Modus = modusDefault) and BepaalDirecteLevering; - if fIsDirecteLevering then begin - ToonPopupScherm('Directe levering', 'OK','',15,-1,-1,clBlue); - imgDirecteLevering.Visible := true; - end; - PalletBijwerken(DnaCodeStatus.InBuffer,fIsDirecteLevering); - DrukProboxEtiketAfIndienNodig; + end else begin UiContext.Pallet := ''; Self.ModalResult := mrPallet; - end else begin - Self.ModalResult := mrDnaCode; end; - end else - Self.ModalResult := mrPallet; - PostMessage(Self.Handle,WM_Close,0,0); - (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); + finally + ZetAfrondActieStatus(true); + PostMessage(Self.Handle,WM_Close,0,0); + (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); + end; end; procedure TfmDnaCodeScherm.actAfrondenExecute(Sender: TObject); @@ -180,50 +184,55 @@ if UiContext.Toelevering = '' then exit; ZetAfrondActieStatus(false); - if (UiContext.Modus = modusKAD) then begin - RondAfKaderdeurDag(); - UiContext.Toelevering := ''; - UiContext.Pallet := ''; - end else if (UiContext.Modus = modusVHOSS) then begin - RondAfVhossBatch(); - UiContext.Toelevering := ''; - UiContext.Pallet := ''; - end else begin - fIsDirecteLevering := (UiContext.Modus = modusDefault) and BepaalDirecteLevering; - if lblAantalGescand.Caption = lblTotaalAantal.Caption then begin - if fIsDirecteLevering then begin - ToonPopupScherm('Directe levering', 'OK','',15,-1,-1,clBlue); - imgDirecteLevering.Visible := true; - end; - ZetToeleveringStatus(DnaCodeStatus.InBuffer, fIsDirecteLevering); - if Self.ModalResult = mrPallet then begin - ToonPopupScherm('Toelevering succesvol afgerond','OK','',19,-1,-1,clGreen); - UiContext.Toelevering := ''; - UiContext.BatchId := ''; - DrukProboxEtiketAfIndienNodig; - end; + try + if (UiContext.Modus = modusKAD) then begin + RondAfKaderdeurDag(); + UiContext.Toelevering := ''; + UiContext.Pallet := ''; + end else if (UiContext.Modus = modusVHOSS) then begin + RondAfVhossBatch(); + UiContext.Toelevering := ''; + UiContext.Pallet := ''; end else begin - fOnvolledigeToeleveringScherm := TfmOnvolledigeToeleveringScherm.Create(self); - try - fOnvolledigeToeleveringScherm.UiContext := UiContext; - fWaarschuwingModalResult := fOnvolledigeToeleveringScherm.ShowModal; - if fWaarschuwingModalResult = mrNo then begin - ZetToeleveringStatus(DnaCodeStatus.InBuffer, fIsDirecteLevering); - UiContext.Toelevering := ''; - UiContext.BatchId := ''; - Self.ModalResult := mrPallet; - DrukProboxEtiketAfIndienNodig; + fIsDirecteLevering := (UiContext.Modus = modusDefault) and BepaalDirecteLevering; + if lblAantalGescand.Caption = lblTotaalAantal.Caption then begin + if fIsDirecteLevering then begin + ToonPopupScherm('Directe levering', 'OK','',15,-1,-1,clBlue); + imgDirecteLevering.Visible := true; + end; + DrukProboxEtiketAfIndienNodig; + ZetToeleveringStatus(DnaCodeStatus.InBuffer, fIsDirecteLevering); + if Self.ModalResult = mrPallet then begin + ToonPopupScherm('Toelevering succesvol afgerond','OK','',19,-1,-1,clGreen); end else begin - Self.ModalResult := mrDnaCode; + ToonPopupScherm('Toelevering niet succesvol afgerond, etiket weggooien','OK','',2,-1,-1, clRed); end; - finally - fOnvolledigeToeleveringScherm.Free; + UiContext.Toelevering := ''; + UiContext.BatchId := ''; + end else begin + fOnvolledigeToeleveringScherm := TfmOnvolledigeToeleveringScherm.Create(self); + try + fOnvolledigeToeleveringScherm.UiContext := UiContext; + fWaarschuwingModalResult := fOnvolledigeToeleveringScherm.ShowModal; + if fWaarschuwingModalResult = mrNo then begin + DrukProboxEtiketAfIndienNodig; + ZetToeleveringStatus(DnaCodeStatus.InBuffer, fIsDirecteLevering); + UiContext.Toelevering := ''; + UiContext.BatchId := ''; + Self.ModalResult := mrPallet; + end else begin + Self.ModalResult := mrDnaCode; + end; + finally + fOnvolledigeToeleveringScherm.Free; + end; end; end; + finally + ZetAfrondActieStatus(true); + PostMessage(Self.Handle,WM_Close,0,0); + (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); end; - ZetAfrondActieStatus(true); - PostMessage(Self.Handle,WM_Close,0,0); - (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); end; function TfmDnaCodeScherm.BepaalAantalLadesOpHuidigePallet: integer; @@ -236,7 +245,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; @@ -272,7 +283,6 @@ fDirecteLeveringResponse: DirecteLeveringResponse; fAgent: TAgent; begin - result := false; fAgent := TAgent.Create(UiContext); fDirecteLeveringResponse := fAgent.IsDirecteLevering(UiContext.Toelevering); fAgent.Free; @@ -336,6 +346,8 @@ procedure TfmDnaCodeScherm.MeldDnaCodeAf; var + fZoekViaDnaCodeResponse: ZoekViaDnaCodeResponse; + fDnaCode: DnaCode; Response: DnaCodeAfmeldenResponse; List: TStrings; Locatie: string; @@ -344,6 +356,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; @@ -367,7 +393,7 @@ lblTotaalAantal.Caption := IntToStr(Response.AantalInToelevering); ZetInfoIcoontjeZichtbaar; ZetIcoontjesBovenaan; - VerwerkMogelijkePopups(Response.DnaCodes, UiContext.Toelevering); + VerwerkMogelijkePopups(Response.DnaCodes, UiContext.Toelevering, Response.isSST); Self.ModalResult := mrDnaCode; UiContext.LaatsteDnaCodeGoedAfgemeld := true; end; @@ -376,8 +402,13 @@ Self.ModalResult := mrDnaCodeReedsGescand; UiContext.LaatsteDnaCodeGoedAfgemeld := false; end; + -1021: begin //Geen geldige DNA code + Self.ModalResult := mrDnaCode; + ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw'); + UiContext.LaatsteDnaCodeGoedAfgemeld := false; + end; else begin - Self.ModalResult := mrDnaCode; + Self.ModalResult := mrPallet; ToonPopupScherm(Response.Header.Omschrijving, 'Probeer opnieuw'); UiContext.LaatsteDnaCodeGoedAfgemeld := false; end; @@ -389,6 +420,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; @@ -520,7 +576,7 @@ end; end; -procedure TfmDnaCodeScherm.VerwerkMogelijkePopups(DnaCodes: ArrayofDnaCodeDnaCode; Toelevering: String); +procedure TfmDnaCodeScherm.VerwerkMogelijkePopups(DnaCodes: ArrayofDnaCodeDnaCode; Toelevering: String; IsSST: boolean = false); var fBewerkKlantinstellingenResponse: BewerkKlantinstellingenResponse; ii: integer; @@ -545,11 +601,18 @@ end; imgWegwerpPallet.Visible := DnaCodes[fIndexEersteRelevanteDnaCode].IsWegwerpPallet; + if IsSST then begin + if not UIContext.IsSSTPopupGetoond then begin + ToonPopupScherm('SpaceStep aanwezig', 'OK','',13,-1,-1,clGray); + UIContext.IsSSTPopupGetoond := true; + end; + end; + ii := 0; if not UiContext.IsExportPopupGetoond then begin try fAgent := TAgent.Create(UiContext); - fBewerkKlantinstellingenResponse := fAgent.BewerkKlantinstellingen('List','',false, false, false); + fBewerkKlantinstellingenResponse := fAgent.BewerkKlantinstellingen('List','',false, false, false, false, false, false); fAgent.Free; while ii <= length(fBewerkKlantinstellingenResponse.Klantinstellingen)-1 do begin if fBewerkKlantinstellingenResponse.Klantinstellingen[ii].KlantId = DnaCodes[fIndexEersteRelevanteDnaCode].KlantNummer then begin @@ -568,7 +631,52 @@ imgExport.Visible := true; end; + ii := 0; + if not UiContext.IsBlumXsPopupGetoond then begin + try + fAgent := TAgent.Create(UiContext); + fBewerkKlantinstellingenResponse := fAgent.BewerkKlantinstellingen('List','',false, false, false, false, false, false); + fAgent.Free; + while ii <= length(fBewerkKlantinstellingenResponse.Klantinstellingen)-1 do begin + if fBewerkKlantinstellingenResponse.Klantinstellingen[ii].KlantId = DnaCodes[fIndexEersteRelevanteDnaCode].KlantNummer then begin + if fBewerkKlantinstellingenResponse.Klantinstellingen[ii].IsBlumXs then begin + ToonPopupScherm('Blum XS', 'OK','',22,-1,-1,clWebDarkOrange); + UiContext.IsBlumXsPopupGetoond := true; + imgBlumXs.Visible := true; + end; + end; + ii := ii + 1; + end; + finally + fBewerkKlantinstellingenResponse.Free; + end; + end else begin + imgBlumXs.Visible := true; + end; + ii := 0; + if not UiContext.IsKartonnenPalletPopupGetoond then begin + try + fAgent := TAgent.Create(UiContext); + fBewerkKlantinstellingenResponse := fAgent.BewerkKlantinstellingen('List','',false, false, false, false, false, false); + fAgent.Free; + while ii <= length(fBewerkKlantinstellingenResponse.Klantinstellingen)-1 do begin + if fBewerkKlantinstellingenResponse.Klantinstellingen[ii].KlantId = DnaCodes[fIndexEersteRelevanteDnaCode].KlantNummer then begin + if fBewerkKlantinstellingenResponse.Klantinstellingen[ii].KartonnenPallet then begin + ToonPopupScherm('Kartonnen pallet', 'OK','',23,-1,-1,clRed); + UiContext.IsKartonnenPalletPopupGetoond := true; + imgKartonnenPallet.Visible := true; + end; + end; + ii := ii + 1; + end; + finally + fBewerkKlantinstellingenResponse.Free; + end; + end else begin + imgKartonnenPallet.Visible := true; + end; + Repaint; end; end; @@ -579,7 +687,6 @@ pnlLinksOnder.Color := $001717CD; actPallet.OnExecute := actPalletExecute; pnlCentraalOnder.Color := $001717CD; - actHome.OnExecute := actHomeExecute; pnlRechtsOnder.Color := $001717CD; actAfronden.OnExecute := actAfrondenExecute; end else begin @@ -588,7 +695,6 @@ pnlRechtsOnder.Color := clGray; actAfronden.OnExecute := nil; actPallet.OnExecute := nil; - actHome.OnExecute := nil; end; Repaint; end; @@ -613,7 +719,7 @@ lblLaatstGescandData.Caption := ''; imgLaatstGescand.Visible := false; end else begin - lblLaatstGescandData.Caption := TCommonFunctions.VerkorteDnaCode(UiContext.LaatsteDnaCode); + lblLaatstGescandData.Caption := Copy(UiContext.LaatsteDnaCode,5,3); imgLaatstGescand.Visible := true; end; end; @@ -755,6 +861,7 @@ if fZoekViaPalletCodeResponse.Header.Status = '200' then begin DnaCodes := fZoekViaPalletCodeResponse.DnaCodes; end else begin + Self.ModalResult := mrHome; ToonPopupScherm(fZoekViaPalletCodeResponse.Header.Omschrijving, 'Bel planning'); end; @@ -770,9 +877,12 @@ fAgent.Free; try if fProboxAfdrukkenResponse.Header.Status <> '200' then begin - Self.ModalResult := mrDnaCode; + Self.ModalResult := mrHome; ToonPopupScherm(fProboxAfdrukkenResponse.Header.Omschrijving, 'Bel planning') end else begin + UiContext.LaatstAfgedrukteDnaCodes.Clear; + UiContext.LaatstAfgedrukteDnaCodes := DnaCodesStringList; + Self.ModalResult := mrPallet; end; finally @@ -783,4 +893,32 @@ end; end; +function TfmDnaCodeScherm.GeefAantalOpPallet(PalletCode: string): integer; +var + fAgent: TAgent; + fZoekViaPalletCodeResponse: ZoekViaPalletCodeResponse; + fAantal: integer; +begin + 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.