Index: ProScan/UI/DnaCodeSchermVoorOnderdelen.pas =================================================================== diff -u -r681 -r683 --- ProScan/UI/DnaCodeSchermVoorOnderdelen.pas (.../DnaCodeSchermVoorOnderdelen.pas) (revision 681) +++ ProScan/UI/DnaCodeSchermVoorOnderdelen.pas (.../DnaCodeSchermVoorOnderdelen.pas) (revision 683) @@ -29,16 +29,21 @@ procedure FormShow(Sender: TObject); procedure actTerugExecute(Sender: TObject); procedure actPalletExecute(Sender: TObject); + procedure actAfrondenExecute(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnInfoClick(Sender: TObject); private fImagesScherm: TImagesScherm; + function MeldDnaCodeVoorOnderdelenAf: boolean; procedure ToeleveringDataOphalen(); function BepaalAantalLadesOpHuidigePallet: integer; procedure ZetIcoontjesBovenaan; procedure ZetInfoIcoontjeZichtbaar; - procedure DrukProboxEtiketAfIndienNodig; + procedure DrukProboxEtiketAf; function GeefAantalOpPallet(Palletcode: String): integer; + function BepaalDirecteLevering: boolean; + procedure ZetToeleveringStatus(Status: DnaCodeStatus; isDirecteLevering: boolean = false); + procedure ZetAfrondActieStatus(actief: boolean); public end; @@ -98,17 +103,147 @@ end; procedure TfmDnaCodeSchermVoorOnderdelen.actPalletExecute(Sender: TObject); -var - fAantalLadesOpHuidigePallet: integer; - fIsDirecteLevering: boolean; begin inherited; - Self.ModalResult := mrPallet; + + Self.ModalResult := mrDnaCodeVoorOnderdelen; + if MeldDnaCodeVoorOnderdelenAf then begin + UiContext.Toelevering := ''; + UiContext.Pallet := ''; + DrukProboxEtiketAf; + end; + PostMessage(Self.Handle,WM_Close,0,0); (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); end; +procedure TfmDnaCodeSchermVoorOnderdelen.actAfrondenExecute(Sender: TObject); +var + fWaarschuwingModalResult: TModalResult; + fIsDirecteLevering: boolean; + fOnvolledigeToeleveringScherm: TfmOnvolledigeToeleveringScherm; +begin + inherited; + if UiContext.Toelevering = '' then + exit; + + ZetAfrondActieStatus(false); + + if not MeldDnaCodeVoorOnderdelenAf then begin + PostMessage(Self.Handle,WM_Close,0,0); + (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(mrDnaCodeVoorOnderdelen); + end; + + try + 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; + + DrukProboxEtiketAf; + ZetToeleveringStatus(DnaCodeStatus.InBuffer, fIsDirecteLevering); + if Self.ModalResult = mrPallet then begin + ToonPopupScherm('Toelevering succesvol afgerond','OK','',19,-1,-1,clGreen); + end else begin + ToonPopupScherm('Toelevering niet succesvol afgerond, etiket weggooien','OK','',2,-1,-1, clRed); + end; + + UiContext.Toelevering := ''; + UiContext.BatchId := ''; + end else begin + fOnvolledigeToeleveringScherm := TfmOnvolledigeToeleveringScherm.Create(self); + try + fOnvolledigeToeleveringScherm.UiContext := UiContext; + fWaarschuwingModalResult := fOnvolledigeToeleveringScherm.ShowModal; + if fWaarschuwingModalResult = mrNo then begin + DrukProboxEtiketAf; + ZetToeleveringStatus(DnaCodeStatus.InBuffer, fIsDirecteLevering); + UiContext.Toelevering := ''; + UiContext.BatchId := ''; + Self.ModalResult := mrPallet; + end else begin + Self.ModalResult := mrDnaCode; + end; + finally + fOnvolledigeToeleveringScherm.Free; + end; + end; + finally + ZetAfrondActieStatus(true); + PostMessage(Self.Handle,WM_Close,0,0); + (Self.Parent.Parent As TfmProScanHoofdscherm).NavigeerNaar(Self.ModalResult); + end; +end; + +function TfmDnaCodeSchermVoorOnderdelen.MeldDnaCodeVoorOnderdelenAf: boolean; +var + fZoekViaDnaCodeResponse: ZoekViaDnaCodeResponse; + fDnaCode: DnaCode; + fDnaCodeAfmeldenResponse: DnaCodeAfmeldenResponse; + List: TStrings; + Locatie: string; + fAgent: TAgent; +begin + fAgent := TAgent.Create(UiContext); + fDnaCodeAfmeldenResponse := fAgent.DnaCodeAfmelden('',UiContext.Toelevering,UiContext.Pallet,1,''); + fAgent.Free; + + try + if fDnaCodeAfmeldenResponse.Header.Status = '200' then begin + UiContext.LaatsteDnaCodeGoedAfgemeld := true; + result := true; + end else begin + ToonPopupScherm(fDnaCodeAfmeldenResponse.Header.Omschrijving, 'Probeer opnieuw'); + result := false; + end; + finally + fDnaCodeAfmeldenResponse.Free; + end; +end; + +function TfmDnaCodeSchermVoorOnderdelen.BepaalDirecteLevering: boolean; +var + fDirecteLeveringResponse: DirecteLeveringResponse; + fAgent: TAgent; +begin + fAgent := TAgent.Create(UiContext); + fDirecteLeveringResponse := fAgent.IsDirecteLevering(UiContext.Toelevering); + fAgent.Free; + 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 TfmDnaCodeSchermVoorOnderdelen.ZetToeleveringStatus(Status: DnaCodeStatus; isDirecteLevering: boolean = false); +var + Response: ToeleveringBijwerkenResponse; + fAgent: TAgent; +begin + fAgent := TAgent.Create(UiContext); + Response := fAgent.ToeleveringBijwerken(UiContext.Toelevering,Status,isDirecteLevering); + fAgent.Free; + 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; + function TfmDnaCodeSchermVoorOnderdelen.BepaalAantalLadesOpHuidigePallet: integer; var fZoekViaPalletCodeResponse: ZoekViaPalletCodeResponse; @@ -230,54 +365,26 @@ btnInfo.Visible := true; end; -procedure TfmDnaCodeSchermVoorOnderdelen.DrukProboxEtiketAfIndienNodig; +procedure TfmDnaCodeSchermVoorOnderdelen.DrukProboxEtiketAf; var fProboxAfdrukkenResponse: ProboxEtiketAfdrukkenResponse; - fZoekViaPalletCodeResponse: ZoekViaPalletCodeResponse; - DnaCodesStringList: TStringList; - DnaCodes: ArrayOfDnaCodeDnaCode; - ii: integer; fAgent: TAgent; begin - if not (System.StrUtils.LeftStr(UiContext.Pallet,3) = 'TBP') then - exit; - fAgent := TAgent.Create(UiContext); - fZoekViaPalletCodeResponse := fAgent.ZoekViaPalletCode(UiContext.Pallet); + fProboxAfdrukkenResponse := fAgent.ProboxEtiketAfdrukken(TStringList.Create()); fAgent.Free; + try - if fZoekViaPalletCodeResponse.Header.Status = '200' then begin - DnaCodes := fZoekViaPalletCodeResponse.DnaCodes; - end else begin + if fProboxAfdrukkenResponse.Header.Status <> '200' then begin Self.ModalResult := mrHome; - ToonPopupScherm(fZoekViaPalletCodeResponse.Header.Omschrijving, 'Bel planning'); + ToonPopupScherm(fProboxAfdrukkenResponse.Header.Omschrijving, 'Bel planning'); + Self.ModalResult := mrHome; + end else begin + UiContext.LaatstAfgedrukteDnaCodes.Clear; + Self.ModalResult := mrPallet; end; - - DnaCodesStringList := TStringList.Create(); - ii := 0; - while ii < length(DnaCodes) do begin - DnaCodesStringList.Add(DnaCodes[ii].DnaCode); - ii := ii + 1; - end; - - fAgent := TAgent.Create(UiContext); - fProboxAfdrukkenResponse := fAgent.ProboxEtiketAfdrukken(DnaCodesStringList); - fAgent.Free; - try - if fProboxAfdrukkenResponse.Header.Status <> '200' then begin - Self.ModalResult := mrHome; - ToonPopupScherm(fProboxAfdrukkenResponse.Header.Omschrijving, 'Bel planning') - end else begin - UiContext.LaatstAfgedrukteDnaCodes.Clear; - UiContext.LaatstAfgedrukteDnaCodes := DnaCodesStringList; - - Self.ModalResult := mrPallet; - end; - finally - fProboxAfdrukkenResponse.Free; - end; finally - fZoekViaPalletCodeResponse.Free; + fProboxAfdrukkenResponse.Free; end; end; @@ -299,4 +406,22 @@ Result := fAantal; end; +procedure TfmDnaCodeSchermVoorOnderdelen.ZetAfrondActieStatus(actief: boolean); +begin + if actief then begin + pnlLinksOnder.Color := $001717CD; + actPallet.OnExecute := actPalletExecute; + pnlCentraalOnder.Color := $001717CD; + pnlRechtsOnder.Color := $001717CD; + actAfronden.OnExecute := actAfrondenExecute; + end else begin + pnlLinksOnder.Color := clGray; + pnlCentraalOnder.Color := clGray; + pnlRechtsOnder.Color := clGray; + actAfronden.OnExecute := nil; + actPallet.OnExecute := nil; + end; + Repaint; +end; + end.