unit frameDnaCodes; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids, AfdrukService, DnaCodeService, Agent, Data.DB, Datasnap.DBClient, UiContext, typinfo, Vcl.Imaging.pngimage, ProboxPrinterKeuze; type TfrmDnaCodes = class(TFrame) dbgDnaCodes: TDBGrid; pnlActies: TPanel; btnProductetiket: TButton; btnKlantEtiket: TButton; btnProboxetiket: TButton; pnlZoekKnoppen: TPanel; btnZoeken: TButton; edtDnaCode: TEdit; dsDnaCodes: TDataSource; imgPrinter: TImage; lblDnaCode: TLabel; lblPallet: TLabel; edtPallet: TEdit; lblToelevering: TLabel; edtToelevering: TEdit; lblKlantNummer: TLabel; edtKlantNummer: TEdit; lblOrderNummer: TLabel; edtOrderNummer: TEdit; edtLadeCode: TEdit; lblLadeCode: TLabel; edtBatch: TEdit; lblBatch: TLabel; lblLPN: TLabel; edtLPN: TEdit; edtStatus: TEdit; lblStatus: TLabel; procedure ZoekViaDnaCode(); procedure ZoekViaPallet(); procedure ZoekViaToelevering(); procedure ZoekViaKlantnummer(); procedure ZoekViaLadecode(); procedure ZoekViaOrdernummer(); procedure ZoekViaBatch(); procedure btnZoekenClick(Sender: TObject); procedure btnProductetiketClick(Sender: TObject); procedure btnKlantEtiketClick(Sender: TObject); procedure btnProboxetiketClick(Sender: TObject); procedure edtToeleveringEnter(Sender: TObject); procedure edtDnaCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private fcdsDnaCodes: TClientDataset; procedure VulDnaCodeGridMetData(DnaCodes: ArrayOfDnaCodeDnaCode); function BepaalGeselecteerdeDnaCodes: TStringList; function GeefAlleDnaCodesUitGrid: TStringList; procedure ZoekveldenLeegmaken(); procedure DnaCodesZoeken(); public constructor Create(AOwner: TComponent) ; override; property cdsDnaCodes: TClientDataset read fcdsDnaCodes write fcdsDnaCodes; end; implementation uses Main, System.StrUtils; {$R *.dfm} constructor TfrmDnaCodes.Create(AOwner: TComponent); begin inherited; cdsDnaCodes := TClientDataSet.Create(self); with cdsDnaCodes.FieldDefs do begin Clear; Add('DnaCode',ftString, 10); Add('Pallet',ftString, 10); Add('Toelevering',ftString, 10); Add('Status',ftString, 10); Add('Batch',ftString, 10); Add('Scantijdstip',ftString, 20); Add('Initialen',ftString, 3); Add('LadeCode',ftString, 10); Add('ParentDnaCode', ftString, 10); end; cdsDnaCodes.CreateDataSet; dsDnaCodes.DataSet := cdsDnaCodes; end; procedure TfrmDnaCodes.btnProductetiketClick(Sender: TObject); var DnaCodesStringList: TStringList; fProductEtiketAfdrukkenResponse: ProductEtiketAfdrukkenResponse; begin DnaCodesStringList := BepaalGeselecteerdeDnaCodes(); fProductEtiketAfdrukkenResponse := TAgent.Create(fmMain.UiContext).ProductEtiketAfdrukken(DnaCodesStringList); try if fProductEtiketAfdrukkenResponse.Header.Status <> '200' then begin ShowMessage(fProductEtiketAfdrukkenResponse.Header.Omschrijving) end else begin ShowMessage('Etiketten afgedrukt') end; finally fProductEtiketAfdrukkenResponse.Free; end; end; procedure TfrmDnaCodes.btnKlantEtiketClick(Sender: TObject); var DnaCodesStringList: TStringList; fKlantEtiketAfdrukkenResponse: KlantEtiketAfdrukkenResponse; begin DnaCodesStringList := BepaalGeselecteerdeDnaCodes(); fKlantEtiketAfdrukkenResponse := TAgent.Create(fmMain.UiContext).KlantEtiketAfdrukken(DnaCodesStringList); try if fKlantEtiketAfdrukkenResponse.Header.Status <> '200' then begin ShowMessage(fKlantEtiketAfdrukkenResponse.Header.Omschrijving) end else begin ShowMessage('Etiketten afgedrukt') end; finally fKlantEtiketAfdrukkenResponse.Free; end; end; procedure TfrmDnaCodes.btnProboxetiketClick(Sender: TObject); var DnaCodesStringList: TStringList; fProboxAfdrukkenResponse: AfdrukService.ProboxEtiketAfdrukkenResponse; fZoekViaDnaCodeResponse: ZoekViaDnaCodeResponse; fProboxPrinterKeuze: TformProboxPrinterKeuze; fPrinterWaaropAfgedruktMoetWorden: string; begin try fProboxPrinterKeuze := TformProboxPrinterKeuze.Create(self); fProboxPrinterKeuze.ShowModal(); fPrinterWaaropAfgedruktMoetWorden := fProboxPrinterKeuze.Lijn; finally fProboxPrinterKeuze.Free; end; DnaCodesStringList := GeefAlleDnaCodesUitGrid(); fProboxAfdrukkenResponse := TAgent.Create(fmMain.UiContext).ProboxEtiketAfdrukken(DnaCodesStringList, fPrinterWaaropAfgedruktMoetWorden); try if fProboxAfdrukkenResponse.Header.Status <> '200' then begin ShowMessage(fProboxAfdrukkenResponse.Header.Omschrijving) end else begin ShowMessage('Etiketten afgedrukt') end; finally fProboxAfdrukkenResponse.Free; end; end; procedure TfrmDnaCodes.ZoekViaDnaCode(); var fZoekViaDnaCodeResponse: ZoekViaDnaCodeResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaDnaCodeResponse := TAgent.Create(fmMain.UiContext).ZoekViaDnaCode(edtDnaCode.Text); try if fZoekViaDnaCodeResponse.Header.Status = '200' then begin SetLength(DnaCodes,1); DnaCodes[0] := fZoekViaDnaCodeResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); btnProboxetiket.Visible := false; end else begin ShowMessage(fZoekViaDnaCodeResponse.Header.Omschrijving); end; finally fZoekViaDnaCodeResponse.Free; end; end; procedure TfrmDnaCodes.ZoekViaKlantnummer; var fZoekViaKlantnummerResponse: ZoekViaKlantnummerResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaKlantnummerResponse := TAgent.Create(fmMain.UiContext).ZoekViaKlantnummer(edtKlantnummer.Text); try if fZoekViaKlantnummerResponse.Header.Status = '200' then begin DnaCodes := fZoekViaKlantnummerResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); end else begin ShowMessage(fZoekViaKlantnummerResponse.Header.Omschrijving); end; finally fZoekViaKlantnummerResponse.Free; end; end; procedure TfrmDnaCodes.ZoekViaLadecode; var fZoekViaLadecodeResponse: ZoekViaLadecodeResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaLadecodeResponse := TAgent.Create(fmMain.UiContext).ZoekViaLadecode(edtLadecode.Text); try if fZoekViaLadecodeResponse.Header.Status = '200' then begin DnaCodes := fZoekViaLadecodeResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); end else begin ShowMessage(fZoekViaLadecodeResponse.Header.Omschrijving); end; finally fZoekViaLadecodeResponse.Free; end; end; procedure TfrmDnaCodes.ZoekViaBatch; var fZoekViaBatchResponse: ZoekViaBatchResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaBatchResponse := TAgent.Create(fmMain.UiContext).ZoekViaBatchId(edtBatch.Text); try if fZoekViaBatchResponse.Header.Status = '200' then begin DnaCodes := fZoekViaBatchResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); end else begin ShowMessage(fZoekViaBatchResponse.Header.Omschrijving); end; finally fZoekViaBatchResponse.Free; end; end; procedure TfrmDnaCodes.ZoekViaOrdernummer; var fZoekViaOrdernummerResponse: ZoekViaOrdernummerResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaOrdernummerResponse := TAgent.Create(fmMain.UiContext).ZoekViaOrdernummer(edtOrdernummer.Text); try if fZoekViaOrdernummerResponse.Header.Status = '200' then begin DnaCodes := fZoekViaOrdernummerResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); end else begin ShowMessage(fZoekViaOrdernummerResponse.Header.Omschrijving); end; finally fZoekViaOrdernummerResponse.Free; end; end; procedure TfrmDnaCodes.ZoekViaPallet(); var fZoekViaPalletResponse: ZoekViaPalletCodeResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaPalletResponse := TAgent.Create(fmMain.UiContext).ZoekViaPalletCode(edtPallet.Text); try if fZoekViaPalletResponse.Header.Status = '200' then begin DnaCodes := fZoekViaPalletResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); if StartsText('TBP',edtPallet.Text) then btnProboxetiket.Visible := true; end else begin ShowMessage(fZoekViaPalletResponse.Header.Omschrijving); end; finally fZoekViaPalletResponse.Free; end; end; procedure TfrmDnaCodes.ZoekViaToelevering(); var fZoekViaToeleveringResponse: ZoekViaToeleveringResponse; DnaCodes: ArrayOfDnaCodeDnaCode; begin fZoekViaToeleveringResponse := TAgent.Create(fmMain.UiContext).ZoekViaToelevering(edtToelevering.Text); try if fZoekViaToeleveringResponse.Header.Status = '200' then begin DnaCodes := fZoekViaToeleveringResponse.DnaCodes; VulDnaCodeGridMetData(DnaCodes); btnProboxetiket.Visible := false; end else begin ShowMessage(fZoekViaToeleveringResponse.Header.Omschrijving); end; finally fZoekViaToeleveringResponse.Free; end; end; procedure TfrmDnaCodes.DnaCodesZoeken; begin if edtToelevering.Text <> '' then ZoekViaToelevering(); if edtPallet.Text <> '' then ZoekViaPallet(); if edtDNACode.Text <> '' then ZoekViaDNACode(); if edtKlantNummer.Text <> '' then ZoekViaKlantnummer(); if edtOrderNummer.Text <> '' then ZoekViaOrderNummer(); if edtLadeCode.Text <> '' then ZoekViaLadeCode(); if edtBatch.Text <> '' then ZoekViaBatch(); end; procedure TfrmDnaCodes.edtDnaCodeKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then begin DnaCodesZoeken(); Key := 0; end; end; procedure TfrmDnaCodes.edtToeleveringEnter(Sender: TObject); begin ZoekveldenLeegmaken(); end; procedure TfrmDnaCodes.btnZoekenClick(Sender: TObject); begin DnaCodesZoeken(); end; procedure TfrmDnaCodes.VulDnaCodeGridMetData(DnaCodes: ArrayOfDnaCodeDnaCode); var ii: integer; ScanTijdstipAsString: string; begin cdsDnaCodes.Close; cdsDnaCodes.CreateDataSet; ii := 0; while ii <= length(DnaCodes)-1 do begin if DnaCodes[ii].ScanTijdstip = nil then ScanTijdstipAsString := '' else ScanTijdstipAsString := DateTimeToStr(DnaCodes[ii].ScanTijdstip.AsUTCDateTime); if not(DnaCodes[ii].AfdrukTijdstip = nil) then cdsDnaCodes.InsertRecord([DnaCodes[ii].DnaCode, DnaCodes[ii].PalletCode, DnaCodes[ii].Toelevering, GetEnumName(typeInfo(DnaCodeStatus),Ord(DnaCodes[ii].Status)), DnaCodes[ii].BatchId, ScanTijdstipAsString, DnaCodes[ii].InitialenScanner, DnaCodes[ii].LadeCode, DnaCodes[ii].ParentDnaCode]); ii := ii + 1; end; end; procedure TfrmDnaCodes.ZoekveldenLeegmaken; begin edtToelevering.Text := ''; edtPallet.Text := ''; edtDNACode.Text := ''; edtKlantNummer.Text := ''; edtOrderNummer.Text := ''; edtLadeCode.Text := ''; edtBatch.Text := ''; end; function TfrmDnaCodes.BepaalGeselecteerdeDnaCodes: TStringList; var DnaCodesStringList: TStringList; RijTeller: integer; begin DnaCodesStringList := TStringList.Create(); if dbgDnaCodes.SelectedRows.Count > 0 then begin for rijteller := 0 to dbgDnaCodes.SelectedRows.Count - 1 do begin dbgDnaCodes.DataSource.DataSet.GotoBookmark(Pointer(dbgDnaCodes.SelectedRows.Items[rijteller])); DnaCodesStringList.Add(dbgDnaCodes.DataSource.DataSet.FieldByName('DnaCode').AsString); end; end; result := DnaCodesStringList; end; function TfrmDnaCodes.GeefAlleDnaCodesUitGrid: TStringList; var DnaCodesStringList: TStringList; begin DnaCodesStringList := TStringList.Create(); dbgDnaCodes.DataSource.DataSet.First; while not dbgDnaCodes.DataSource.DataSet.Eof do begin DnaCodesStringList.Add(dbgDnaCodes.DataSource.DataSet.FieldByName('DnaCode').AsString); dbgDnaCodes.DataSource.DataSet.Next; end; result := DnaCodesStringList; end; end.