/[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 3130 by torben, Thu Oct 20 06:56:45 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,    LabelData,
24    StBarC,    Utils,
25    Math, // DegToRad() bruges i PrintPakkeshopLabel    ParentForm,
26    Utils    LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections,
30      TimingHelper
31    
32    ;    ;
33    
34  type  type
35    TMainForm = class(TForm)    TMainForm = class(TForm, IParentForm)
36      StregkodeST: TStaticText;      StregkodeST: TStaticText;
37      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
38      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 26  type Line 40  type
40      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
41      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
42      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
43      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
44      N1: TMenuItem;      N1: TMenuItem;
45      Pakkernormal1: TMenuItem;      menuNatXpress1: TMenuItem;
46      ReturpakkerfraDAO1: TMenuItem;      menuNatxpressReturDAO1: TMenuItem;
47      Returpakkerfraboghandler1: TMenuItem;      menuNatxpressReturfraKunde1: TMenuItem;
48      Hjlp1: TMenuItem;      Hjlp1: TMenuItem;
49      Om1: TMenuItem;      Om1: TMenuItem;
50      Testforbindelsen1: TMenuItem;      Testforbindelsen1: TMenuItem;
# Line 44  type Line 57  type
57      radioStorPakke: TRadioButton;      radioStorPakke: TRadioButton;
58      radioLillePakke: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      menuStorePakker: TMenuItem;
61      Smpakker1: TMenuItem;      menuSmaaPakker: TMenuItem;
62      Panel1: TPanel;      Panel1: TPanel;
63      Testlyd2: TMenuItem;      Testlyd2: TMenuItem;
64      Button1: TButton;      Button1: TButton;
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      menuDaoDirekte1: TMenuItem;
68      BtnDownloadKontrolfil: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
# Line 59  type Line 72  type
72      BtnOpdaterListen: TButton;      BtnOpdaterListen: TButton;
73      BtnUploadLogfil: TButton;      BtnUploadLogfil: TButton;
74      BtnDownloadRuteskiftFil: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      menuPakkeshop1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      btnNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      BtnEKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
# Line 73  type Line 86  type
86      Timer1: TTimer;      Timer1: TTimer;
87      chkScanTjekkode: TCheckBox;      chkScanTjekkode: TCheckBox;
88      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
89      Automatisktjekkodestyring1: TMenuItem;      menuAutomatiskTjekkodeStyring: TMenuItem;
90      Automatiskvalg1: TMenuItem;      menuAutomatiskvalg1: TMenuItem;
91      PanelValgA: TPanel;      PanelValgA: TPanel;
92      PanelValg1: TPanel;      PanelValg1: TPanel;
93      PanelValg2: TPanel;      PanelValg2: TPanel;
# Line 92  type Line 105  type
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109        chkEmballageRepareret: TCheckBox;
110        KommentarST: TLabel;
111        chkUdenforSpecifikation: TCheckBox;
112    
113    
114    
115    function getProddato() : TDate;    function getProddato() : TDate;
116    function getProddag() : String;    function getProddag() : String;
117    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
118    
119    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
120    procedure StartScreen();    procedure StartScreen();
# Line 113  type Line 130  type
130    procedure radioStorPakkeClick(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
131    procedure radioLillePakkeClick(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
132    procedure chkSporgEfterKundeClick(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
133    procedure Pakkernormal1Click(Sender: TObject);    procedure menuNatXpress1Click(Sender: TObject);
134    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
135    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
136    procedure Om1Click(Sender: TObject);    procedure Om1Click(Sender: TObject);
137    procedure Lukprogrammet1Click(Sender: TObject);    procedure Lukprogrammet1Click(Sender: TObject);
138    procedure Sprgefterboghandlernummer1Click(Sender: TObject);    procedure Sprgefterboghandlernummer1Click(Sender: TObject);
139    procedure ReturpakkerfraDAO1Click(Sender: TObject);    procedure menuNatxpressReturDAO1Click(Sender: TObject);
140    procedure Returpakkerfraboghandler1Click(Sender: TObject);    procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
141    procedure Storepakker1Click(Sender: TObject);    procedure menuStorePakkerClick(Sender: TObject);
142    procedure Smpakker1Click(Sender: TObject);    procedure menuSmaaPakkerClick(Sender: TObject);
143    procedure Testlyd1Click(Sender: TObject);    procedure Testlyd1Click(Sender: TObject);
144    procedure Testlyd2Click(Sender: TObject);    procedure Testlyd2Click(Sender: TObject);
145    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
146    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
147    procedure Budlevering1Click(Sender: TObject);    procedure menuDaoDirekte1Click(Sender: TObject);
148    procedure BtnDownloadKontrolfilClick(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
149    procedure BtnOpdaterListenClick(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
150    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
# Line 139  type Line 156  type
156    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
157    procedure BtnUploadLogfilClick(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
158    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
159    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
160    procedure btnNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
161    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure menuPakkeshopRetur1Click(Sender: TObject);
162    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
163    procedure InitReturFraDao();    procedure InitReturFraDao();
164    procedure InitReturFraKunde();    procedure InitReturFraKunde();
# Line 158  type Line 175  type
175    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
176    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
177    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
178    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
179    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
180    procedure Automatiskvalg1Click(Sender: TObject);    procedure menuAutomatiskvalg1Click(Sender: TObject);
181    procedure PanelValgAClick(Sender: TObject);    procedure PanelValgAClick(Sender: TObject);
182    procedure PanelValg1Click(Sender: TObject);    procedure PanelValg1Click(Sender: TObject);
183    procedure PanelValg2Click(Sender: TObject);    procedure PanelValg2Click(Sender: TObject);
# Line 174  type Line 191  type
191    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
192    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
193    procedure TjekkerUrls();    procedure TjekkerUrls();
194      procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
195    
196    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
197    
198    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
199    procedure CheckPrintQue(tjektype : string);  
200      //Nedarvet fra IParentForm
201      procedure Msg( msg : string);
202      procedure LogMessage( msg : string);
203      procedure SetPrinterstatusText( txt: string; alert: boolean);
204      function GetFormObject() : TForm;
205      function GetXMLDocument() : TXMLDocument;
206        procedure chkEmballageRepareretClick(Sender: TObject);
207        procedure chkUdenforSpecifikationClick(Sender: TObject);
208    
209    
210    
211    private    private
# Line 187  type Line 214  type
214      SkrivLog : String;      SkrivLog : String;
215      Sted : String;      Sted : String;
216      StedNavn : String;      StedNavn : String;
217      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel : String;  
218  // 29150330: start      Scanningtype,  Pakketype : String;
219      UrlEKLoverforselPakkeshop : String;  
220  // 20150330: slut  
221      UrlFindPakketype, UrlSendPrograminfo: String;      Url : String;
222      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;  
223      ScanTjekkode : String;      Farve : String;
224      ScanTjekkodeAutomatik : string;  
225      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;      Titel : String;
226      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;  
227      LabelType : integer;  
228      AlarmLyd : String;  
     ScannetOkLyd : String;  
     ScannetOkStorLyd : String;  
   
     ScannetOkTilTjekkodeLyd : String;  
   
     PrinterNavn : String;  
     TjekPrinter : String;  
     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;  
229      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
230      BladhusSted : Integer;      BladhusSted : Integer;
231      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 240  type Line 237  type
237      logTekst : string;      logTekst : string;
238      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
239      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
     TjekUrls : String;  
240    
241      Barcode : TStBarcode;      Config : TConfiguration;
242    
243    
244        LabelPrint: TLabelPrint;
245    
246      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 = '');
247      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
248      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 = '');
249      procedure CheckCode();      procedure CheckCode();
250      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanningerAntal();
251        procedure IndlesManglendeScanningerListe();
252      procedure IndlesRuteskiftFil(var filnavn : string);      procedure IndlesRuteskiftFil(var filnavn : string);
253      procedure IndlesKontrolFil(var filnavn : string);      procedure IndlesKontrolFil(var filnavn : string);
254      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
# Line 257  type Line 256  type
256      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
257      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
258    
259    
260    public    public
261      { Public declarations }      { Public declarations }
262    end;    end;
263    
       function GetPixelsPerInchX(): Integer;  
     function GetPixelsPerInchY(): Integer;  
264    
265  var  var
266    MainForm: TMainForm;    MainForm: TMainForm;
# Line 278  implementation Line 276  implementation
276  {$R *.dfm}  {$R *.dfm}
277    
278    
279    //FormCreate kaldes før InitForm
280    
281  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
282  begin  begin
283    
284  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
285        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
286    
287    
288    
289    
290      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
 // 20150309: slut  
291    
     Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component  
292    
293      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
294      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 357  begin Line 360  begin
360        else if (Sted = 'BR') then        else if (Sted = 'BR') then
361          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
362        else if (Sted = 'BK') then        else if (Sted = 'BK') then
363          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
364          else if (Sted = 'TK') then
365            begin StedNavn := 'BK/Trykkompagniet: '; end
366        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
367          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
368        else if (Sted = '1') then        else if (Sted = '1') then
369          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
370        else if (Sted = '2') then        else if (Sted = '2') then
# Line 393  begin Line 398  begin
398        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
399      end;      end;
400    
401      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
402        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
403      else      else
404        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 404  begin Line 409  begin
409    
410      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
411      begin      begin
412        if (ScanTjekkode = '1') then        if (Config.ScanTjekkode = '1') then
413        begin        begin
414          chkScanTjekkode.Checked := true;          chkScanTjekkode.Checked := true;
415          chkScanTjekkode.Enabled := true;          chkScanTjekkode.Enabled := true;
# Line 418  begin Line 423  begin
423        end;        end;
424      end;      end;
425    
426      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
427      begin      begin
428        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
429        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 454  begin Line 459  begin
459        end;        end;
460      end;      end;
461    
462    
463  end;  end;
464    
465  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 475  begin Line 481  begin
481    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
482  end;  end;
483    
484  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
485  begin  begin
486    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
487    begin    begin
488       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
489       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 490  begin Line 496  begin
496    
497  end;  end;
498    
499  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
500  begin  begin
501  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
502  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
503       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
504       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
505       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
506  end;  end;
507    
508    
509    
510    //InitForm kaldes før FormCreate
511  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
512  const  const
513    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
514  var  var
   printerInd : integer;  
515    gemScanningtype : String;    gemScanningtype : String;
516    
517  begin  begin
518    
519    
520    // Initierer nogle variabler    // Initierer nogle variabler
521    BladhusSted := 00;    BladhusSted := 00;
522    Application.ShowHint := True;    Application.ShowHint := True;
# Line 532  begin Line 542  begin
542    
543  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
544    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
545    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 920;
546    
547      Config := TConfiguration.Create();
548      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
549      Config.Sted := Sted;
550    
551    // Læser parametre fra ini filen    // Læser parametre fra ini filen
552    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
553    try    try
554    
555    
556      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
557      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
558      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
559      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
560      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      Scanningtype := 'A'; //hardcoded
561      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      Pakketype := '0';
562      UrlReturDAO := ReadString('Settings','UrlReturDAO','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');  
     UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
     UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');  
     UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');  
   
     UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');  
   
     UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');  
     UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');  
     UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');  
     UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');  
   
   
     UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');  
     UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');  
563    
564    
565    
     LabelType := ReadInteger('Settings','LabelType',1);  
     FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');  
     TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');  
     FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');  
     TitelReturDAO := ReadString('Settings','TitelReturDAO','Returforsendelse fra DAO');  
     FarveReturBoghandler := ReadString('Settings','FarveReturBoghandler','F2F5A9');  
     TitelReturBoghandler := ReadString('Settings','TitelReturBoghandler','Returforsendelse fra boghandler');  
     FarveBudlevering := ReadString('Settings','FarveBudlevering','2E9AFE');  
     TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');  
     FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');  
     TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');  
   
     FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');  
     TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');  
   
     FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');  
     TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');  
   
   
     SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');  
     ScanTjekkode := ReadString('Settings','ScanTjekkode','0');  
     ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');  
     Scanningtype := ReadString('Settings','Scanningtype','A');  
     Pakketype := ReadString('Settings','Pakketype','0');  
     TestFunktionen := ReadString('Settings','TestFunktion','0');  
     AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');  
     ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');  
     ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');  
   
     ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');  
   
     PrinterNavn := ReadString('Settings','PrinterNavn','');  
     TjekPrinter := ReadString('Settings','TjekPrinter','1');  
     TjekUrls := ReadString('Settings','TjekUrls','2');  
566    
567      if (SkrivLog = '1') then      if (SkrivLog = '1') then
568      begin      begin
# Line 615  begin Line 582  begin
582    
583      if Scanningtype = 'A' then      if Scanningtype = 'A' then
584      begin      begin
585        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
586        Scanningtype := '1';        Scanningtype := '1';
587        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
588        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
589      end;      end;
590    
     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;  
591    
592      if SporgEfterBoghandler = '1' then  
593        if Config.SporgEfterBoghandler = '1' then
594      begin      begin
595        chkSporgEfterKunde.Checked := true;        chkSporgEfterKunde.Checked := true;
596        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
# Line 702  begin Line 601  begin
601        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
602      end;      end;
603    
604      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
605      begin      begin
606        chkScanTjekkode.Checked := true;        chkScanTjekkode.Checked := true;
607        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
# Line 713  begin Line 612  begin
612        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
613      end;      end;
614    
615      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
616      begin      begin
617        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
618        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
619        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
620      end;      end;
# Line 745  begin Line 644  begin
644  {$IfDef STED_BK}  {$IfDef STED_BK}
645      SpecialVersionSted := 'BK';      SpecialVersionSted := 'BK';
646  {$EndIf}  {$EndIf}
647    {$IfDef STED_TK}
648        SpecialVersionSted := 'TK';// BK-Trykkompagniet
649    {$EndIf}
650  {$IfDef STED_DBK}  {$IfDef STED_DBK}
651      SpecialVersionSted := 'DBK';      SpecialVersionSted := 'DBK';
652  {$EndIf}  {$EndIf}
# Line 755  begin Line 657  begin
657      SpecialVersionSted := 'NS';      SpecialVersionSted := 'NS';
658  {$EndIf}  {$EndIf}
659    
   
660      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
661      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
662      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 773  begin Line 674  begin
674    
675      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
676      begin      begin
677         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
678         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
679    
680          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
681          Sted := SpecialVersionSted;
682         // her skal vi også disable de knapper BK ikke kan bruge
683          PanelValg2.Enabled := false;
684          PanelValg2.Font.Color := clInactiveCaption;
685          PanelValg3.Enabled := false;
686          PanelValg3.Font.Color := clInactiveCaption;
687          //PanelValg6.Enabled := false;
688          //PanelValg6.Font.Color := clInactiveCaption;
689    
690         // her skal vi også disable de menupunkter FD ikke kan bruge
691          menuNatxpressReturDAO1.Enabled := false;
692          menuNatxpressReturfraKunde1.Enabled := false;
693    
694          //Returpakkerfrapakkeshop1.Enabled := false;
695      end;      end;
696    
697      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
698      begin      begin
699         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
700         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
701      end;  
702    
     if SpecialVersionSted = 'BK' then  
     begin  
703        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
704        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
705       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 791  begin Line 707  begin
707        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
708        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
709        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
710        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
711        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
712       // her skal vi også disable de menupunkter BK ikke kan bruge  
713        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
714        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
715        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
716        if SpecialVersionScanningtype = 'A' then  
717        begin        //Returpakkerfrapakkeshop1.Enabled := false;
718           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
719      end;      end;
720    
721      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
722      begin      begin
723        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
724        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
725        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
726        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
727        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
728        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
729        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
730        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
731        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
       PanelValg6.Enabled := false;  
       PanelValg6.Font.Color := clInactiveCaption;  
       PanelValg7.Enabled := false;  
       PanelValg7.Font.Color := clInactiveCaption;  
732    
733       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
734        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
735        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
736    
737        Pakkeshoplevering1.Enabled := false;        //Returpakkerfrapakkeshop1.Enabled := false;
       Returpakkerfrapakkeshop1.Enabled := false;  
738    
739        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
740        begin        begin
# Line 840  begin Line 746  begin
746        end;        end;
747      end;      end;
748    
749        if SpecialVersionSted = 'DBK' then
750        begin
751          Sted := SpecialVersionSted;
752        end;
753    
754      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
755      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
756      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 863  begin Line 774  begin
774        PanelValg7.Font.Color := clInactiveCaption;        PanelValg7.Font.Color := clInactiveCaption;
775       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
776    
777        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
778    
779        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
780        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
781        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
782        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
783        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
784        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
785        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
786        begin        begin
787          Scanningtype := '4';          Scanningtype := '4';
788          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
789          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
790          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
791        end        end
# Line 883  begin Line 794  begin
794          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
795          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
796          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
797          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
798          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
799          if Scanningtype = '1' then          if Scanningtype = '1' then
800          begin          begin
801            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
802            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
803            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
804          end;          end;
805          if Scanningtype = '2' then          if Scanningtype = '2' then
806          begin          begin
807            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
808            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
809            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
810          end;          end;
811          if Scanningtype = '3' then          if Scanningtype = '3' then
812          begin          begin
813            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
814            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
815            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
816          end;          end;
817          if Scanningtype = '4' then          if Scanningtype = '4' then
818          begin          begin
819            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
820            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
821            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
822          end;          end;
823          if Scanningtype = '5' then          if Scanningtype = '5' then
824          begin          begin
825            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
826            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
827            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
828          end;          end;
829          if Scanningtype = '6' then          if Scanningtype = '6' then
830          begin          begin
831            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
832            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
833            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
834          end;          end;
# Line 946  begin Line 857  begin
857          Application.Terminate;          Application.Terminate;
858      end;      end;
859    
860      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
861      begin      begin
862          TjekkerUrls();          TjekkerUrls();
863          if TjekUrls = '-' then  // så var der fejl i url - så vi stopper her          if Config.TjekUrls = '-' then  // så var der fejl i url - så vi stopper her
864          begin          begin
865             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
866             MainForm.Color := clRed;             MainForm.Color := clRed;
867             RutenummerST.Caption := '';             RutenummerST.Caption := '';
868             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
# Line 998  begin Line 909  begin
909    
910      if Pakketype = '1' then      if Pakketype = '1' then
911      begin      begin
912        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
913        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
914      end      end
915      else      else
916      begin      begin
917        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
918        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
919      end;      end;
920    
921      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
922      begin      begin
923        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
924        Testprinter1.Visible := true;        Testprinter1.Visible := true;
925        Testlyd1.Visible := true;        Testlyd1.Visible := true;
926        Testlyd2.Visible := true;        Testlyd2.Visible := true;
927      end      end
928      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
929      begin      begin
930        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
931        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1029  begin Line 940  begin
940        Testlyd2.Visible := false;        Testlyd2.Visible := false;
941      end;      end;
942    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
943    
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
944    
945    
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
946    
947        LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
948      if (PrinterNavn <> '') then      LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
   
     CheckPrintQue('Opstart');  
949    
950    finally    finally
951      Free;      Free;
# Line 1067  begin Line 954  begin
954      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
955      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
956      begin      begin
957        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
958        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
959        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
960        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
961        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
962        Testprinter1.Visible := false;        Testprinter1.Visible := false;
963        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
964        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
965      end;      end;
966    
967      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1086  begin Line 973  begin
973      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
974      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
975    
976      if PanelValg6.Enabled then      IndlesManglendeScanningerAntal();
     begin  
        Scanningtype := '6';  
        IndlesManglendeScanninger();  
     end;  
   
     if PanelValg5.Enabled then  
     begin  
        Scanningtype := '5';  
        IndlesManglendeScanninger();  
     end;  
   
     if PanelValg4.Enabled then  
     begin  
        Scanningtype := '4';  
        IndlesManglendeScanninger();  
     end;  
   
     if PanelValg3.Enabled then  
     begin  
        Scanningtype := '3';  
        IndlesManglendeScanninger();  
     end;  
   
     if PanelValg2.Enabled then  
     begin  
        Scanningtype := '2';  
        IndlesManglendeScanninger();  
     end;  
977    
978      if PanelValg1.Enabled then  //    if PanelValg6.Enabled then
979      begin  //    begin
980         Scanningtype := '1';  //       Scanningtype := '6';
981         IndlesManglendeScanninger();  //       IndlesManglendeScanningerAntal();
982      end;  //    end;
983    //
984    //    if PanelValg5.Enabled then
985    //    begin
986    //       Scanningtype := '5';
987    //       IndlesManglendeScanningerAntal();
988    //    end;
989    //
990    //    if PanelValg4.Enabled then
991    //    begin
992    //       Scanningtype := '4';
993    //       IndlesManglendeScanningerAntal();
994    //    end;
995    //
996    //    if PanelValg3.Enabled then
997    //    begin
998    //       Scanningtype := '3';
999    //       IndlesManglendeScanningerAntal();
1000    //    end;
1001    //
1002    //    if PanelValg2.Enabled then
1003    //    begin
1004    //       Scanningtype := '2';
1005    //       IndlesManglendeScanningerAntal();
1006    //    end;
1007    //
1008    //    if PanelValg1.Enabled then
1009    //    begin
1010    //       Scanningtype := '1';
1011    //       IndlesManglendeScanningerAntal();
1012    //    end;
1013    
1014      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1015    
# Line 1182  begin Line 1071  begin
1071      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1072      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1073      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1074        or (NumberString = 'DAO PAKKESHOP')
1075        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1076            or (LowerCase(NumberString) = 'for stor daodirekte' )
1077      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1078    
1079      begin      begin
# Line 1192  begin Line 1084  begin
1084      begin      begin
1085        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1086      end;      end;
1087    end;    end;  // Slut ctrl-v
1088    
1089    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1090    begin    begin
1091      if (Length(Trim(Stregkode)) = 0) then  
1092        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1093        Stregkode := Trim(Stregkode);
1094    
1095        if (Length(Stregkode) = 0) then
1096      begin      begin
1097        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1098    
# Line 1246  begin Line 1142  begin
1142         exit;         exit;
1143      end;      end;
1144    
1145        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1146        begin
1147          if chkForstorTilDirekte.Enabled then
1148          begin
1149            chkForstorTilDirekte.Checked := true;
1150          end
1151          else
1152          begin
1153             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1154          end;
1155          Stregkode := '';
1156          StregkodeST.Caption := StregKode;
1157          exit;
1158        end;
1159    
1160    
1161      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1162      begin      begin
1163         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1400  begin Line 1312  begin
1312      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1313      begin      begin
1314        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1315        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1316        try        try
1317          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1318          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1443  begin Line 1355  begin
1355        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1356      end;      end;
1357    
1358      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1359          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1360          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1361          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1362          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1363          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1364      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1365          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1366    
1367         exit;         exit;
1368      end;      end;
1369    
1370      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1371      begin      begin
1372        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1373        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1484  begin Line 1396  begin
1396                InitPakkeshoplevering();                InitPakkeshoplevering();
1397              end;              end;
1398            end            end
1399        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1400              begin
1401                if Scanningtype <> '6' then
1402                begin
1403                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1404    
1405                 exit;
1406                end;
1407              end
1408    
1409    
1410        else        else
1411            begin            begin
1412            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1413              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1414                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1415    
1416               exit;               exit;
1417            end;            end;
1418        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1419      end      end
1420      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1421      begin      begin
1422        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1423    
1424        exit;        exit;
1425      end;      end;
1426    
1427      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1428      begin      begin
1429        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1430        begin        begin
# Line 1513  begin Line 1435  begin
1435        end;        end;
1436      end;      end;
1437    
1438        // EmballageRepareret skal bare sætte reklamationkoden,
1439        // og så ellers fortsætte med scanning som normalt
1440        if (chkEmballageRepareret.Checked = True) then
1441        begin
1442          URLStr := Format(Config.UrlEmballageRepareret,[Sted,Stregkode]);
1443          WebSvar := IdHTTP1.Get(URLStr);
1444    
1445          chkEmballageRepareret.Checked := False;
1446        end;
1447    
1448        if (chkUdenforSpecifikation.Checked = True) then
1449        begin
1450          URLStr := Format(Config.URLUdenforSpecifikation,[Sted,Stregkode]);
1451          //InputBox( '1', '1', URLStr);
1452    
1453          WebSvar := IdHTTP1.Get(URLStr);
1454          //InputBox( '2', '2', WebSvar );
1455    
1456          chkUdenforSpecifikation.Checked := False;
1457          LabelPrint.PrintLabel(Stregkode);
1458    
1459          StregkodeST.Caption := '';
1460          Stregkode := '';
1461    
1462          RuteNummerST.Caption := '';
1463          BoghandlerNavnST.Caption := '';
1464          KommentarST.Caption := 'Retur til leverandør';
1465    
1466    
1467    
1468    
1469          exit;   //leave procedure
1470        end;
1471    
1472    
1473    
1474    
1475      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1476      begin      begin
1477        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1478        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1528  begin Line 1485  begin
1485        end;        end;
1486      end;      end;
1487    
1488      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1489        begin        begin
1490          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1491             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
# Line 1538  begin Line 1495  begin
1495             Stregkode := '';             Stregkode := '';
1496             InitScreen();             InitScreen();
1497        end        end
1498      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1499        begin        begin
1500          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1501             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1550  begin Line 1507  begin
1507             Stregkode := '';             Stregkode := '';
1508             InitScreen();             InitScreen();
1509        end        end
1510      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1511        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1512         begin         begin
1513            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1559  begin Line 1516  begin
1516              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1517              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1518    
1519              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1520    
1521             end             end
1522            else            else
# Line 1576  begin Line 1533  begin
1533             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1534             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1535             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1536             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1537                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1538             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1539                MainForm.Color := TUtils.HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1540             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1541           end           end
1542          else          else
1543           begin           begin
1544                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1545                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1546                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1547                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1548                                    
1549                StregKode := '';                StregKode := '';
# Line 1598  begin Line 1555  begin
1555          InitScreen();          InitScreen();
1556       end;       end;
1557    
1558      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 menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1559      begin      begin
1560         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1561           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1562            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1563         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1564            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1565         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1566         try         try
# Line 1616  begin Line 1574  begin
1574    
1575              exit;              exit;
1576            end;            end;
1577            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked) then
1578            begin            begin
1579              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1580              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1632  begin Line 1590  begin
1590              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1591              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1592              begin              begin
1593                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1594                btnNulstil.Visible := true;                btnNulstil.Visible := true;
1595                MainForm.Color := clRed;                MainForm.Color := clRed;
1596              end;              end;
1597           end;           end;
1598            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( menuNatXpress1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1599            begin            begin
1600              MainForm.Color := TUtils.HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1601              if Storepakker1.Checked then              if menuStorePakker.Checked then
1602              begin              begin
1603                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1604              end              end
1605              else              else
1606              begin              begin
1607                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1608              end;              end;
1609              btnNulstil.Visible := false;              btnNulstil.Visible := false;
1610            end            end
1611            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1612            begin            begin
1613              MainForm.Color := TUtils.HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1614              if Storepakker1.Checked then              if menuStorePakker.Checked then
1615              begin              begin
1616                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1617              end              end
1618              else              else
1619              begin              begin
1620                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1621              end;              end;
1622              btnNulstil.Visible := false;              btnNulstil.Visible := false;
1623            end            end
# Line 1674  begin Line 1632  begin
1632            begin            begin
1633              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1634            end;            end;
1635    
1636           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1637            begin            begin
1638    
1639              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1640              begin              begin
1641                if Storepakker1.Checked then                if menuStorePakker.Checked then
1642                begin                begin
1643                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1644                end                end
1645                else                else
1646                begin                begin
1647                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1648                end;                end;
1649                InitLillePakke();                InitLillePakke();
1650              end;              end;
# Line 1723  begin Line 1682  begin
1682    
1683    Key := #0;    Key := #0;
1684    
1685    
1686    
1687    
1688    
1689    
1690  end; //End of OnKeyPress  end; //End of OnKeyPress
1691    
1692    
1693    
1694  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1695  const  const
1696    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1732  var Line 1698  var
1698    WebSvar : String;    WebSvar : String;
1699    URLStr : String;    URLStr : String;
1700  begin  begin
1701    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1702    begin    begin
1703      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1704      try      try
1705        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1706        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1747  begin Line 1713  begin
1713        ShowMessage(logTekst);        ShowMessage(logTekst);
1714        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1715        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1716        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1717        Application.Terminate;        Application.Terminate;
1718      end;      end;
1719      end;      end;
# Line 1766  var Line 1732  var
1732    
1733    
1734  begin  begin
1735      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.Checked or menuIndlevering.Checked then
1736      begin      begin
1737        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1738          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1739          begin          begin
1740              wrkAntalSenere := 0;//initial Value
1741    
1742            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1743            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
# Line 1885  begin Line 1852  begin
1852                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1853              end;              end;
1854            end;            end;
1855  // 20150310: slut  
1856            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1857          end;          end;
1858      end;      end;
# Line 1915  procedure TMainForm.InitBladhus(); Line 1882  procedure TMainForm.InitBladhus();
1882    
1883  begin  begin
1884    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1885    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1886    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1887    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1888    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1889    ListBox1.Visible := true;    ListBox1.Visible := true;
1890  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1891  // 20150317: start  
1892  (*    if menuDaoDirekte1.Checked then
   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  
   if Budlevering1.Checked then  
1893    begin    begin
1894      IndlesScanningLogFil();      IndlesScanningLogFil();
1895    end;    end;
# Line 1981  begin Line 1908  begin
1908              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
1909              BladhusKontrolfil_lokal := 'RuteKontrol.txt';              BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1910              DownloadBladhusKontrolfil();              DownloadBladhusKontrolfil();
1911              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1912            end;            end;
1913      02 :      02 :
1914            begin;    // BK            begin;    // BK
1915              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1916              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1917              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1918              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1919              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1920              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1921              BtnOpdaterListen.Enabled := true;              BtnOpdaterListen.Enabled := true;
1922              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1923              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1924              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1925            end;            end;
1926      03 :      03 :
1927            begin;          // FD            begin;          // FD
# Line 2020  begin Line 1947  begin
1947              BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';              BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
1948              BladhusKontrolfil_lokal := 'RuteKontrol.txt';              BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1949              DownloadBladhusKontrolfil();              DownloadBladhusKontrolfil();
1950              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1951            end;            end;
1952      04 :  begin;           // DBK      04 :  begin;           // DBK
1953              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1954              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1955              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1956              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1957              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1958              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
# Line 2046  var Line 1973  var
1973    pakkestorrelse : String;    pakkestorrelse : String;
1974    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1975    
1976    PakkeshopLabel: TPakkeshopLabel;    PakkeshopLabel: TLabelData;
1977  begin  begin
1978    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1979    begin    begin
# Line 2058  begin Line 1985  begin
1985    end;    end;
1986    
1987    
1988    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
1989    begin    begin
1990       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1991       begin       begin
1992         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1993       end;       end;
1994       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1995    end    end
1996    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
1997    begin    begin
1998       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1999    end    end
2000    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2001    begin    begin
2002       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2003    end    end
2004    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2005    begin    begin
2006       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2007    end    end
2008    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2009    begin    begin
2010       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2011    end    end
2012    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2013    begin    begin
2014       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
2015    end    end
2016    else if menuIndlevering.Checked then    else if menuIndlevering.Checked then
2017    begin    begin
2018      URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);      URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
2019    end    end
2020    else    else
2021    begin    begin
2022      exit;      exit;
2023    end;    end;
2024    
2025      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2026      begin
2027        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2028      end;
2029    
2030    try    try
2031      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2032      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2115  begin Line 2048  begin
2048          end;          end;
2049      end;      end;
2050    end;    end;
2051    
2052    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2053    try    try
2054      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2055       begin       begin
2056        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2057        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2125  begin Line 2059  begin
2059        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2060        PrintNyLabel := False;        PrintNyLabel := False;
2061    
2062        if Pakkeshoplevering1.Checked then        try
2063            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2064          except on e:exception do
2065              PrintNyLabelInteger := 0;
2066          end;
2067          if (PrintNyLabelInteger = 1) then
2068        begin        begin
2069          try          PrintNyLabel := True;
           PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);  
         except on e:exception do  
             PrintNyLabelInteger := 0;  
         end;  
         if (PrintNyLabelInteger = 1) then  
         begin  
           PrintNyLabel := True;  
         end;  
2070        end;        end;
2071    
2072       end       end
2073      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2074      begin      begin
2075    
2076    
# Line 2148  begin Line 2080  begin
2080       if (Kommentar = 'Ok') then       if (Kommentar = 'Ok') then
2081       begin       begin
2082         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2083         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2084         RuteNummer := PakkeshopLabel.Koreliste;         RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2085           Stregkode := PakkeshopLabel.Stregkode;
2086    
2087           LabelPrint.PrintLabel(PakkeshopLabel.Stregkode);
2088    
2089         PrintPakkeshopLabel( PakkeshopLabel );  //       LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2090    //       chkForstorTilDirekte.Checked := false;
2091    
2092       end;       end;
2093    
# Line 2164  begin Line 2100  begin
2100        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2101        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2102        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2103        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2104          begin          begin
2105          try          try
2106            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2195  begin Line 2131  begin
2131      begin      begin
2132        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2133        begin        begin
2134            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2135            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2136        end;        end;
2137      end      end
2138      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2139      begin      begin
2140         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2141         begin        //PrintNyLabel := False;  //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
           // Det er ok at DBK scanner pakker til E     (Schenker)  
        end  
        else  
        begin  
           Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';  
           PrintNyLabel := False;  
        end;  
2142      end;      end;
2143    except on e:exception do    except on e:exception do
2144      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2228  begin Line 2157  begin
2157    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2158    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2159    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2160    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2161      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2162    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2163    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2240  begin Line 2169  begin
2169      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2170    end;    end;
2171    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2172    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2173    begin    begin
2174      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2175    end;    end;
2176    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2177    begin    begin
2178      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2179    end;    end;
2180    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2181       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2182    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2183    begin    begin
2184      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2185    end;    end;
2186    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2187    begin    begin
2188       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2189        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2266  begin Line 2195  begin
2195          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2196        end;        end;
2197    end;    end;
2198    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2199    begin    begin
2200      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2201    end;    end;
2202    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2203    begin    begin
2204      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2205      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2283  begin Line 2212  begin
2212        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2213      end;      end;
2214    end;    end;
2215      if menuIndlevering.Checked then
2216      begin
2217        List1Msg := Stregkode;
2218      end;
2219    
2220    
2221    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2222    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2223    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
# Line 2304  pakkeForkertSted : Integer; Line 2239  pakkeForkertSted : Integer;
2239    kontrolKoreliste : string;    kontrolKoreliste : string;
2240    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2241  begin  begin
2242    if Budlevering1.Checked then  //  if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2243    //  begin
2244    //    LabelPrint.PrintLabel( Stregkode );
2245    //  end;
2246    //
2247    //  exit;
2248    
2249      if menuDaoDirekte1.Checked then
2250       RuteNummerST.Color := TUtils.HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2251    
2252    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 2342  begin Line 2284  begin
2284        end;        end;
2285    end    end
2286    else    else
2287    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2288    begin    begin
2289       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2290       begin       begin
2291          PrintNyLabel := false;          PrintNyLabel := false;
2292    
2293          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
2294          MainForm.Color := clRed;          MainForm.Color := clRed;
2295          btnNulstil.Visible := true;          btnNulstil.Visible := true;
2296    
# Line 2368  begin Line 2310  begin
2310            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2311            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2312    
2313            if (PrinterNavn = 'Ingen') then  //          if (Config.PrinterNavn = 'Ingen') then
2314            begin  //          begin
2315               PrintNyLabel := false;  //             PrintNyLabel := false;
2316            end;  //          end;
2317    
2318            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2319            begin            begin
2320              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2321              MainForm.Color := clRed;              MainForm.Color := clRed;
2322              btnNulstil.Visible := true;              btnNulstil.Visible := true;
2323            end;            end;
# Line 2401  begin Line 2343  begin
2343    
2344            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2345            begin            begin
2346              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2347              MainForm.Color := clRed;              MainForm.Color := clRed;
2348              btnNulstil.Visible := true;              btnNulstil.Visible := true;
2349            end;            end;
# Line 2411  begin Line 2353  begin
2353    
2354    end;    end;
2355    
2356    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2357    begin    begin
2358      case BladhusSted of      case BladhusSted of
2359        00 :  begin;        00 :  begin;
# Line 2423  begin Line 2365  begin
2365               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2366  // 20150304: slut  // 20150304: slut
2367                begin                begin
2368                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2369                    LabelPrint.PrintLabel( Stregkode );
2370                end;                end;
2371              end;              end;
2372        01 :  begin;        01 :  begin;
# Line 2431  begin Line 2374  begin
2374                    // 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
2375                    // 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')
2376                begin                begin
2377                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2378                    LabelPrint.PrintLabel( Stregkode );
2379                end;                end;
2380              end;              end;
2381        02 :  begin;        02 :  begin;
2382                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
2383                begin                begin
2384                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2385                    LabelPrint.PrintLabel( Stregkode );
2386                end;                end;
2387              end;              end;
2388        03 :  begin;        03 :  begin;
# Line 2445  begin Line 2390  begin
2390                    // 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
2391                    // 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')
2392               begin               begin
2393                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2394                    LabelPrint.PrintLabel( Stregkode );
2395               end;               end;
2396              end;              end;
2397        04 :  begin;        04 :  begin;
2398                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
2399                begin                begin
2400                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2401                    LabelPrint.PrintLabel( Stregkode );
2402                end;                end;
2403              end;              end;
       else  
        ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));  
2404      end;      end;
2405    end;    end;
2406    
2407  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2408    if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then    if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2409    begin    begin
2410      exit;      exit;
2411    end;    end;
2412    
2413    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then    if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2414    begin    begin
2415    end    end
2416    else    else
2417    begin    begin
2418      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then      if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2419      begin      begin
2420        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2421        if (chkAltidPrintLabel.Checked) then        if (chkAltidPrintLabel.Checked) then
# Line 2487  begin Line 2432  begin
2432        end;        end;
2433        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2434        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2435        with Printer do  
2436        begin        //LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2437          BeginDoc;        LabelPrint.PrintLabel( Stregkode );
2438          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;  
2439      end;      end;
2440    end;    end;
2441    
2442  end;    // tilføjet 20161020
2443      if (menuPakkeshop1.Checked OR menuPakkeshopRetur1.Checked) then
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
2444      begin      begin
2445        BeginDoc;      if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2446        Canvas.Font.Size := FontSizeRuteLille;      begin
2447        if (kontrolKoreliste <> '') then        LabelPrint.PrintLabel( Stregkode );
       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;  
2448      end;      end;
2449      end;
2450    
2451  end;  end;
2452    
2453    
2454    
2455  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2456  begin  begin
2457      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2458      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2459  end;  end;
2460    
2461  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2462  begin  begin
2463      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2464      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2465  end;  end;
2466    
# Line 2583  begin Line 2478  begin
2478  end;  end;
2479    
2480    
2481    procedure TMainForm.chkUdenforSpecifikationClick(Sender: TObject);
2482    begin
2483      if (chkUdenforSpecifikation.Checked = true) then
2484      begin
2485        chkEmballageRepareret.Checked := false;
2486      end;
2487    end;
2488    
2489    procedure TMainForm.chkEmballageRepareretClick(Sender: TObject);
2490    begin
2491      if (chkEmballageRepareret.Checked = true) then
2492      begin
2493        chkUdenforSpecifikation.Checked := false;
2494      end;
2495    end;
2496    
2497  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2498  begin  begin
2499    if chkAltidPrintLabel.Checked then    if chkAltidPrintLabel.Checked then
# Line 2596  begin Line 2507  begin
2507    
2508  end;  end;
2509    
2510    
2511    
2512  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2513  begin  begin
2514    if chkScanTjekkode.Checked then    if chkScanTjekkode.Checked then
# Line 2608  begin Line 2521  begin
2521    end;    end;
2522  end;  end;
2523    
2524  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2525  begin  begin
2526        Scanningtype := '5';        Scanningtype := '5';
2527        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2617  end; Line 2530  end;
2530    
2531  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2532  begin  begin
2533      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2534      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2535      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2536    
# Line 2629  begin Line 2542  begin
2542        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2543        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2544        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2545        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2546      end;      end;
2547  // 20150317: slut  // 20150317: slut
2548  end;  end;
# Line 2644  begin Line 2557  begin
2557    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2558    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...');
2559    
2560          // Tjekker urls    try
2561          logTekst := 'Tjekker urls.';      // Tjekker urls
2562          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2563          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2564        SkrivScanningLogFil(logTekst);
2565    
         // 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;  
2566    
         // 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;  
2567    
2568          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2569          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2570          begin      begin
2571            if TUtils.CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2572            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;  
2573    
2574          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2575          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2576          begin      begin
2577            if TUtils.CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2578            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;  
2579    
2580          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2581          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2582          begin      begin
2583            if TUtils.CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2584            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;  
2585    
2586          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2587          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2588          begin      begin
2589            if TUtils.CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2590            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;  
2591    
2592          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2593          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2594          or (PanelValg4.Enabled = true) then      begin
2595          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2596            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;  
2597    
2598          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2599          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2600          begin      begin
2601            if TUtils.CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2602            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;  
2603    
2604          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2605          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2606          begin      begin
2607            if TUtils.CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2608            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;  
2609    
2610         // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger      // Tjekker UrlPakkeshopManglendeScanninger
2611          if PanelValg7.Enabled = true then      if PanelValg5.Enabled = true then
2612          begin      begin
2613            if TUtils.CheckUrl(UrlIndleveringsPakke) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2614            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;  
2615    
2616            if TUtils.CheckUrl(UrlIndleveringsPakkeManglendeScanninger) then      // Tjekker UrlPakkeshopManglendeReturScanninger
2617            begin      if PanelValg6.Enabled = true then
2618              logTekst := 'UrlIndleveringsPakkeManglendeScanninger accepteret: ' + UrlIndleveringsPakkeManglendeScanninger;      begin
2619              SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2620            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;  
2621    
2622          // Tjekker UrlEKLoverforsel     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2623          if PanelValg1.Enabled = true then      if PanelValg7.Enabled = true then
2624          begin      begin
2625            if TUtils.CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2626            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2627              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;  
2628    
2629        // Tjekker UrlEKLoverforsel
2630        if PanelValg1.Enabled = true then
2631        begin
2632          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2633        end;
2634    
         // 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;  
2635    
2636        // Tjekker UrlEKLoverforselPakkeshop
2637        if PanelValg5.Enabled = true then
2638        begin
2639          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2640        end;
2641    
         // 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;  
2642    
2643          // Tjekker UrlSendPrograminfo      // Tjekker UrlFindPakketype
2644          if TUtils.CheckUrl(UrlSendPrograminfo) then      TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
         begin  
           logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;  
           SkrivScanningLogFil(logTekst);  
         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;  
2645    
2646          if urlFejl > 0 then      // Tjekker UrlSendPrograminfo
2647          begin      TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2648            TjekUrls := '-';   // markerer at der var fejl  
2649          end  
2650          else  
2651          begin      logTekst := 'urls er ok';
2652            logTekst := 'urls er ok';      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2653            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      SkrivScanningLogFil(logTekst);
2654            SkrivScanningLogFil(logTekst);  
2655          end;    Except
2656        Config.TjekUrls := '-';   // markerer at der var fejl
2657    
2658      end;
2659    end;
2660    
2661    procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2662    const
2663      crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
2664    begin
2665      if TUtils.CheckUrl(Url) then
2666    
2667      begin
2668        logTekst := UrlNavn + ' accepteret: ' + Url;
2669        SkrivScanningLogFil(logTekst);
2670      end
2671      else
2672      begin
2673        inc(urlFejl);   // Optæller antal fejl
2674        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2675        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2676        if Config.TjekUrls = '1' then
2677        begin
2678          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2679        end;
2680    
2681        SkrivScanningLogFil(logTekst);
2682    
2683        if Config.TjekUrls = '1' then
2684        begin
2685          ShowMessage(logTekst);
2686          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2687          Application.Terminate;
2688    
2689          raise Exception.Create('UrlFejl');
2690    
2691        end;
2692      end;
2693    
2694  end;  end;
2695    
2696    
2697    
2698  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2699  var  var
2700    SR: TSearchRec;    SR: TSearchRec;
# Line 3145  begin Line 2764  begin
2764    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2765    begin    begin
2766       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2767       UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut       Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2768       Application.Terminate;       Application.Terminate;
2769       exit;       exit;
2770    end;    end;
# Line 3155  begin Line 2774  begin
2774    if Farve <> '' then    if Farve <> '' then
2775    begin    begin
2776       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  
2777    end;    end;
2778    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2779    begin    begin
2780       InitLillePakke();       InitLillePakke();
2781    end;    end;
# Line 3230  procedure TMainForm.PanelValgAClick(Send Line 2839  procedure TMainForm.PanelValgAClick(Send
2839  begin  begin
2840  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2841  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2842    AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2843    PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2844    PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2845    
# Line 3238  begin Line 2847  begin
2847    
2848  end;  end;
2849    
2850  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2851  begin  begin
2852        Scanningtype := '1';        Scanningtype := '1';
2853        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3257  var Line 2866  var
2866    Leveringssted : String;    Leveringssted : String;
2867    orgTjekUrls : String;    orgTjekUrls : String;
2868  begin  begin
2869    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2870    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2871    begin    begin
2872      TjekkerUrls();      TjekkerUrls();
2873    end;    end;
2874    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2875    begin    begin
2876      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2877      RuteNummer := '';      RuteNummer := '';
# Line 3271  begin Line 2880  begin
2880      Koreliste := '';      Koreliste := '';
2881      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2882      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2883      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2884      MainForm.Color := clRed;      MainForm.Color := clRed;
2885      btnNulstil.Visible := true;      btnNulstil.Visible := true;
2886    end    end
# Line 3284  begin Line 2893  begin
2893      SmsKode := '999999';      SmsKode := '999999';
2894      DBKbane := '999';      DBKbane := '999';
2895      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2896    
2897    
2898      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2899      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2900    end;    end;
2901    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2902    
2903  end;  end;
2904    
# Line 3297  var Line 2908  var
2908    Kommentar : String;    Kommentar : String;
2909    BoghandlerNavn : String;    BoghandlerNavn : String;
2910    Koreliste : String;    Koreliste : String;
2911    Falsk : Boolean;  //  Falsk : Boolean;
2912    SmsKode : String;  //  SmsKode : String;
2913    DBKbane : String;  //  DBKbane : String;
2914    Leveringssted : String;  //  Leveringssted : String;
2915  begin  begin
2916    RuteNummer := 'Rutenr';    RuteNummer := 'Rutenr';
2917    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2918    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2919    Falsk := False;  //  Falsk := False;
2920    
2921    
2922    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2923    begin    begin
2924      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2925    end    end
2926    else if PrinterNavn = 'Ingen' then  //  else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2927    begin  //  begin
2928      ShowMessage('Der er fravalgt printer i dette program.');  //    ShowMessage('Der er fravalgt printer i dette program.');
2929    end  //  end
2930    else    else
2931    begin    begin
2932      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2933      SmsKode := '999999';  //    SmsKode := '999999';
2934      DBKbane := '999';  //    DBKbane := '999';
2935      Leveringssted := 'XXX';  //    Leveringssted := 'XXX';
2936      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);  //    PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2937      CheckPrintQue('Test');  
2938        LabelPrint.PrintTestLabel();
2939    
2940        LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2941    
2942    end;    end;
2943    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2944  end;  end;
2945    
2946  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2947  begin  begin
2948    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2949    begin    begin
2950      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2951    end    end
2952    else    else
2953    begin    begin
# Line 3386  begin Line 3001  begin
3001      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
3002      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
3003      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
3004      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
3005    end;    end;
3006    
3007    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3008    
3009  end;  end;
3010    
3011    
3012  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3013    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3014  var  var
# Line 3507  begin Line 3123  begin
3123    
3124  end;  end;
3125    
3126  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3127  begin  begin
3128        Scanningtype := '2';        Scanningtype := '2';
3129        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3130        InitReturFraDao();        InitReturFraDao();
3131  end;  end;
3132    
3133  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3134  begin  begin
3135        Scanningtype := '6';        Scanningtype := '6';
3136        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3523  end; Line 3139  end;
3139    
3140  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3141  begin  begin
3142        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3143        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3144        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3145        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3146        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3147        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3148    
# Line 3537  begin Line 3153  begin
3153        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3154        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3155        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3156        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3157        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3158        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3159        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3160        ListBox1.Visible := true;        ListBox1.Visible := true;
# Line 3546  begin Line 3162  begin
3162        BtnEKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3163        InitLillePakke();        InitLillePakke();
3164        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3165    
3166          chkForstorTilDirekte.Checked := false;
3167          chkForstorTilDirekte.Enabled := false;
3168    
3169        if BladhusSted = 0 then        if BladhusSted = 0 then
3170        begin        begin
3171          IndlesScanningLogFil();          IndlesScanningLogFil();
3172          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3173        end;        end;
3174  end;  end;
3175    
3176  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3177  begin  begin
3178        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3179        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3180        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3181        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3182        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3183        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3184    
# Line 3569  begin Line 3189  begin
3189        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3190        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3191        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3192        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3193        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3194        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3195        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3196        ListBox1.Visible := true;        ListBox1.Visible := true;
3197        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3198        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3199        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3200    
3201          chkForstorTilDirekte.Checked := false;
3202          chkForstorTilDirekte.Enabled := false;
3203    
3204        InitLillePakke();        InitLillePakke();
3205  end;  end;
3206    
3207  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3208  begin  begin
3209        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3210        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3211        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3212        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3213        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3214        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3215    
# Line 3595  begin Line 3219  begin
3219        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3220        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3221        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3222        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3223        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3224        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3225        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3226        ListBox1.Visible := true;        ListBox1.Visible := true;
3227        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3228        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3229        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3230    
3231          chkForstorTilDirekte.Checked := false;
3232          chkForstorTilDirekte.Enabled := false;
3233    
3234        InitLillePakke();        InitLillePakke();
3235  end;  end;
3236    
3237  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3238  begin  begin
3239        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3240        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3241        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3242        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3243        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3244        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3245    
# Line 3622  begin Line 3250  begin
3250        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3251        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3252        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3253        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3254        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3255        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3256        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3257        ListBox1.Visible := true;        ListBox1.Visible := true;
# Line 3634  begin Line 3262  begin
3262        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3263        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3264        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3265    
3266          chkForstorTilDirekte.Checked := false;
3267          chkForstorTilDirekte.Enabled := true;
3268    
3269        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3270        begin        begin
3271            IndlesScanningLogFil();            IndlesScanningLogFil();
3272            IndlesManglendeScanninger();            IndlesManglendeScanningerAntal();
3273        end;        end;
3274    
3275  end;  end;
3276    
3277  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3278  begin  begin
3279        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3280        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3281        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3282        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3283        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3284        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3285    
# Line 3658  begin Line 3290  begin
3290        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3291        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3292        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3293        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3294        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3295        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3296        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3297        ListBox1.Visible := true;        ListBox1.Visible := true;
# Line 3669  begin Line 3301  begin
3301    
3302        BtnEKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3303    
3304          chkForstorTilDirekte.Checked := false;
3305          chkForstorTilDirekte.Enabled := true;
3306    
3307        InitLillePakke();        InitLillePakke();
3308        IndlesScanningLogFil();        IndlesScanningLogFil();
3309        if BladhusSted = 0 then        if BladhusSted = 0 then
3310        begin        begin
3311          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3312        end;        end;
3313        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3314        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
# Line 3681  end; Line 3316  end;
3316    
3317  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3318  begin  begin
3319        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3320        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3321        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3322        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3323        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3324        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3325    
# Line 3695  begin Line 3330  begin
3330        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3331        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3332        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3333        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3334        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3335        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3336        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3337        ListBox1.Visible := true;        ListBox1.Visible := true;
# Line 3704  begin Line 3339  begin
3339        BtnDownloadKontrolfil.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3340        BtnOpdaterListen.Enabled := true;        BtnOpdaterListen.Enabled := true;
3341        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3342    
3343          chkForstorTilDirekte.Checked := false;
3344          chkForstorTilDirekte.Enabled := false;
3345    
3346    
3347        InitLillePakke();        InitLillePakke();
3348        IndlesScanningLogFil();        IndlesScanningLogFil();
3349        if BladhusSted = 0 then        if BladhusSted = 0 then
3350        begin        begin
3351          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3352        end;        end;
3353        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3354        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3355  end;  end;
3356    
3357  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3358  begin  begin
3359        Scanningtype := '3';        Scanningtype := '3';
3360        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3724  end; Line 3364  end;
3364  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3365  begin  begin
3366        menuIndlevering.Checked := true;        menuIndlevering.Checked := true;
3367        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3368    
3369        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3370        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3371        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3372        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3373    
# Line 3741  begin Line 3381  begin
3381    
3382    
3383    
3384        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3385        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3386        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3387        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3388        ListBox1.Visible := true;        ListBox1.Visible := true;
# Line 3751  begin Line 3391  begin
3391        BtnDownloadKontrolfil.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3392        BtnOpdaterListen.Enabled := true;        BtnOpdaterListen.Enabled := true;
3393        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3394    
3395          chkForstorTilDirekte.Checked := false;
3396          chkForstorTilDirekte.Enabled := false;
3397    
3398    
3399        InitLillePakke();        InitLillePakke();
3400        IndlesScanningLogFil();        IndlesScanningLogFil();
3401        if BladhusSted = 0 then        if BladhusSted = 0 then
3402        begin        begin
3403          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3404        end;        end;
3405        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3406        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3407  end;  end;
3408    
3409    
3410  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3411  begin  begin
3412    InitStorPakke();    InitStorPakke();
3413  end;  end;
3414    
3415  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3416  begin  begin
3417    InitLillePakke();    InitLillePakke();
3418  end;  end;
# Line 3775  end; Line 3420  end;
3420  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3421  begin  begin
3422    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3423    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3424  //  Stregkode := '';  //  Stregkode := '';
3425  end;  end;
3426    
3427  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3428  begin  begin
3429    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3430    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3431  // 20150310: start  // 20150310: start
3432  //  Stregkode := '';  //  Stregkode := '';
3433  // 20150310: slut  // 20150310: slut
# Line 3801  end; Line 3446  end;
3446    
3447  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3448  begin  begin
3449     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3450     begin     begin
3451       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3452     end     end
3453     else     else
3454     begin     begin
# Line 3815  procedure TMainForm.Testlyd2Click(Sender Line 3460  procedure TMainForm.Testlyd2Click(Sender
3460  begin  begin
3461    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3462    begin    begin
3463       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3464       begin       begin
3465         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3466       end       end
3467       else       else
3468       begin       begin
# Line 3826  begin Line 3471  begin
3471       exit;       exit;
3472    end;    end;
3473    
3474    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3475       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3476       begin       begin
3477         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3478       end       end
3479       else       else
3480       begin       begin
3481         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3482       end;       end;
3483    if Storepakker1.Checked then    if menuStorePakker.Checked then
3484       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3485       begin       begin
3486         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3487       end       end
3488       else       else
3489       begin       begin
# Line 3847  begin Line 3492  begin
3492  end;  end;
3493    
3494    
3495  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3496  begin  begin
3497        Scanningtype := '4';        Scanningtype := '4';
3498        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3875  begin Line 3520  begin
3520      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3521      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3522      StedKode := Sted;      StedKode := Sted;
3523      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3524  // 20150330: start  
3525      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3526      begin      begin
3527        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3528      end;      end;
3529  // 20150330: slut  
3530    
3531      try      try
3532      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3939  begin Line 3584  begin
3584      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3585      if status = 'Fejl' then      if status = 'Fejl' then
3586      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3587         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3588         MainForm.Color := clRed;         MainForm.Color := clRed;
3589         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3590         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 4469  const Line 4114  const
4114    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4115    
4116  begin  begin
4117      IndlesManglendeScanninger();      IndlesManglendeScanningerListe();
4118      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4119  end;  end;
4120    
# Line 4483  begin Line 4128  begin
4128  end;  end;
4129    
4130    
4131  // ToDo: PrintPakkeshopLabel()  procedure TMainForm.IndlesManglendeScanningerAntal();
 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
4132  var  var
4133    XForm, XFormOld: TXForm; //Bruges til rotate X-formation    Node: IXMLNode;
   Angle: integer;  
   gMode: integer;  
   Dirigering: string;  
   
 begin  
     with Printer do  
     begin  
       BeginDoc();  
4134    
4135      URLStr : String;
4136      StedKode : String;
4137      WebSvar : String;
4138    
4139        Canvas.Font.Size := 16;    i : Integer;
       Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + '     '  + PakkeshopLabel.Overskrift);  
4140    
4141      PakkeType : String;
4142      TotalAntal : String;
4143      AntalProdDato : String;
4144    
4145      CurrentPanel : TPanel;
4146    
4147        Canvas.TextOut(25, 90, PakkeshopLabel.Navn );  begin
4148        Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );    ListBox2.Clear();
       Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );  
4149    
4150      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4151        begin
4152          StedKode := BladhusStedKode[BladhusSted];
4153        end
4154      else
4155        begin
4156          StedKode := Sted;
4157        end;
4158    
4159        Canvas.Font.Size := 9;    URLStr := Format(Config.UrlHentPakkeAntal, [StedKode]);
       Canvas.TextOut(110, 240, 'Pakkeshop:');  
       Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);  
       Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);  
       Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);  
4160    
       Canvas.TextOut(350, 240, 'Afsender:');  
       Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);  
       Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);  
       Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr);  
4161    
4162        Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;    try
4163        if ( PakkeshopLabel.Koreliste <> '') then      WebSvar := IdHTTP1.Get(URLStr);
4164        except
4165          on e:EIdConnClosedGracefully do
4166        begin        begin
4167          Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;          // Her skal vi ikke gøre noget - men vi skal forespørge igen
4168            WebSvar := IdHTTP1.Get(URLStr);
4169        end;        end;
4170          on e:exception do
4171          begin
4172            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4173            logTekst := 'Fejl i web forespørgsel: '+e.Message;
4174            SkrivScanningLogFil(logTekst);
4175            raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4176          end;
4177        end;
4178    
4179    
       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);  
   
4180    
4181        //Tegn skrå streger over afsender       try
       Canvas.Pen.Width := 1;  
       Canvas.MoveTo(600, 250);  
       Canvas.LineTo(350, 360);  
       Canvas.MoveTo(600, 360);  
       Canvas.LineTo(350, 250);  
4182    
4183          XMLDocument1.LoadFromXML(WebSvar);
4184    
4185          for i:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4186              Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4187    
4188              PakkeType := Node.ChildValues['PakkeType'];
4189              TotalAntal := Node.ChildValues['TotalAntal'];
4190              AntalProdDato := Node.ChildValues['AntalProdDato'];
4191    
       // Resten af rutinen vedr genering og placering af Barcode  
4192    
4193        BarCode.BarCodeType := bcCode128;            CurrentPanel := nil;
       BarCode.Code128Subset := csCodeC;  
       BarCode.Code := PakkeshopLabel.Stregkode;  
       BarCode.Validate(True);  
4194    
4195        //Start X-formation            if (PakkeType = 'natxpress') then
4196        //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );            begin
4197        GetWorldTransform(Canvas.Handle, XFormOld);               CurrentPanel := PanelManglendePakker1;
4198              end;
4199    
4200        Angle := 270;            if (PakkeType = 'daodirekte') then
4201        XForm.eM11 := Cos(DegToRad(Angle));            begin
4202        XForm.eM12 := Sin(DegToRad(Angle));               CurrentPanel := PanelManglendePakker4;
4203        XForm.eM21 := -Sin(DegToRad(Angle));            end;
       XForm.eM22 := Cos(DegToRad(Angle));  
       XForm.eDx := 0;  
       XForm.eDy := 0;  
4204    
4205        gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);            if (PakkeType = 'pakkeshop') then
4206        SetWorldTransform(Canvas.Handle, XForm);            begin
4207                 CurrentPanel := PanelManglendePakker5;
4208              end;
4209    
4210        // PaintToCanvasSize arbejder i Inches            if (CurrentPanel <> nil) then
4211        // Første pos argument bliver nu Y og skal være negativ for at rykke den ned            begin
4212        //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre              CurrentPanel.Caption := TotalAntal;
4213                if ( StrToInt(TotalAntal) > 0) then
4214                begin
4215                  CurrentPanel.Visible := true;
4216                end
4217                else
4218                begin
4219                  CurrentPanel.Visible := false;
4220                end;
4221              end;
4222    
       BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4);  
4223    
4224          end;
4225    
       SetWorldTransform(Canvas.Handle, XFormOld);  
       SetGraphicsMode(Canvas.Handle, gMode);  
4226    
4227        EndDoc();   except on e:exception do
4228          begin
4229            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4230            logTekst := 'Fejl i XML-format: '+e.Message;
4231            SkrivScanningLogFil(logTekst);
4232            raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4233          end;
4234      end;      end;
4235    
4236    
 end;  
4237    
4238  function GetPixelsPerInchX(): Integer;    ListBox1.Items.Insert(0,'Pakkeantal indlæst - klar til scanning');
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)  
 end;  
4239    
 function GetPixelsPerInchY(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)  
4240  end;  end;
4241    
4242    procedure TMainForm.IndlesManglendeScanningerListe();
 procedure TMainForm.IndlesManglendeScanninger();  
4243  var  var
4244    WebSvar : String;    WebSvar : String;
4245    URLStr : String;    URLStr : String;
# Line 4615  var Line 4248  var
4248    I: Integer;    I: Integer;
4249    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4250    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4251    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4252    pakketyper : TStrings;    //pakketyper : TStrings;
4253      pakketyper : TDictionary<String, Integer>;
4254      tmpAntal : Integer;
4255    
4256     time, timeSamlet : TTimingHelper;
4257    
4258    
4259    antlin : Integer;    antlin : Integer;
4260    
4261    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4262    
4263    XmlFelter : TStrings;    //XmlFelter : TStrings;
4264      XmlFelter : TDictionary<String, Integer>;
4265    
4266   begin   begin
4267      XmlFelter := TStringList.Create;  
4268      pakketyper := TStringList.Create;  
4269        XmlFelter := TDictionary<String, Integer>.Create;
4270        pakketyper := TDictionary<String, Integer>.Create;
4271    
4272      linienr := 0;      linienr := 0;
4273      ListBox2.Clear;      ListBox2.Clear;
4274      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 4283  var
4283          StedKode := Sted;          StedKode := Sted;
4284        end;        end;
4285    
4286          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4287    
4288    
4289    
4290      if (Scanningtype = '7') then      if (Scanningtype = '7') then
4291       begin       begin
4292        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4293       end       end
4294      else if (Scanningtype = '6') then      else if (Scanningtype = '6') then
4295       begin       begin
4296        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4297       end       end
4298      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4299       begin       begin
4300        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4301       end       end
4302      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4303       begin       begin
4304        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4305       end       end
4306      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4307       begin       begin
4308        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4309       end       end
4310      else      else
4311       begin       begin
# Line 4668  var Line 4313  var
4313       end;       end;
4314  // 20150310: slut  // 20150310: slut
4315    
4316        time := TTimingHelper.create();        //DEBUG
4317        timeSamlet := TTimingHelper.create();        //DEBUG
4318    
4319      try      try
4320      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4321  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4677  var Line 4325  var
4325        begin        begin
4326          // Her skal vi ikke gøre noget - men vi skal forespørge igen          // Her skal vi ikke gøre noget - men vi skal forespørge igen
4327          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4328    
4329    
4330    
4331        end;        end;
4332        on e:exception do        on e:exception do
4333        begin        begin
# Line 4687  var Line 4338  var
4338        end;        end;
4339      end;      end;
4340      try      try
4341          time.stop('HTTP Load');     //DEBUG
4342    
4343        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4344    
4345          time.stop('XML Load');     //DEBUG
4346    
4347    
4348    
4349    
4350    
4351    
4352        antlin := 0;        antlin := 0;
4353        antlinIdag := 0;        antlinIdag := 0;
# Line 4699  var Line 4358  var
4358            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4359              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4360              begin              begin
4361                 antlin := antlin + 1;                 Inc(antlin);
4362                 // 20150306: start                 // 20150306: start
4363                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4364                begin                begin
4365                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4366                   begin                   begin
4367                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4368                   end                   end
4369                   else                   else
4370                   begin                   begin
4371                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4372                   end;                   end;
4373                end;                end;
4374                 // 20150306: slut                 // 20150306: slut
4375              end;              end;
4376            end;            end;
4377            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4378                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4379                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4380                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4381                  end
4382                else                else
4383                  XmlFelter.values[Node.NodeName] := '1';                begin
4384                    XmlFelter.Add(Node.NodeName, 1);
4385                  end;
4386    
4387        end;        end;
4388        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4726  var Line 4390  var
4390        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4391        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4392    
4393          time.stop('Antal Linier');//DEBUG
4394    
4395          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4396    
4397        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4398        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4399        begin        begin
# Line 4734  var Line 4402  var
4402        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4403    
4404        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4405          time.stop('Antal Linier2');//DEBUG
4406    
4407    
4408        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4409            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4410            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4741  var Line 4412  var
4412                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4413                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4414                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4415              end;              end
4416              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4417                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4418                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4419                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4420              end;              end
4421              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4422                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4423                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4424                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4425              end;              end
4426              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4427                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4428                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4429                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4430              end;              end
4431              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4432                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4433                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4434                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4435                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4436                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4437                    pakketyper.TryGetValue(pakketype, tmpAntal);
4438                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4439                  end
4440                else                else
4441                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4442              end;              end
4443              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4444                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4445                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4446                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4447                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4448                  begin                  begin
4449  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4450                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4451                    begin                    begin
4452                      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 4458  var
4458                    linienr := linienr + 1;                    linienr := linienr + 1;
4459                  end;                  end;
4460              end;              end;
4461    
4462    
4463              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4464              begin              begin
4465                if (ScanningType = '1') then                if (ScanningType = '1') then
4466                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)                   ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4467                else if (ScanningType = '4') then                else if (ScanningType = '4') then
4468                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4469                else if (ScanningType = '5') then                else if (ScanningType = '5') then
# Line 4800  var Line 4475  var
4475              end;              end;
4476            end;            end;
4477        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4478    
4479          // Free up the list object  
4480          time.stop('Fyld Listbox2');//DEBUG
4481    
4482    
4483          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4484    
4485    
4486          for pakketype in pakketyper.Keys do
4487          begin
4488            pakketyper.TryGetValue(pakketype, tmpAntal);
4489            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4490          end;
4491    
4492            // Free up the dictionary object
4493        pakketyper.Free;        pakketyper.Free;
4494    
4495    
4496    
4497  //      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.');
4498        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4499        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4912  var Line 4599  var
4599        end;        end;
4600      end;      end;
4601    
4602        time.stop('Done');//DEBUG
4603        timeSamlet.stop('SamletTid');//DEBUG
4604    
4605    
4606  end;  end;
4607    
4608  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 5087  begin Line 4778  begin
4778          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4779          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4780          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4781          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4782        end;        end;
4783      end;      end;
4784    end    end
# Line 5096  begin Line 4787  begin
4787        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4788        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4789        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4790        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4791    end;    end;
4792  end;  end;
4793    
# Line 5167  begin Line 4858  begin
4858          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4859          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4860          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4861          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4862        end;        end;
4863      end;      end;
4864    end    end
# Line 5176  begin Line 4867  begin
4867        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4868        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4869        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4870        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4871    end;    end;
4872  end;  end;
4873    
# Line 5234  procedure TMainForm.VisAlarmSkaerm(strMe Line 4925  procedure TMainForm.VisAlarmSkaerm(strMe
4925  begin  begin
4926    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4927    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4928    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
4929    MainForm.Color := clRed;    MainForm.Color := clRed;
4930    
4931    
# Line 5248  begin Line 4939  begin
4939      KommentarST.Caption := strMessage;      KommentarST.Caption := strMessage;
4940    end;    end;
4941    
4942      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4943    
4944  end;  end;
4945    
4946  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5307  begin Line 5000  begin
5000    result := svar;    result := svar;
5001  end;  end;
5002    
 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;  
5003    
5004  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5005  begin  begin
# Line 5340  begin Line 5014  begin
5014  end;  end;
5015    
5016    
5017    //Nedarvet fra IParentForm
5018    procedure TMainForm.Msg( msg : string);
5019    begin
5020      ShowMessage(msg);
5021    end;
5022    
5023    //Nedarvet fra IParentForm
5024    procedure TMainForm.LogMessage( msg : string);
5025    begin
5026      ListBox1.Items.Insert(0, msg);
5027      SkrivScanningLogFil(msg);
5028    end;
5029    
5030    
5031    //Nedarvet fra IParentForm
5032    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;  
5033  begin  begin
5034    
5035  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1    PrinterstatusStaticText1.Caption := txt;
5036  //            '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  
   begin  
     printerTxt := 'Der er fravalgt printer i dette program';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
5037    begin    begin
5038      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
5039      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
5040      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
5041    end    end
5042    else    else
5043    begin    begin
5044      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
5045      try      PrinterstatusStaticText1.Color := clWhite;
5046        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
5047        pJ := AllocMem(bytesNeeded);    end;
5048        if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  end;
         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;  
5049    
5050            if (i = 0) then  //Nedarvet fra IParentForm
5051            begin  function TMainForm.GetFormObject() : TForm;
5052              PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  begin
5053              PrinterstatusStaticText1.Font.Color := clBlack;    Result := self;
5054              PrinterstatusStaticText1.Color := MainForm.Color;  end;
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
5055    
5056          end;  //Nedarvet fra IParentForm
5057        end  function TMainForm.GetXMLDocument() : TXMLDocument;
5058        finally  begin
5059          ClosePrinter(hPrinter);    Result := XMLDocument1
     end;  
   end;  
5060  end;  end;
5061    
5062    

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

  ViewVC Help
Powered by ViewVC 1.1.20