/[projects]/dao/DelphiScanner/Main.pas
ViewVC logotype

Diff of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2700 by torben, Thu Sep 3 14:53:37 2015 UTC revision 3046 by torben, Mon Jun 13 08:29:35 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes,    UITypes,
23    PakkeshopLabels,    PakkeshopLabels,
24    StBarC,    Utils,
25    Math, // DegToRad() bruges i PrintPakkeshopLabel    ParentForm,
26    Utils    LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TMainForm = class(TForm)    TMainForm = class(TForm, IParentForm)
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 26  type Line 39  type
39      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
40      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
41      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
42      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
43      N1: TMenuItem;      N1: TMenuItem;
44      Pakkernormal1: TMenuItem;      Pakkernormal1: TMenuItem;
# Line 92  type Line 104  type
104      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
105      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
106      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
107        chkForstorTilDirekte: TCheckBox;
108        chkEmballageRepareret: TCheckBox;
109        KommentarST: TLabel;
110    
111    
112    
113    function getProddato() : TDate;    function getProddato() : TDate;
114    function getProddag() : String;    function getProddag() : String;
115    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
116    
117    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
118    procedure StartScreen();    procedure StartScreen();
# Line 174  type Line 189  type
189    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
190    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
191    procedure TjekkerUrls();    procedure TjekkerUrls();
192      procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
193    
194    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
195    
196    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
197    procedure CheckPrintQue(tjektype : string);  
198      //Nedarvet fra IParentForm
199      procedure Msg( msg : string);
200      procedure LogMessage( msg : string);
201      procedure SetPrinterstatusText( txt: string; alert: boolean);
202      function GetFormObject() : TForm;
203    
204    
205    
206    private    private
# Line 187  type Line 209  type
209      SkrivLog : String;      SkrivLog : String;
210      Sted : String;      Sted : String;
211      StedNavn : String;      StedNavn : String;
212      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
213  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
214                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
215    
216      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
217  // 20150330: slut  
218      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
219      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
220      ScanTjekkode : String;      ScanTjekkode : String;
221      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
222      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
223      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
224      LabelType : integer;            FarveIndlevering : String;
225    
226        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
227              TitelIndlevering : String;
228    
229      AlarmLyd : String;      AlarmLyd : String;
230      ScannetOkLyd : String;      ScannetOkLyd : String;
231      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
# Line 206  type Line 234  type
234    
235      PrinterNavn : String;      PrinterNavn : String;
236      TjekPrinter : String;      TjekPrinter : String;
237      XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
238      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
239      BladhusSted : Integer;      BladhusSted : Integer;
240      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 241  type Line 247  type
247      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
248      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
249      TjekUrls : String;      TjekUrls : String;
250        Config : TConfiguration;
251    
     Barcode : TStBarcode;  
252    
253        LabelPrint: TLabelPrint;
254    
255      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
256      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
257      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
258      procedure CheckCode();      procedure CheckCode();
259      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 256  type Line 263  type
263      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
264      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
265      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
266        function InjectURL(Url : String) : String;
267    
268    public    public
269      { Public declarations }      { Public declarations }
270    end;    end;
271    
       function GetPixelsPerInchX(): Integer;  
     function GetPixelsPerInchY(): Integer;  
272    
273  var  var
274    MainForm: TMainForm;    MainForm: TMainForm;
# Line 278  implementation Line 284  implementation
284  {$R *.dfm}  {$R *.dfm}
285    
286    
287    //FormCreate kaldes før InitForm
288    
289  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
290  begin  begin
291    
 // 20150309: startr  
292      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
 // 20150309: slut  
293    
     Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component  
294    
295      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
296      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 357  begin Line 362  begin
362        else if (Sted = 'BR') then        else if (Sted = 'BR') then
363          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
364        else if (Sted = 'BK') then        else if (Sted = 'BK') then
365          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
366          else if (Sted = 'TK') then
367            begin StedNavn := 'BK/Trykkompagniet: '; end
368        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
369          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
370        else if (Sted = '1') then        else if (Sted = '1') then
371          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
372        else if (Sted = '2') then        else if (Sted = '2') then
# Line 454  begin Line 461  begin
461        end;        end;
462      end;      end;
463    
464    
465  end;  end;
466    
467  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 499  begin Line 507  begin
507       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
508  end;  end;
509    
510    function TMainForm.InjectURL(Url : String) : String;
511    begin
512    
513      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
514      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
515      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
516    
517      Result := Url;
518    end;
519    
520    //InitForm kaldes før FormCreate
521  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
522  const  const
523    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
524  var  var
   printerInd : integer;  
525    gemScanningtype : String;    gemScanningtype : String;
526    
527  begin  begin
528    
529    
530    // Initierer nogle variabler    // Initierer nogle variabler
531    BladhusSted := 00;    BladhusSted := 00;
532    Application.ShowHint := True;    Application.ShowHint := True;
# Line 534  begin Line 554  begin
554    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
555    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
556    
557      Config := TConfiguration.Create();
558      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
559      Config.Sted := Sted;
560    
561    // Læser parametre fra ini filen    // Læser parametre fra ini filen
562    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
563    try    try
564    
565    
566      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
567      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
568      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
569    
570      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
571        UrlFindPakketype := InjectURL(UrlFindPakketype);
572    
573      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
574        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
575    
576      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
577        UrlNormal := InjectURL(UrlNormal);
578    
579      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
580        UrlReturDAO := InjectURL(UrlReturDAO);
581    
582      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
583        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
584    
585      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
586        UrlBudlevering := InjectURL(UrlBudlevering);
587    
588      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
589        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
590    
591      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
592        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
593    
594      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
595        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
596    
597      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
598        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
599    
600      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
601        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
602    
603      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
604      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
605    
606        UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
607        UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
608    
609      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
610        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
611    
612      UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');      UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
613        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
614    
615        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
616        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
617    
618    
619    
     LabelType := ReadInteger('Settings','LabelType',1);  
620      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
621      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
622      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 621  begin Line 675  begin
675        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
676      end;      end;
677    
678      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
679    
680      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
681      begin      begin
# Line 745  begin Line 731  begin
731  {$IfDef STED_BK}  {$IfDef STED_BK}
732      SpecialVersionSted := 'BK';      SpecialVersionSted := 'BK';
733  {$EndIf}  {$EndIf}
734    {$IfDef STED_TK}
735        SpecialVersionSted := 'TK';// BK-Trykkompagniet
736    {$EndIf}
737  {$IfDef STED_DBK}  {$IfDef STED_DBK}
738      SpecialVersionSted := 'DBK';      SpecialVersionSted := 'DBK';
739  {$EndIf}  {$EndIf}
# Line 755  begin Line 744  begin
744      SpecialVersionSted := 'NS';      SpecialVersionSted := 'NS';
745  {$EndIf}  {$EndIf}
746    
   
747      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
748      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
749      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 773  begin Line 761  begin
761    
762      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
763      begin      begin
764         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
765         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
766    
767          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
768          Sted := SpecialVersionSted;
769         // her skal vi også disable de knapper BK ikke kan bruge
770          PanelValg2.Enabled := false;
771          PanelValg2.Font.Color := clInactiveCaption;
772          PanelValg3.Enabled := false;
773          PanelValg3.Font.Color := clInactiveCaption;
774          //PanelValg6.Enabled := false;
775          //PanelValg6.Font.Color := clInactiveCaption;
776    
777         // her skal vi også disable de menupunkter FD ikke kan bruge
778          ReturpakkerfraDAO1.Enabled := false;
779          Returpakkerfraboghandler1.Enabled := false;
780    
781          //Returpakkerfrapakkeshop1.Enabled := false;
782      end;      end;
783    
784      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
785      begin      begin
786         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
787         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
788    
789    
790          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
791          Sted := SpecialVersionSted;
792         // her skal vi også disable de knapper BK ikke kan bruge
793          PanelValg2.Enabled := false;
794          PanelValg2.Font.Color := clInactiveCaption;
795          PanelValg3.Enabled := false;
796          PanelValg3.Font.Color := clInactiveCaption;
797          //PanelValg6.Enabled := false;
798          //PanelValg6.Font.Color := clInactiveCaption;
799    
800         // her skal vi også disable de menupunkter FD ikke kan bruge
801          ReturpakkerfraDAO1.Enabled := false;
802          Returpakkerfraboghandler1.Enabled := false;
803    
804          //Returpakkerfrapakkeshop1.Enabled := false;
805    
806      end;      end;
807    
808      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
809      begin      begin
810        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
811        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 791  begin Line 814  begin
814        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
815        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
816        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
817        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
818        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
819    
820       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
821        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
822        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
823        Returpakkerfrapakkeshop1.Enabled := false;  
824          //Returpakkerfrapakkeshop1.Enabled := false;
825    
826        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
827        begin        begin
828           Scanningtype := '1';           Scanningtype := '1';
# Line 820  begin Line 846  begin
846        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
847        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
848        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
849        PanelValg7.Enabled := false;  
       PanelValg7.Font.Color := clInactiveCaption;  
850    
851       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
852        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
# Line 1051  begin Line 1076  begin
1076      end;      end;
1077    
1078    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1079    
1080      CheckPrintQue('Opstart');  
1081        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1082        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1083    
1084    finally    finally
1085      Free;      Free;
# Line 1182  begin Line 1203  begin
1203      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1204      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1205      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1206        or (NumberString = 'DAO PAKKESHOP')
1207        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1208            or (LowerCase(NumberString) = 'for stor daodirekte' )
1209      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1210    
1211      begin      begin
# Line 1192  begin Line 1216  begin
1216      begin      begin
1217        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1218      end;      end;
1219    end;    end;  // Slut ctrl-v
1220    
1221    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1222    begin    begin
1223      if (Length(Trim(Stregkode)) = 0) then  
1224        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1225        Stregkode := Trim(Stregkode);
1226    
1227        if (Length(Stregkode) = 0) then
1228      begin      begin
1229        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1230    
# Line 1246  begin Line 1274  begin
1274         exit;         exit;
1275      end;      end;
1276    
1277        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1278        begin
1279          if chkForstorTilDirekte.Enabled then
1280          begin
1281            chkForstorTilDirekte.Checked := true;
1282          end
1283          else
1284          begin
1285             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1286          end;
1287          Stregkode := '';
1288          StregkodeST.Caption := StregKode;
1289          exit;
1290        end;
1291    
1292    
1293      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1294      begin      begin
1295         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1443  begin Line 1487  begin
1487        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1488      end;      end;
1489    
1490      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1491          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1492          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1493          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1494          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1495          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1496      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1497          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1498    
1499         exit;         exit;
1500      end;      end;
1501    
1502      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1503      begin      begin
1504        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1505        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1484  begin Line 1528  begin
1528                InitPakkeshoplevering();                InitPakkeshoplevering();
1529              end;              end;
1530            end            end
1531        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1532              begin
1533                if Scanningtype <> '6' then
1534                begin
1535                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1536    
1537                 exit;
1538                end;
1539              end
1540    
1541    
1542        else        else
1543            begin            begin
1544            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1545              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1546                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1547    
1548               exit;               exit;
1549            end;            end;
# Line 1600  begin Line 1654  begin
1654    
1655      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1656      begin      begin
1657    
1658         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1659            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1660         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
# Line 1674  begin Line 1729  begin
1729            begin            begin
1730              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1731            end;            end;
1732    
1733           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1734            begin            begin
1735    
# Line 1723  begin Line 1779  begin
1779    
1780    Key := #0;    Key := #0;
1781    
1782    
1783    
1784    
1785    
1786    
1787  end; //End of OnKeyPress  end; //End of OnKeyPress
1788    
1789    
1790    
1791  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1792  const  const
1793    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1766  var Line 1829  var
1829    
1830    
1831  begin  begin
1832      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked or menuIndlevering.Checked then
1833      begin      begin
1834        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1835          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1885  begin Line 1948  begin
1948                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1949              end;              end;
1950            end;            end;
1951  // 20150310: slut  
1952            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1953          end;          end;
1954      end;      end;
# Line 1921  begin Line 1984  begin
1984    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1985    ListBox1.Visible := true;    ListBox1.Visible := true;
1986  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1987  // 20150317: start  
 (*  
   if TestFunktionen = '1' then  
     begin  
       Testforbindelsen1.Visible := true;  
       Testprinter1.Visible := true;  
       Testlyd1.Visible := true;  
       Testlyd2.Visible := true;  
     end  
   else if TestFunktionen = '2' then  
     begin  
       Testforbindelsen1.Enabled := false;  
       Testprinter1.Enabled := false;  
       Testlyd1.Enabled := false;  
       Testlyd2.Enabled := false;  
     end  
   else  
     begin  
       Testforbindelsen1.Visible := false;  
       Testprinter1.Visible := false;  
       Testlyd1.Visible := false;  
       Testlyd2.Visible := false;  
     end;  
   Testprinter1.Visible := false;  
   AlarmLyd := 'Sounds\Alarm.wav';  
   if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   ScannetOkLyd := 'Sounds\Ok.wav';  
   if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   ScannetOkStorLyd := 'Sounds\Ok_stor.wav';  
   if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
 *)  
 // 20150317: slut  
1988    if Budlevering1.Checked then    if Budlevering1.Checked then
1989    begin    begin
1990      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2094  begin Line 2117  begin
2117    begin    begin
2118      exit;      exit;
2119    end;    end;
2120    
2121      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2122      begin
2123        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2124      end;
2125    
2126    try    try
2127      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2128      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2115  begin Line 2144  begin
2144          end;          end;
2145      end;      end;
2146    end;    end;
2147    
2148    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2149    try    try
2150      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2138  begin Line 2168  begin
2168          end;          end;
2169        end;        end;
2170       end       end
2171      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2172      begin      begin
2173    
2174    
# Line 2149  begin Line 2179  begin
2179       begin       begin
2180         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2181         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2182         RuteNummer := PakkeshopLabel.Koreliste;         RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2183           Stregkode := PakkeshopLabel.Stregkode;
2184    
2185         PrintPakkeshopLabel( PakkeshopLabel );         LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2186           chkForstorTilDirekte.Checked := false;
2187    
2188       end;       end;
2189    
# Line 2283  begin Line 2315  begin
2315        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2316      end;      end;
2317    end;    end;
2318      if menuIndlevering.Checked then
2319      begin
2320        List1Msg := Stregkode;
2321      end;
2322    
2323    
2324    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2325    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2326    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
# Line 2423  begin Line 2461  begin
2461               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2462  // 20150304: slut  // 20150304: slut
2463                begin                begin
2464                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2465                end;                end;
2466              end;              end;
2467        01 :  begin;        01 :  begin;
# Line 2431  begin Line 2469  begin
2469                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2470                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2471                begin                begin
2472                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2473                end;                end;
2474              end;              end;
2475        02 :  begin;        02 :  begin;
2476                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2477                begin                begin
2478                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2479                end;                end;
2480              end;              end;
2481        03 :  begin;        03 :  begin;
# Line 2445  begin Line 2483  begin
2483                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2484                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2485               begin               begin
2486                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2487               end;               end;
2488              end;              end;
2489        04 :  begin;        04 :  begin;
2490                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2491                begin                begin
2492                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2493                end;                end;
2494              end;              end;
2495        else        else
# Line 2487  begin Line 2525  begin
2525        end;        end;
2526        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2527        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2528        with Printer do  
2529        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2530          BeginDoc;        
         Canvas.Font.Size := FontSizeRute;  
         if (Length(RuteNummer) > 7) then  
         begin  
           Canvas.Font.Size := FontSizeRuteLille;  
         end;  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
         Canvas.Font.Size := FontSizeKommentar;  
         Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
         if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then  
         begin  
           Kommentar := '';  
         end;  
         if (BoghandlerNavn = 'PAKKE ER SCANNET') then  
         begin  
           BoghandlerNavn := '';  
         end;  
         Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
         Canvas.Font.Size := FontSizeBoghandler;  
         Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
         EndDoc;  
       end;  
2531      end;      end;
2532    end;    end;
2533    
2534  end;  end;
2535    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2536    
2537    
2538  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
# Line 2644  begin Line 2622  begin
2622    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2623    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2624    
2625          // Tjekker urls    try
2626          logTekst := 'Tjekker urls.';      // Tjekker urls
2627          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2628          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2629        SkrivScanningLogFil(logTekst);
2630    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if TUtils.CheckUrl(UrlNormal) then  
           begin  
             logTekst := 'UrlNormal accepteret: ' + UrlNormal;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               TjekUrls := '-';   // markerer at der var fejl  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2631    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if TUtils.CheckUrl(UrlReturDAO) then  
           begin  
             logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2632    
2633          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2634          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2635          begin      begin
2636            if TUtils.CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2637            begin      end;
             logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2638    
2639          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2640          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2641          begin      begin
2642            if TUtils.CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2643            begin      end;
             logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2644    
2645          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2646          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2647          begin      begin
2648            if TUtils.CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2649            begin      end;
             logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2650    
2651          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2652          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2653          begin      begin
2654            if TUtils.CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2655            begin      end;
             logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2656    
2657          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2658          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2659          or (PanelValg4.Enabled = true) then      begin
2660          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2661            if TUtils.CheckUrl(UrlManglendeScanninger) then      end;
           begin  
             logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2662    
2663          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2664          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2665          begin      begin
2666            if TUtils.CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2667            begin      end;
             logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2668    
2669          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2670          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2671          begin      begin
2672            if TUtils.CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2673            begin      end;
             logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2674    
2675         // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger      // Tjekker UrlPakkeshopManglendeScanninger
2676          if PanelValg7.Enabled = true then      if PanelValg5.Enabled = true then
2677          begin      begin
2678            if TUtils.CheckUrl(UrlIndleveringsPakke) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2679            begin      end;
             logTekst := 'UrlIndleveringsPakke accepteret: ' + UrlIndleveringsPakke;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlIndleveringsPakke svarer ikke: ' + UrlIndleveringsPakke;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
2680    
2681            if TUtils.CheckUrl(UrlIndleveringsPakkeManglendeScanninger) then      // Tjekker UrlPakkeshopManglendeReturScanninger
2682            begin      if PanelValg6.Enabled = true then
2683              logTekst := 'UrlIndleveringsPakkeManglendeScanninger accepteret: ' + UrlIndleveringsPakkeManglendeScanninger;      begin
2684              SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2685            end      end;
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlIndleveringsPakkeManglendeScanninger svarer ikke: ' + UrlIndleveringsPakkeManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2686    
2687          // Tjekker UrlEKLoverforsel     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2688          if PanelValg1.Enabled = true then      if PanelValg7.Enabled = true then
2689          begin      begin
2690            if TUtils.CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2691            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2692              logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;      end;
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2693    
2694        // Tjekker UrlEKLoverforsel
2695        if PanelValg1.Enabled = true then
2696        begin
2697          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2698        end;
2699    
         // Tjekker UrlEKLoverforselPakkeshop  
         if PanelValg5.Enabled = true then  
         begin  
           if TUtils.CheckUrl(UrlEKLoverforselPakkeshop) then  
           begin  
             logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2700    
2701        // Tjekker UrlEKLoverforselPakkeshop
2702        if PanelValg5.Enabled = true then
2703        begin
2704          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2705        end;
2706    
         // Tjekker UrlFindPakketype  
         if TUtils.CheckUrl(UrlFindPakketype) then  
         begin  
           logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;  
           SkrivScanningLogFil(logTekst);  
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2707    
2708          // Tjekker UrlSendPrograminfo      // Tjekker UrlFindPakketype
2709          if TUtils.CheckUrl(UrlSendPrograminfo) then      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2710          begin  
2711            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;      // Tjekker UrlSendPrograminfo
2712            SkrivScanningLogFil(logTekst);      TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2713    
2714          if urlFejl > 0 then  
2715          begin  
2716            TjekUrls := '-';   // markerer at der var fejl      logTekst := 'urls er ok';
2717          end      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2718          else      SkrivScanningLogFil(logTekst);
2719          begin  
2720            logTekst := 'urls er ok';    Except
2721            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      TjekUrls := '-';   // markerer at der var fejl
2722            SkrivScanningLogFil(logTekst);  
2723          end;    end;
2724    end;
2725    
2726    procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2727    const
2728      crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
2729    begin
2730      if TUtils.CheckUrl(Url) then
2731    
2732      begin
2733        logTekst := UrlNavn + ' accepteret: ' + Url;
2734        SkrivScanningLogFil(logTekst);
2735      end
2736      else
2737      begin
2738        inc(urlFejl);   // Optæller antal fejl
2739        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2740        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2741        if TjekUrls = '1' then
2742        begin
2743          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2744        end;
2745    
2746        SkrivScanningLogFil(logTekst);
2747    
2748        if TjekUrls = '1' then
2749        begin
2750          ShowMessage(logTekst);
2751          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2752          Application.Terminate;
2753    
2754          raise Exception.Create('UrlFejl');
2755    
2756        end;
2757      end;
2758    
2759  end;  end;
2760    
2761    
2762    
2763  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2764  var  var
2765    SR: TSearchRec;    SR: TSearchRec;
# Line 3155  begin Line 2839  begin
2839    if Farve <> '' then    if Farve <> '' then
2840    begin    begin
2841       MainForm.Color := TUtils.HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
 // 20150312: start  
 (*  
   end  
   else  
   begin  
      ShowMessage('Programmet afbrydes...');  
      UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
      Application.Terminate;  
 *)  
 // 20150312: slut  
2842    end;    end;
2843    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2844    begin    begin
# Line 3308  begin Line 2982  begin
2982    Falsk := False;    Falsk := False;
2983    
2984    
2985    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2986    begin    begin
2987      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2988    end    end
# Line 3322  begin Line 2996  begin
2996      SmsKode := '999999';      SmsKode := '999999';
2997      DBKbane := '999';      DBKbane := '999';
2998      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2999      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      LabelPrint.TestZpl();
3000      CheckPrintQue('Test');      //PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3001        LabelPrint.CheckPrintQue('Test', PrinterNavn);
3002    end;    end;
3003    FocusControl(StregkodeST);    FocusControl(StregkodeST);
3004  end;  end;
# Line 3332  procedure TMainForm.Timer1Timer(Sender: Line 3007  procedure TMainForm.Timer1Timer(Sender:
3007  begin  begin
3008    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
3009    begin    begin
3010      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
3011    end    end
3012    else    else
3013    begin    begin
# Line 3393  begin Line 3068  begin
3068    
3069  end;  end;
3070    
3071    
3072  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3073    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3074  var  var
# Line 3546  begin Line 3222  begin
3222        BtnEKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3223        InitLillePakke();        InitLillePakke();
3224        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3225    
3226          chkForstorTilDirekte.Checked := false;
3227          chkForstorTilDirekte.Enabled := false;
3228    
3229        if BladhusSted = 0 then        if BladhusSted = 0 then
3230        begin        begin
3231          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3577  begin Line 3257  begin
3257        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3258        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3259        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3260    
3261          chkForstorTilDirekte.Checked := false;
3262          chkForstorTilDirekte.Enabled := false;
3263    
3264        InitLillePakke();        InitLillePakke();
3265  end;  end;
3266    
# Line 3603  begin Line 3287  begin
3287        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3288        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3289        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3290    
3291          chkForstorTilDirekte.Checked := false;
3292          chkForstorTilDirekte.Enabled := false;
3293    
3294        InitLillePakke();        InitLillePakke();
3295  end;  end;
3296    
# Line 3634  begin Line 3322  begin
3322        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3323        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3324        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3325    
3326          chkForstorTilDirekte.Checked := false;
3327          chkForstorTilDirekte.Enabled := true;
3328    
3329        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3330        begin        begin
3331            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3669  begin Line 3361  begin
3361    
3362        BtnEKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3363    
3364          chkForstorTilDirekte.Checked := false;
3365          chkForstorTilDirekte.Enabled := true;
3366    
3367        InitLillePakke();        InitLillePakke();
3368        IndlesScanningLogFil();        IndlesScanningLogFil();
3369        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3704  begin Line 3399  begin
3399        BtnDownloadKontrolfil.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3400        BtnOpdaterListen.Enabled := true;        BtnOpdaterListen.Enabled := true;
3401        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3402    
3403          chkForstorTilDirekte.Checked := false;
3404          chkForstorTilDirekte.Enabled := false;
3405    
3406    
3407        InitLillePakke();        InitLillePakke();
3408        IndlesScanningLogFil();        IndlesScanningLogFil();
3409        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3751  begin Line 3451  begin
3451        BtnDownloadKontrolfil.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3452        BtnOpdaterListen.Enabled := true;        BtnOpdaterListen.Enabled := true;
3453        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3454    
3455          chkForstorTilDirekte.Checked := false;
3456          chkForstorTilDirekte.Enabled := false;
3457    
3458    
3459        InitLillePakke();        InitLillePakke();
3460        IndlesScanningLogFil();        IndlesScanningLogFil();
3461        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3876  begin Line 3581  begin
3581      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3582      StedKode := Sted;      StedKode := Sted;
3583      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3584  // 20150330: start  
3585      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3586      begin      begin
3587        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3588      end;      end;
3589  // 20150330: slut  
3590    
3591      try      try
3592      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4483  begin Line 4188  begin
4188  end;  end;
4189    
4190    
 // ToDo: PrintPakkeshopLabel()  
 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
 var  
   XForm, XFormOld: TXForm; //Bruges til rotate X-formation  
   Angle: integer;  
   gMode: integer;  
   Dirigering: string;  
   
 begin  
     with Printer do  
     begin  
       BeginDoc();  
   
   
       Canvas.Font.Size := 16;  
       Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + '     '  + PakkeshopLabel.Overskrift);  
   
   
   
       Canvas.TextOut(25, 90, PakkeshopLabel.Navn );  
       Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );  
       Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );  
   
   
       Canvas.Font.Size := 9;  
       Canvas.TextOut(110, 240, 'Pakkeshop:');  
       Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);  
       Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);  
       Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);  
   
       Canvas.TextOut(350, 240, 'Afsender:');  
       Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);  
       Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);  
       Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr);  
   
       Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;  
       if ( PakkeshopLabel.Koreliste <> '') then  
       begin  
         Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;  
       end;  
   
   
       Canvas.Font.Size := 12;  
       Canvas.TextOut(15, 370, Dirigering);  
   
   
   
   
   
       //Tegn adskillelses linier  
       Canvas.Pen.Width := 2;  
       //Øverste linie  
       Canvas.MoveTo(20,80);  
       Canvas.LineTo(600,80);  
   
       // Midterste linie  
       Canvas.MoveTo( 20, 240);  
       Canvas.LineTo(600, 240);  
   
       //Nederste linie  
       Canvas.MoveTo( 20, 370);  
       Canvas.LineTo(600, 370);  
   
   
       //Tegn skrå streger over afsender  
       Canvas.Pen.Width := 1;  
       Canvas.MoveTo(600, 250);  
       Canvas.LineTo(350, 360);  
       Canvas.MoveTo(600, 360);  
       Canvas.LineTo(350, 250);  
   
   
   
   
       // Resten af rutinen vedr genering og placering af Barcode  
   
       BarCode.BarCodeType := bcCode128;  
       BarCode.Code128Subset := csCodeC;  
       BarCode.Code := PakkeshopLabel.Stregkode;  
       BarCode.Validate(True);  
   
       //Start X-formation  
       //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );  
       GetWorldTransform(Canvas.Handle, XFormOld);  
   
       Angle := 270;  
       XForm.eM11 := Cos(DegToRad(Angle));  
       XForm.eM12 := Sin(DegToRad(Angle));  
       XForm.eM21 := -Sin(DegToRad(Angle));  
       XForm.eM22 := Cos(DegToRad(Angle));  
       XForm.eDx := 0;  
       XForm.eDy := 0;  
   
       gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);  
       SetWorldTransform(Canvas.Handle, XForm);  
   
       // PaintToCanvasSize arbejder i Inches  
       // Første pos argument bliver nu Y og skal være negativ for at rykke den ned  
       //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre  
   
       BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4);  
   
   
       SetWorldTransform(Canvas.Handle, XFormOld);  
       SetGraphicsMode(Canvas.Handle, gMode);  
   
       EndDoc();  
     end;  
   
   
 end;  
   
 function GetPixelsPerInchX(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)  
 end;  
   
 function GetPixelsPerInchY(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)  
 end;  
   
4191    
4192  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4193  var  var
# Line 4616  var Line 4199  var
4199    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4200    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4201    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4202    pakketyper : TStrings;    //pakketyper : TStrings;
4203      pakketyper : TDictionary<String, Integer>;
4204      tmpAntal : Integer;
4205    
4206    
4207    
4208    antlin : Integer;    antlin : Integer;
4209    
4210    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4211    
4212    XmlFelter : TStrings;    //XmlFelter : TStrings;
4213      XmlFelter : TDictionary<String, Integer>;
4214    
4215   begin   begin
4216      XmlFelter := TStringList.Create;  
4217      pakketyper := TStringList.Create;  
4218        XmlFelter := TDictionary<String, Integer>.Create;
4219        pakketyper := TDictionary<String, Integer>.Create;
4220    
4221      linienr := 0;      linienr := 0;
4222      ListBox2.Clear;      ListBox2.Clear;
4223      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4640  var Line 4232  var
4232          StedKode := Sted;          StedKode := Sted;
4233        end;        end;
4234    
4235          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4236    
4237    
4238    
4239      if (Scanningtype = '7') then      if (Scanningtype = '7') then
# Line 4699  var Line 4293  var
4293            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4294              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4295              begin              begin
4296                 antlin := antlin + 1;                 Inc(antlin);
4297                 // 20150306: start                 // 20150306: start
4298                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4299                begin                begin
4300                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4301                   begin                   begin
4302                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4303                   end                   end
4304                   else                   else
4305                   begin                   begin
4306                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4307                   end;                   end;
4308                end;                end;
4309                 // 20150306: slut                 // 20150306: slut
4310              end;              end;
4311            end;            end;
4312            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4313                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4314                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4315                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4316                  end
4317                else                else
4318                  XmlFelter.values[Node.NodeName] := '1';                begin
4319                    XmlFelter.Add(Node.NodeName, 1);
4320                  end;
4321    
4322        end;        end;
4323        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4726  var Line 4325  var
4325        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4326        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4327    
4328    
4329          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4330    
4331        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4332        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4333        begin        begin
# Line 4734  var Line 4336  var
4336        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4337    
4338        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4339    
4340    
4341        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4342            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4343            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4741  var Line 4345  var
4345                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4346                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4347                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4348              end;              end
4349              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4350                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4351                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4352                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4353              end;              end
4354              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4355                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4356                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4357                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4358              end;              end
4359              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4360                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4361                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4362                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4363              end;              end
4364              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4365                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4366                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4367                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4368                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4369                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4370                    pakketyper.TryGetValue(pakketype, tmpAntal);
4371                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4372                  end
4373                else                else
4374                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4375              end;              end
4376              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4377                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4378                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4379                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4380                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4381                  begin                  begin
4382  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4383                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4384                    begin                    begin
4385                      stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet                      stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet
# Line 4785  var Line 4391  var
4391                    linienr := linienr + 1;                    linienr := linienr + 1;
4392                  end;                  end;
4393              end;              end;
4394    
4395    
4396              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4397              begin              begin
4398                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4800  var Line 4408  var
4408              end;              end;
4409            end;            end;
4410        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4411    
4412          // Free up the list object  
4413          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4414    
4415    
4416          for pakketype in pakketyper.Keys do
4417          begin
4418            pakketyper.TryGetValue(pakketype, tmpAntal);
4419            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4420          end;
4421    
4422            // Free up the dictionary object
4423        pakketyper.Free;        pakketyper.Free;
4424    
4425    
4426    
4427  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4428        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4429        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5248  begin Line 4865  begin
4865      KommentarST.Caption := strMessage;      KommentarST.Caption := strMessage;
4866    end;    end;
4867    
4868      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4869    
4870  end;  end;
4871    
4872  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5307  begin Line 4926  begin
4926    result := svar;    result := svar;
4927  end;  end;
4928    
 function TMainForm.GetCurrentPrinterHandle: THandle;  
 var  
   Device, Driver, Port: array[0..255] of Char;  
   hDeviceMode: THandle;  
 begin  
   Printer.GetPrinter(Device, Driver, Port, hDeviceMode);  
   if not OpenPrinter(@Device, Result, nil) then  
     RaiseLastWin32Error;  
 end;  
   
 function TMainForm.SavePChar(p: PChar): PChar;  
 const  
   error: PChar = 'Nil';  
 begin  
   if not Assigned(p) then  
     Result := error  
   else  
     Result := p;  
 end;  
4929    
4930  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4931  begin  begin
# Line 5340  begin Line 4940  begin
4940  end;  end;
4941    
4942    
4943    //Nedarvet fra IParentForm
4944    procedure TMainForm.Msg( msg : string);
4945    begin
4946      ShowMessage(msg);
4947    end;
4948    
4949    //Nedarvet fra IParentForm
4950    procedure TMainForm.LogMessage( msg : string);
4951    begin
4952      ListBox1.Items.Insert(0, msg);
4953      SkrivScanningLogFil(msg);
4954    end;
4955    
4956    
4957    //Nedarvet fra IParentForm
4958    procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
 procedure TMainForm.CheckPrintQue(tjektype : string);  
 type  
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4959  begin  begin
4960    
4961  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1    PrinterstatusStaticText1.Caption := txt;
4962  //            'Test'  skal vise alarmlinie, samt opdatere listbox1    if (alert) then
 //            'Timer' skal kun vise alarmlinie  
   
   if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4963    begin    begin
4964      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4965      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4966      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
   begin  
     printerTxt := 'Der er ikke installeret en printer på denne PC';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
4967    end    end
4968    else    else
4969    begin    begin
4970      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4971      try      PrinterstatusStaticText1.Color := clWhite;
4972        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       pJ := AllocMem(bytesNeeded);  
       if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  
         RaiseLastWin32Error;  
   
       if numJobs = 0 then  
       begin  
         if (tjektype = 'Test') then  
         begin  
           logTekst := printerTxt + ': Ingen dokumenter i kø';  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         PrinterstatusStaticText1.Caption := '';  
         PrinterstatusStaticText1.Color := MainForm.Color;  
       end  
       else   // så er der kø til printeren  
       begin  
         printerTxt := SavePChar(pJ^[0].pPrinterName);  
         if (tjektype = 'Opstart') or (tjektype = 'Test') then  
         begin  
           logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         for i := 0 to Pred(numJobs) do  
         begin  
           printerTxt := SavePChar(pJ^[i].pPrinterName);  
           statusTxt := 'Ukendt';  
           if (IntToStr(pJ^[i].Status) = '0') then  
             statusTxt := 'Venter...';  
           if (IntToStr(pJ^[i].Status) = '4096') then  
             statusTxt := 'Printer...';  
           if (IntToStr(pJ^[i].Status) = '8210') then  
             statusTxt := 'Printerfejl';  
           if (IntToStr(pJ^[i].Status) = '8214') then  
             statusTxt := 'Sletter print...';  
   
           dokumentTxt := SavePChar(pJ^[i].pDocument);  
           if (dokumentTxt = '') then  
             dokumentTxt := 'Uden navn';  
   
           if (tjektype = 'Opstart') or (tjektype = 'Test') then  
           begin  
             logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',  
                                     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);  
             ListBox1.Items.Insert(0,logTekst);  
             SkrivScanningLogFil(logTekst);  
           end;  
   
           if (i = 0) then  
           begin  
             PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  
             PrinterstatusStaticText1.Font.Color := clBlack;  
             PrinterstatusStaticText1.Color := MainForm.Color;  
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
   
         end;  
       end  
       finally  
         ClosePrinter(hPrinter);  
     end;  
4973    end;    end;
4974  end;  end;
4975    
4976    //Nedarvet fra IParentForm
4977    function TMainForm.GetFormObject() : TForm;
4978    begin
4979      Result := self;
4980    end;
4981    
4982  end.  end.
4983    

Legend:
Removed from v.2700  
changed lines
  Added in v.3046

  ViewVC Help
Powered by ViewVC 1.1.20