/[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 2660 by torben, Sun Aug 23 14:45:16 2015 UTC revision 3123 by torben, Tue Oct 18 13:57:46 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, Registry, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes    UITypes,
23      LabelData,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections,
30      TimingHelper
31    
32    ;    ;
33    
34  type  type
35    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
36      StregkodeST: TStaticText;      StregkodeST: TStaticText;
37      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
38      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 23  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 41  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      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      menuPakkeshop1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      PakkeshopNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 70  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 88  type Line 104  type
104      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107        menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109        chkEmballageRepareret: TCheckBox;
110        KommentarST: TLabel;
111        chkUdenforSpecifikation: TCheckBox;
112    
113    
114    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
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;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
118    
119    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
120    procedure StartScreen();    procedure StartScreen();
# Line 119  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 DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
149    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
150    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
151    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
152    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 154  type
154    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
155    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
156    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
157    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
158    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
159    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
160    procedure PakkeshopNulstilClick(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 169  type
169    
170    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
171    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
172    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
173    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
174    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
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 181  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  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
195    procedure RoundCornerOf(Control: TWinControl);  
196      procedure menuIndleveringClick(Sender: TObject);
197    
198    
199    
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    
 // 20150310: slut  
210    
211    private    private
212      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 193  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,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;  
 // 20150317: start  
     ScannetOkTilTjekkodeLyd : String;  
 // 20150317: slut  
     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 246  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            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      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 IndlesManglendeScanninger();
# Line 262  type Line 255  type
255      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
256      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
257    
258    
259    public    public
260      { Public declarations }      { Public declarations }
261    end;    end;
262    
263    
264  var  var
265    MainForm: TMainForm;    MainForm: TMainForm;
266    
# Line 279  var Line 274  var
274  implementation  implementation
275  {$R *.dfm}  {$R *.dfm}
276    
277  function TMainForm.TColorToHex(Color : TColor) : string;  
278  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
279    
280  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
281  begin  begin
282    
283  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
284        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
285    
286    
287    
288    
289      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
290  // 20150309: slut  
291    
292      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
293      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 331  begin
331        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
332      end;      end;
333    
334      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
335    
336      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
337      begin      begin
# Line 374  begin Line 359  begin
359        else if (Sted = 'BR') then        else if (Sted = 'BR') then
360          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
361        else if (Sted = 'BK') then        else if (Sted = 'BK') then
362          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
363          else if (Sted = 'TK') then
364            begin StedNavn := 'BK/Trykkompagniet: '; end
365        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
366          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
367        else if (Sted = '1') then        else if (Sted = '1') then
368          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
369        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 387  begin
387    
388      StartScreen();      StartScreen();
389      MainForm.Caption := Titel;      MainForm.Caption := Titel;
390      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
391      MainForm.Farve := Farve;      MainForm.Farve := Farve;
392      MainForm.Titel := Titel;      MainForm.Titel := Titel;
393      MainForm.Url := Url;      MainForm.Url := Url;
# Line 410  begin Line 397  begin
397        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
398      end;      end;
399    
400      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
401        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
402      else      else
403        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 421  begin Line 408  begin
408    
409      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
410      begin      begin
411        if (ScanTjekkode = '1') then        if (Config.ScanTjekkode = '1') then
412        begin        begin
413          chkScanTjekkode.Checked := true;          chkScanTjekkode.Checked := true;
414          chkScanTjekkode.Enabled := true;          chkScanTjekkode.Enabled := true;
# Line 435  begin Line 422  begin
422        end;        end;
423      end;      end;
424    
425      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
426      begin      begin
427        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
428        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 447  begin
447          end          end
448          else          else
449          begin          begin
450            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
451          end;          end;
452          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
453        end        end
454        else        else
455        begin        begin
456          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
457          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
458        end;        end;
459      end;      end;
460    
461    
462  end;  end;
463    
464  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 492  begin Line 480  begin
480    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
481  end;  end;
482    
483  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
484  begin  begin
485    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
486    begin    begin
487       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
488       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 507  begin Line 495  begin
495    
496  end;  end;
497    
498  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
499  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
500  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
501  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
502       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
503       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
504       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
505  end;  end;
506    
507    
508    
509    //InitForm kaldes før FormCreate
510  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
511  const  const
512    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
513  var  var
   printerInd : integer;  
514    gemScanningtype : String;    gemScanningtype : String;
515    
516  begin  begin
517    
518    
519    // Initierer nogle variabler    // Initierer nogle variabler
520    BladhusSted := 00;    BladhusSted := 00;
521    Application.ShowHint := True;    Application.ShowHint := True;
522    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
523    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
524    
525    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
526    
527    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
528    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
529    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
530    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
531    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
532    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
533    
534    
535    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 565  begin Line 541  begin
541    
542  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
543    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
544    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 920;
545    
546      Config := TConfiguration.Create();
547      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
548      Config.Sted := Sted;
549    
550    // Læser parametre fra ini filen    // Læser parametre fra ini filen
551    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
552    try    try
553    
554    
555      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
556      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
557      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
558      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
559      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      Scanningtype := 'A'; //hardcoded
560      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      Pakketype := '0';
561      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
562      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
563      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
564      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');  
     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');  
565    
566      if (SkrivLog = '1') then      if (SkrivLog = '1') then
567      begin      begin
568        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
569        try        try
570          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
571          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
572          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
573          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
574          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
575          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 641  begin Line 581  begin
581    
582      if Scanningtype = 'A' then      if Scanningtype = 'A' then
583      begin      begin
584        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
585        Scanningtype := '1';        Scanningtype := '1';
586        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
587        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
588      end;      end;
589    
     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;  
590    
591      if SporgEfterBoghandler = '1' then  
592        if Config.SporgEfterBoghandler = '1' then
593      begin      begin
594        chkSporgEfterKunde.Checked := true;        chkSporgEfterKunde.Checked := true;
595        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
# Line 728  begin Line 600  begin
600        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
601      end;      end;
602    
603      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
604      begin      begin
605        chkScanTjekkode.Checked := true;        chkScanTjekkode.Checked := true;
606        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
# Line 739  begin Line 611  begin
611        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
612      end;      end;
613    
614      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
615      begin      begin
616        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
617        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
618        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
619      end;      end;
# Line 768  begin Line 640  begin
640      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
641      // *************************** //      // *************************** //
642    
643    {$IfDef STED_BK}
644        SpecialVersionSted := 'BK';
645    {$EndIf}
646    {$IfDef STED_TK}
647        SpecialVersionSted := 'TK';// BK-Trykkompagniet
648    {$EndIf}
649    {$IfDef STED_DBK}
650        SpecialVersionSted := 'DBK';
651    {$EndIf}
652    {$IfDef STED_FD}
653        SpecialVersionSted := 'FD';
654    {$EndIf}
655    {$IfDef STED_NS}
656        SpecialVersionSted := 'NS';
657    {$EndIf}
658    
659      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
660      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
661      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 671  begin
671      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
672      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
673    
 // 20150313: start  
674      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
675      begin      begin
676         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
677         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
678    
679          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
680          Sted := SpecialVersionSted;
681         // her skal vi også disable de knapper BK ikke kan bruge
682          PanelValg2.Enabled := false;
683          PanelValg2.Font.Color := clInactiveCaption;
684          PanelValg3.Enabled := false;
685          PanelValg3.Font.Color := clInactiveCaption;
686          //PanelValg6.Enabled := false;
687          //PanelValg6.Font.Color := clInactiveCaption;
688    
689         // her skal vi også disable de menupunkter FD ikke kan bruge
690          menuNatxpressReturDAO1.Enabled := false;
691          menuNatxpressReturfraKunde1.Enabled := false;
692    
693          //Returpakkerfrapakkeshop1.Enabled := false;
694      end;      end;
695    
696      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
697      begin      begin
698         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
699         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
700      end;  
 // 20150313: slut  
701    
     if SpecialVersionSted = 'BK' then  
     begin  
702        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
703        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
704       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 805  begin Line 706  begin
706        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
707        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
708        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
709        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
710        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
711       // her skal vi også disable de menupunkter BK ikke kan bruge  
712        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
713        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
714        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
715        if SpecialVersionScanningtype = 'A' then  
716        begin        //Returpakkerfrapakkeshop1.Enabled := false;
717           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
718      end;      end;
719    
720      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
721      begin      begin
722        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
723        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
724        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
725        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
726        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
727        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
728        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
729        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
730        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
731        PanelValg6.Enabled := false;  
732        PanelValg6.Font.Color := clInactiveCaption;       // her skal vi også disable de menupunkter BK ikke kan bruge
733       // her skal vi også disable de menupunkter DBK ikke kan bruge        menuNatxpressReturDAO1.Enabled := false;
734        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
       Returpakkerfraboghandler1.Enabled := false;  
735    
736        Pakkeshoplevering1.Enabled := false;        //Returpakkerfrapakkeshop1.Enabled := false;
       Returpakkerfrapakkeshop1.Enabled := false;  
737    
738        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
739        begin        begin
# Line 851  begin Line 745  begin
745        end;        end;
746      end;      end;
747    
748        if SpecialVersionSted = 'DBK' then
749        begin
750          Sted := SpecialVersionSted;
751        end;
752    
753      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
754      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
755      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 870  begin Line 769  begin
769        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
770        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
771        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
772          PanelValg7.Enabled := false;
773          PanelValg7.Font.Color := clInactiveCaption;
774       // 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
775    
776        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
777    
778        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
779        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
780        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
781        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
782        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
783        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
784        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
785        begin        begin
786          Scanningtype := '4';          Scanningtype := '4';
787          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
788          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
789          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
790        end        end
# Line 892  begin Line 793  begin
793          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
794          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
795          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
796          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
797          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
798          if Scanningtype = '1' then          if Scanningtype = '1' then
799          begin          begin
800            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
801            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
802            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
803          end;          end;
804          if Scanningtype = '2' then          if Scanningtype = '2' then
805          begin          begin
806            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
807            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
808            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
809          end;          end;
810          if Scanningtype = '3' then          if Scanningtype = '3' then
811          begin          begin
812            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
813            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
814            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
815          end;          end;
816          if Scanningtype = '4' then          if Scanningtype = '4' then
817          begin          begin
818            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
819            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
820            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
821          end;          end;
822          if Scanningtype = '5' then          if Scanningtype = '5' then
823          begin          begin
824            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
825            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
826            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
827          end;          end;
828          if Scanningtype = '6' then          if Scanningtype = '6' then
829          begin          begin
830            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
831            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
832            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
833          end;          end;
# Line 955  begin Line 856  begin
856          Application.Terminate;          Application.Terminate;
857      end;      end;
858    
859      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
860      begin      begin
861          TjekkerUrls();          TjekkerUrls();
862          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
863          begin          begin
864             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
865             MainForm.Color := clRed;             MainForm.Color := clRed;
866             RutenummerST.Caption := '';             RutenummerST.Caption := '';
867             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
868             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
869             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
870             exit;             exit;
871          end;          end;
872      end      end
# Line 1007  begin Line 908  begin
908    
909      if Pakketype = '1' then      if Pakketype = '1' then
910      begin      begin
911        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
912        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
913      end      end
914      else      else
915      begin      begin
916        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
917        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
918      end;      end;
919    
920      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
921      begin      begin
922        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
923        Testprinter1.Visible := true;        Testprinter1.Visible := true;
924        Testlyd1.Visible := true;        Testlyd1.Visible := true;
925        Testlyd2.Visible := true;        Testlyd2.Visible := true;
926      end      end
927      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
928      begin      begin
929        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
930        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1038  begin Line 939  begin
939        Testlyd2.Visible := false;        Testlyd2.Visible := false;
940      end;      end;
941    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
942    
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
943    
944    
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
   
   
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
945    
946      CheckPrintQue('Opstart');      LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
947        LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
948    
949    finally    finally
950      Free;      Free;
# Line 1076  begin Line 953  begin
953      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
954      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
955      begin      begin
956        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
957        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
958        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
959        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
960        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
961        Testprinter1.Visible := false;        Testprinter1.Visible := false;
962        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
963        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
964      end;      end;
965    
966      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1134  begin Line 1011  begin
1011      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1012    
1013      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1014      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1015    
1016  end;  end;
1017    
# Line 1191  begin Line 1068  begin
1068      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1069      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1070      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1071        or (NumberString = 'DAO PAKKESHOP')
1072        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1073            or (LowerCase(NumberString) = 'for stor daodirekte' )
1074      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1075    
1076      begin      begin
# Line 1201  begin Line 1081  begin
1081      begin      begin
1082        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1083      end;      end;
1084    end;    end;  // Slut ctrl-v
1085    
1086    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1087    begin    begin
1088      if (Length(Trim(Stregkode)) = 0) then  
1089        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1090        Stregkode := Trim(Stregkode);
1091    
1092        if (Length(Stregkode) = 0) then
1093      begin      begin
1094        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1095    
# Line 1214  begin Line 1098  begin
1098    
1099      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1100      begin      begin
1101         PakkeshopNulstil.Click();         btnNulstil.Click();
1102         exit;         exit;
1103      end;      end;
1104    
1105      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1106      begin      begin
1107        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1108    
# Line 1255  begin Line 1139  begin
1139         exit;         exit;
1140      end;      end;
1141    
1142        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1143        begin
1144          if chkForstorTilDirekte.Enabled then
1145          begin
1146            chkForstorTilDirekte.Checked := true;
1147          end
1148          else
1149          begin
1150             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1151          end;
1152          Stregkode := '';
1153          StregkodeST.Caption := StregKode;
1154          exit;
1155        end;
1156    
1157    
1158      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1159      begin      begin
1160         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1409  begin Line 1309  begin
1309      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1310      begin      begin
1311        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1312        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1313        try        try
1314          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1315          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1452  begin Line 1352  begin
1352        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1353      end;      end;
1354    
1355      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1356          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1357          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1358          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1359          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1360          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1361      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1362          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1363    
1364         exit;         exit;
1365      end;      end;
1366    
1367      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1368      begin      begin
1369        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1370        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1393  begin
1393                InitPakkeshoplevering();                InitPakkeshoplevering();
1394              end;              end;
1395            end            end
1396        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1397              begin
1398                if Scanningtype <> '6' then
1399                begin
1400                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1401    
1402                 exit;
1403                end;
1404              end
1405    
1406    
1407        else        else
1408            begin            begin
1409            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1410              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1411                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1412    
1413               exit;               exit;
1414            end;            end;
1415        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1416      end      end
1417      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1418      begin      begin
1419        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1420    
1421        exit;        exit;
1422      end;      end;
1423    
1424      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1425      begin      begin
1426        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1427        begin        begin
# Line 1522  begin Line 1432  begin
1432        end;        end;
1433      end;      end;
1434    
1435        // EmballageRepareret skal bare sætte reklamationkoden,
1436        // og så ellers fortsætte med scanning som normalt
1437        if (chkEmballageRepareret.Checked = True) then
1438        begin
1439          URLStr := Format(Config.UrlEmballageRepareret,[Sted,Stregkode]);
1440          WebSvar := IdHTTP1.Get(URLStr);
1441    
1442          chkEmballageRepareret.Checked := False;
1443        end;
1444    
1445      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (chkUdenforSpecifikation.Checked = True) then
1446        begin
1447          URLStr := Format(Config.URLUdenforSpecifikation,[Sted,Stregkode]);
1448          //InputBox( '1', '1', URLStr);
1449    
1450          WebSvar := IdHTTP1.Get(URLStr);
1451          //InputBox( '2', '2', WebSvar );
1452    
1453          chkUdenforSpecifikation.Checked := False;
1454          LabelPrint.PrintLabel(Stregkode);
1455    
1456          StregkodeST.Caption := '';
1457          Stregkode := '';
1458    
1459          RuteNummerST.Caption := '';
1460          BoghandlerNavnST.Caption := '';
1461          KommentarST.Caption := 'Retur til leverandør';
1462    
1463    
1464    
1465    
1466          exit;   //leave procedure
1467        end;
1468    
1469    
1470    
1471    
1472        if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1473      begin      begin
1474        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1475        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1482  begin
1482        end;        end;
1483      end;      end;
1484    
1485      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1486        begin        begin
1487          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1488             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1489             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1490             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1491             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1492             Stregkode := '';             Stregkode := '';
1493             InitScreen();             InitScreen();
1494        end        end
1495      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1496        begin        begin
1497          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1498             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1500  begin
1500             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1501             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1502             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1503             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1504             Stregkode := '';             Stregkode := '';
1505             InitScreen();             InitScreen();
1506        end        end
1507      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1508        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1509         begin         begin
1510            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1568  begin Line 1513  begin
1513              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1514              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1515    
1516              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1517    
1518             end             end
1519            else            else
# Line 1585  begin Line 1530  begin
1530             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1531             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1532             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1533             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1534                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1535             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1536                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1537             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1538           end           end
1539          else          else
1540           begin           begin
1541                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1542                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1543                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1544                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1545                                    
1546                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1552  begin
1552          InitScreen();          InitScreen();
1553       end;       end;
1554    
1555      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
1556      begin      begin
1557         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1558           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1559            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1560         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1561            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1562         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1563         try         try
# Line 1621  begin Line 1567  begin
1567            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1568            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1569            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1570               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1571               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1572              exit;              exit;
1573            end;            end;
1574            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1575            begin            begin
1576              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1577              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1645  begin Line 1587  begin
1587              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1588              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1589              begin              begin
1590                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1591                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1592                MainForm.Color := clRed;                MainForm.Color := clRed;
1593              end;              end;
1594           end;           end;
1595            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
1596            begin            begin
1597              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1598              if Storepakker1.Checked then              if menuStorePakker.Checked then
1599              begin              begin
1600                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1601              end              end
1602              else              else
1603              begin              begin
1604                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1605              end;              end;
1606              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1607            end            end
1608            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1609            begin            begin
1610              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1611              if Storepakker1.Checked then              if menuStorePakker.Checked then
1612              begin              begin
1613                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1614              end              end
1615              else              else
1616              begin              begin
1617                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1618              end;              end;
1619              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1620            end            end
1621            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1622            begin            begin
# Line 1685  begin Line 1627  begin
1627            end            end
1628            else            else
1629            begin            begin
1630              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1631            end;            end;
1632           if not PakkeshopNulstil.Visible then  
1633             if not btnNulstil.Visible then
1634            begin            begin
1635    
1636              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1637              begin              begin
1638                if Storepakker1.Checked then                if menuStorePakker.Checked then
1639                begin                begin
1640                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1641                end                end
1642                else                else
1643                begin                begin
1644                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1645                end;                end;
1646                InitLillePakke();                InitLillePakke();
1647              end;              end;
# Line 1738  begin Line 1679  begin
1679    
1680    Key := #0;    Key := #0;
1681    
1682    
1683    
1684    
1685    
1686    
1687  end; //End of OnKeyPress  end; //End of OnKeyPress
1688    
1689    
1690    
1691  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1692  const  const
1693    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1747  var Line 1695  var
1695    WebSvar : String;    WebSvar : String;
1696    URLStr : String;    URLStr : String;
1697  begin  begin
1698    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1699    begin    begin
1700      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1701      try      try
1702        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1703        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1762  begin Line 1710  begin
1710        ShowMessage(logTekst);        ShowMessage(logTekst);
1711        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1712        // 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
1713        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1714        Application.Terminate;        Application.Terminate;
1715      end;      end;
1716      end;      end;
# Line 1781  var Line 1729  var
1729    
1730    
1731  begin  begin
1732      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
1733      begin      begin
1734        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1735          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1736          begin          begin
1737              wrkAntalSenere := 0;//initial Value
1738    
1739            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1740            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1741            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1742            begin            begin
1743              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1744              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1745  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1746  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1747  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1748              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1749            end            end
1750            else     // kun idag            else     // kun idag
1751            begin            begin
# Line 1900  begin Line 1849  begin
1849                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1850              end;              end;
1851            end;            end;
1852  // 20150310: slut  
1853            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1854          end;          end;
1855      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1879  procedure TMainForm.InitBladhus();
1879    
1880  begin  begin
1881    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1882    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1883    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1884    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1885    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1886    ListBox1.Visible := true;    ListBox1.Visible := true;
1887  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1888  // 20150317: start  
1889  (*    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  
1890    begin    begin
1891      IndlesScanningLogFil();      IndlesScanningLogFil();
1892    end;    end;
# Line 1989  begin Line 1898  begin
1898      01 :      01 :
1899            begin;      // NS            begin;      // NS
1900              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1901              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1902              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1903              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1904              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1905              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2001  begin Line 1910  begin
1910      02 :      02 :
1911            begin;    // BK            begin;    // BK
1912              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1913              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1914              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1915              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1916              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1917              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1918              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1919              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1920              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1921              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 1925  begin
1925              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1926             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1927              begin              begin
1928                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1929              end              end
1930              else              else
1931              begin              begin
1932                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1933              end;              end;
1934              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1935              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1936              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1937              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1938              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2039  begin Line 1948  begin
1948            end;            end;
1949      04 :  begin;           // DBK      04 :  begin;           // DBK
1950              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1951              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1952              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1953              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1954              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1955              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1956              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1957              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1958              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1959            end;            end;
# Line 2060  var Line 1969  var
1969    URLStr : String;    URLStr : String;
1970    pakkestorrelse : String;    pakkestorrelse : String;
1971    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1972    
1973      PakkeshopLabel: TLabelData;
1974  begin  begin
1975    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1976    begin    begin
# Line 2069  begin Line 1980  begin
1980    begin    begin
1981      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1982    end;    end;
1983    if Pakkernormal1.Checked then  
1984    
1985      if menuNatXpress1.Checked then
1986    begin    begin
1987       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1988       begin       begin
1989         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1990       end;       end;
1991       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1992      end
1993      else if menuNatxpressReturDAO1.Checked then
1994      begin
1995         URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1996    end    end
1997    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
1998    begin    begin
1999       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2000    end    end
2001    else if Returpakkerfraboghandler1.Checked then    else if menuDaoDirekte1.Checked then
2002    begin    begin
2003       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2004    end    end
2005    else if Budlevering1.Checked then    else if menuPakkeshop1.Checked then
2006    begin    begin
2007       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2008    end    end
2009    else if Pakkeshoplevering1.Checked then    else if menuPakkeshopRetur1.Checked then
2010    begin    begin
2011       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
2012    end    end
2013    else if Returpakkerfrapakkeshop1.Checked then    else if menuIndlevering.Checked then
2014    begin    begin
2015       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);      URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
2016    end    end
2017    else    else
2018    begin    begin
2019      exit;      exit;
2020    end;    end;
2021    
2022      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2023      begin
2024        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2025      end;
2026    
2027    try    try
2028      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2029      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2045  begin
2045          end;          end;
2046      end;      end;
2047    end;    end;
2048    
2049    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2050    try    try
2051      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2052       begin       begin
2053        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2054        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2056  begin
2056        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2057        PrintNyLabel := False;        PrintNyLabel := False;
2058    
2059        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2060        begin        begin
2061          try          try
2062            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2143  begin Line 2067  begin
2067          begin          begin
2068            PrintNyLabel := True;            PrintNyLabel := True;
2069          end;          end;
 // 20150310: start  
2070        end;        end;
 // 20150310: slut  
2071       end       end
2072        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2073        begin
2074    
2075    
2076    
2077    
2078         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2079         if (Kommentar = 'Ok') then
2080         begin
2081           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2082           PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2083           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2084           Stregkode := PakkeshopLabel.Stregkode;
2085    
2086           LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2087           chkForstorTilDirekte.Checked := false;
2088    
2089         end;
2090    
2091    
2092        end
2093      else      else
2094       begin       begin
2095        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2097  begin
2097        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2098        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2099        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2100        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2101          begin          begin
2102          try          try
2103            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2122  begin
2122          PrintNyLabel := True;          PrintNyLabel := True;
2123        end;        end;
2124      end;      end;
2125    
2126    
2127      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2128      begin      begin
2129        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2130        begin        begin
2131            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2132            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2133        end;        end;
2134      end      end
2135      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2136      begin      begin
2137         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2138         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;  
2139      end;      end;
2140    except on e:exception do    except on e:exception do
2141      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2216  begin Line 2154  begin
2154    //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
2155    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2156    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2157    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2158      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2159    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2160    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2166  begin
2166      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2167    end;    end;
2168    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2169    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2170    begin    begin
2171      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2172    end;    end;
2173    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2174    begin    begin
2175      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2176    end;    end;
2177    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2178       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2179    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2180    begin    begin
2181      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2182    end;    end;
2183    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2184    begin    begin
2185       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2186        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2192  begin
2192          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2193        end;        end;
2194    end;    end;
2195    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2196    begin    begin
2197      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2198    end;    end;
2199    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2200    begin    begin
2201      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2202      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2209  begin
2209        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2210      end;      end;
2211    end;    end;
2212      if menuIndlevering.Checked then
2213      begin
2214        List1Msg := Stregkode;
2215      end;
2216    
2217    
2218    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2219    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2220    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2221  end;  end;
2222    
2223  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2224  begin  begin
2225    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2226    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2236  pakkeForkertSted : Integer;
2236    kontrolKoreliste : string;    kontrolKoreliste : string;
2237    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2238  begin  begin
2239    if Budlevering1.Checked then  //  if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2240       RuteNummerST.Color := HexToTColor(Farve);  //  begin
2241    //    LabelPrint.PrintLabel( Stregkode );
2242    //  end;
2243    //
2244    //  exit;
2245    
2246      if menuDaoDirekte1.Checked then
2247         RuteNummerST.Color := TUtils.HexToTColor(Farve);
2248    
2249    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2250    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2281  begin
2281        end;        end;
2282    end    end
2283    else    else
2284    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2285    begin    begin
2286       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2287       begin       begin
2288          PrintNyLabel := false;          PrintNyLabel := false;
2289    
2290          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
2291          MainForm.Color := clRed;          MainForm.Color := clRed;
2292          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2293    
2294       end       end
2295       else       else
# Line 2349  begin Line 2300  begin
2300            PrintNyLabel := true;            PrintNyLabel := true;
2301            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2302            nyFarve := Farve;            nyFarve := Farve;
2303            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2304            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2305            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2306            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2307            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2308            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2309    
2310            if (PrinterNavn = 'Ingen') then  //          if (Config.PrinterNavn = 'Ingen') then
2311            begin  //          begin
2312               PrintNyLabel := false;  //             PrintNyLabel := false;
2313            end;  //          end;
2314    
2315            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
2316            begin            begin
2317              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2318              MainForm.Color := clRed;              MainForm.Color := clRed;
2319              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2320            end;            end;
2321    
2322         end;         end;
# Line 2389  begin Line 2340  begin
2340    
2341            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
2342            begin            begin
2343              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2344              MainForm.Color := clRed;              MainForm.Color := clRed;
2345              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2346            end;            end;
2347    
2348         end;         end;
# Line 2399  begin Line 2350  begin
2350    
2351    end;    end;
2352    
2353    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2354    begin    begin
2355      case BladhusSted of      case BladhusSted of
2356        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2362  begin
2362               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2363  // 20150304: slut  // 20150304: slut
2364                begin                begin
2365                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2366                    LabelPrint.PrintLabel( Stregkode );
2367                end;                end;
2368              end;              end;
2369        01 :  begin;        01 :  begin;
2370               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2371                    // 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
2372                    // 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')
2373                begin                begin
2374                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2375                    LabelPrint.PrintLabel( Stregkode );
2376                end;                end;
2377              end;              end;
2378        02 :  begin;        02 :  begin;
2379                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
2380                begin                begin
2381                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2382                    LabelPrint.PrintLabel( Stregkode );
2383                end;                end;
2384              end;              end;
2385        03 :  begin;        03 :  begin;
2386               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2387                    // 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
2388                    // 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')
2389               begin               begin
2390                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2391                    LabelPrint.PrintLabel( Stregkode );
2392               end;               end;
2393              end;              end;
2394        04 :  begin;        04 :  begin;
2395                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
2396                begin                begin
2397                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2398                    LabelPrint.PrintLabel( Stregkode );
2399                end;                end;
2400              end;              end;
2401        else        else
# Line 2448  begin Line 2404  begin
2404    end;    end;
2405    
2406  // 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
2407    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
2408    begin    begin
2409      exit;      exit;
2410    end;    end;
2411    
2412    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
2413    begin    begin
2414    end    end
2415    else    else
2416    begin    begin
2417      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
2418      begin      begin
2419        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2420        if (chkAltidPrintLabel.Checked) then        if (chkAltidPrintLabel.Checked) then
# Line 2475  begin Line 2431  begin
2431        end;        end;
2432        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2433        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2434        with Printer do  
2435        begin        //LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2436          BeginDoc;        LabelPrint.PrintLabel( Stregkode );
2437          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;  
2438      end;      end;
2439    end;    end;
2440    
2441  end;  end;
2442    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2443    
2444    
2445  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2446  begin  begin
2447      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2448      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2449  end;  end;
2450    
2451  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2452  begin  begin
2453      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2454      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2455  end;  end;
2456    
# Line 2571  begin Line 2468  begin
2468  end;  end;
2469    
2470    
2471    procedure TMainForm.chkUdenforSpecifikationClick(Sender: TObject);
2472    begin
2473      if (chkUdenforSpecifikation.Checked = true) then
2474      begin
2475        chkEmballageRepareret.Checked := false;
2476      end;
2477    end;
2478    
2479    procedure TMainForm.chkEmballageRepareretClick(Sender: TObject);
2480    begin
2481      if (chkEmballageRepareret.Checked = true) then
2482      begin
2483        chkUdenforSpecifikation.Checked := false;
2484      end;
2485    end;
2486    
2487  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2488  begin  begin
2489    if chkAltidPrintLabel.Checked then    if chkAltidPrintLabel.Checked then
# Line 2584  begin Line 2497  begin
2497    
2498  end;  end;
2499    
2500    
2501    
2502  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2503  begin  begin
2504    if chkScanTjekkode.Checked then    if chkScanTjekkode.Checked then
# Line 2596  begin Line 2511  begin
2511    end;    end;
2512  end;  end;
2513    
2514  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2515  begin  begin
2516        Scanningtype := '5';        Scanningtype := '5';
2517        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2520  end;
2520    
2521  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2522  begin  begin
2523      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2524      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2525      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2526    
# Line 2617  begin Line 2532  begin
2532        // 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)
2533        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2534        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2535        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2536      end;      end;
2537  // 20150317: slut  // 20150317: slut
2538  end;  end;
# Line 2632  begin Line 2547  begin
2547    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2548    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...');
2549    
2550          // Tjekker urls    try
2551          logTekst := 'Tjekker urls.';      // Tjekker urls
2552          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2553          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2554        SkrivScanningLogFil(logTekst);
2555    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if 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;  
2556    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if 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;  
2557    
2558          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2559          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2560          begin      begin
2561            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2562            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;  
2563    
2564          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2565          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2566          begin      begin
2567            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2568            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;  
2569    
2570          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2571          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2572          begin      begin
2573            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2574            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;  
2575    
2576          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2577          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2578          begin      begin
2579            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2580            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;  
2581    
2582          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2583          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2584          or (PanelValg4.Enabled = true) then      begin
2585          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2586            if 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;  
2587    
2588          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2589          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2590          begin      begin
2591            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2592            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;  
2593    
2594          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2595          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2596          begin      begin
2597            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2598            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;  
2599    
2600          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2601          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2602          begin      begin
2603            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2604            begin      end;
             logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;  
             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;  
2605    
2606        // Tjekker UrlPakkeshopManglendeReturScanninger
2607        if PanelValg6.Enabled = true then
2608        begin
2609          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2610        end;
2611    
2612          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2613          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2614          begin      begin
2615            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2616            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2617              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;      end;
             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;  
2618    
2619        // Tjekker UrlEKLoverforsel
2620        if PanelValg1.Enabled = true then
2621        begin
2622          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2623        end;
2624    
         // Tjekker UrlFindPakketype  
         if 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;  
2625    
2626          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2627          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2628          begin      begin
2629            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2630            SkrivScanningLogFil(logTekst);      end;
         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;  
2631    
         if urlFejl > 0 then  
         begin  
           TjekUrls := '-';   // markerer at der var fejl  
         end  
         else  
         begin  
           logTekst := 'urls er ok';  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
2632    
2633        // Tjekker UrlFindPakketype
2634        TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2635    
2636        // Tjekker UrlSendPrograminfo
2637        TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2638    
2639    
2640    
2641        logTekst := 'urls er ok';
2642        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2643        SkrivScanningLogFil(logTekst);
2644    
2645      Except
2646        Config.TjekUrls := '-';   // markerer at der var fejl
2647    
2648      end;
2649  end;  end;
2650    
2651  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2652  var  const
2653     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2654  begin  begin
2655     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2656     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2657     Result := SystemTimeToDateTime(SystemTime) ;    begin
2658        logTekst := UrlNavn + ' accepteret: ' + Url;
2659        SkrivScanningLogFil(logTekst);
2660      end
2661      else
2662      begin
2663        inc(urlFejl);   // Optæller antal fejl
2664        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2665        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2666        if Config.TjekUrls = '1' then
2667        begin
2668          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2669        end;
2670    
2671        SkrivScanningLogFil(logTekst);
2672    
2673        if Config.TjekUrls = '1' then
2674        begin
2675          ShowMessage(logTekst);
2676          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2677          Application.Terminate;
2678    
2679          raise Exception.Create('UrlFejl');
2680    
2681        end;
2682      end;
2683    
2684  end;  end;
2685    
2686    
2687    
2688  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2689  var  var
2690    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2701  begin
2701      repeat      repeat
2702        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2703        begin        begin
2704    
2705          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2706          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2707          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2708          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2709          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2710          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3077  begin Line 2741  begin
2741    end;    end;
2742  end;  end;
2743    
2744  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2745  begin  begin
2746    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2747    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2748    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2749    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2750    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2751    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3090  begin Line 2754  begin
2754    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2755    begin    begin
2756       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2757       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
2758       Application.Terminate;       Application.Terminate;
2759       exit;       exit;
2760    end;    end;
# Line 3099  begin Line 2763  begin
2763  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2764    if Farve <> '' then    if Farve <> '' then
2765    begin    begin
2766       MainForm.Color := 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  
2767    end;    end;
2768    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2769    begin    begin
2770       InitLillePakke();       InitLillePakke();
2771    end;    end;
# Line 3173  end; Line 2827  end;
2827    
2828  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2829  begin  begin
 // 20150311: start  
 (*  
   if PanelValgA.Color = clBtnFace then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
2830  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2831  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2832       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2833       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2834       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2835  // 20150311: slut  
2836    
2837    
2838  end;  end;
2839    
2840  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2841  begin  begin
2842        Scanningtype := '1';        Scanningtype := '1';
2843        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3215  var Line 2856  var
2856    Leveringssted : String;    Leveringssted : String;
2857    orgTjekUrls : String;    orgTjekUrls : String;
2858  begin  begin
2859    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2860    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2861    begin    begin
2862      TjekkerUrls();      TjekkerUrls();
2863    end;    end;
2864    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2865    begin    begin
2866      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2867      RuteNummer := '';      RuteNummer := '';
# Line 3229  begin Line 2870  begin
2870      Koreliste := '';      Koreliste := '';
2871      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2872      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2873      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2874      MainForm.Color := clRed;      MainForm.Color := clRed;
2875      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2876    end    end
2877    else    else
2878    begin    begin
# Line 3242  begin Line 2883  begin
2883      SmsKode := '999999';      SmsKode := '999999';
2884      DBKbane := '999';      DBKbane := '999';
2885      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2886    
2887    
2888      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2889      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2890    end;    end;
2891    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2892    
2893  end;  end;
2894    
# Line 3259  var Line 2902  var
2902    SmsKode : String;    SmsKode : String;
2903    DBKbane : String;    DBKbane : String;
2904    Leveringssted : String;    Leveringssted : String;
2905      LabelData : TLabelData;
2906  begin  begin
2907    RuteNummer := 'Rutenr';    RuteNummer := 'Rutenr';
2908    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
# Line 3266  begin Line 2910  begin
2910    Falsk := False;    Falsk := False;
2911    
2912    
2913    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2914    begin    begin
2915      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2916    end    end
2917    else if PrinterNavn = 'Ingen' then  //  else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2918    begin  //  begin
2919      ShowMessage('Der er fravalgt printer i dette program.');  //    ShowMessage('Der er fravalgt printer i dette program.');
2920    end  //  end
2921    else    else
2922    begin    begin
2923      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2924      SmsKode := '999999';  //    SmsKode := '999999';
2925      DBKbane := '999';  //    DBKbane := '999';
2926      Leveringssted := 'XXX';  //    Leveringssted := 'XXX';
2927      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);  //    PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2928      CheckPrintQue('Test');  
2929    
2930        LabelData := TLabelData.Create(nil);
2931        LabelData.LabelType := 'simpel';
2932        LabelData.SimpelLinie1 := '999999';
2933        LabelData.SimpelLinie2 := '999';
2934        LabelData.SimpelLinie3 := 'xxx';
2935        LabelPrint.PrintLabelData(Labeldata);
2936    
2937        LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2938    
2939        LabelData.Free();
2940    
2941    end;    end;
2942    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2943  end;  end;
2944    
2945  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2946  begin  begin
2947    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2948    begin    begin
2949      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2950    end    end
2951    else    else
2952    begin    begin
# Line 3299  begin Line 2955  begin
2955    end;    end;
2956  end;  end;
2957    
2958  {  
  VERY fast split function  
  this function returns part of a string based on  
  constant defineable delimiters, such as ";". So  
  SPLIT('this is a test ',' ',3) = 'is' or  
  SPLIT('data;another;yet;again;more;',';',4) = 'yet'  
   
  Split function shifts index integer by two to  
  be compatible with commonly used PD split function  
  gpl 2004 / Juhani Suhonen  
 }  
 function TMainForm.split(input: string; schar: Char; s: Integer): string;  
 var  
   c: array of Integer;  
   b, t: Integer;  
 begin  
   Dec(s, 2);  // for compatibility with very old & slow split function  
   t := 0;     // variable T needs to be initialized...  
   setlength(c, Length(input));  
   for b := 0 to pred(High(c)) do  
   begin  
     c[b + 1] := posex(schar, input, succ(c[b]));  
     // BREAK LOOP if posex looped (position before previous)  
     // or wanted position reached..  
     if (c[b + 1] < c[b]) or (s < t) then break  
     else  
       Inc(t);  
   end;  
   Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));  
 end;  
2959    
2960  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2961  const  const
# Line 3337  var Line 2964  var
2964   tekst, filversion : String;   tekst, filversion : String;
2965  begin  begin
2966    
2967    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2968    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
2969    
2970    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 2986  begin
2986          end          end
2987          else          else
2988          begin          begin
2989            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2990          end;          end;
2991      end      end
2992      else      else
2993      begin      begin
2994        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2995      end;      end;
2996    end;    end;
2997    
# Line 3373  begin Line 3000  begin
3000      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
3001      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
3002      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
3003      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
3004    end;    end;
3005    
3006    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3007    
3008  end;  end;
3009    
3010    
3011  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3012    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3013  var  var
# Line 3432  begin Line 3060  begin
3060    
3061    if FileExists(fileName) then    if FileExists(fileName) then
3062    begin    begin
3063      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3064      begin      begin
3065        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3066        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3084  begin
3084    
3085    if FileExists(fileName) then    if FileExists(fileName) then
3086    begin    begin
3087      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3088      begin      begin
3089        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3090        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3091      end      end
3092      else      else
3093      begin      begin
3094        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3095      end;      end;
3096    end    end
3097    else    else
# Line 3472  begin Line 3100  begin
3100    end;    end;
3101  end;  end;
3102    
3103    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3104    begin
3105      Scanningtype := '7';
3106      NulstilAutomatiskValg();
3107      InitIndleveringskode();
3108    end;
3109    
3110  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3111  begin  begin
3112    
# Line 3487  begin Line 3122  begin
3122    
3123  end;  end;
3124    
3125  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3126  begin  begin
3127        Scanningtype := '2';        Scanningtype := '2';
3128        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3129        InitReturFraDao();        InitReturFraDao();
3130  end;  end;
3131    
3132  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3133  begin  begin
3134        Scanningtype := '6';        Scanningtype := '6';
3135        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3138  end;
3138    
3139  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3140  begin  begin
3141        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3142        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3143        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3144        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3145        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3146        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3147    
# Line 3517  begin Line 3152  begin
3152        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3153        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3154        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3155        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3156        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3157        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3158        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3159        ListBox1.Visible := true;        ListBox1.Visible := true;
3160        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3161        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3162        InitLillePakke();        InitLillePakke();
3163        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3164    
3165          chkForstorTilDirekte.Checked := false;
3166          chkForstorTilDirekte.Enabled := false;
3167    
3168        if BladhusSted = 0 then        if BladhusSted = 0 then
3169        begin        begin
3170          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3535  end; Line 3174  end;
3174    
3175  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3176  begin  begin
3177        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3178        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3179        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3180        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3181        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3182        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3183    
# Line 3549  begin Line 3188  begin
3188        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3189        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3190        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3191        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3192        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3193        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3194        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3195        ListBox1.Visible := true;        ListBox1.Visible := true;
3196        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3197        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3198        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3199    
3200          chkForstorTilDirekte.Checked := false;
3201          chkForstorTilDirekte.Enabled := false;
3202    
3203        InitLillePakke();        InitLillePakke();
3204  end;  end;
3205    
3206  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3207  begin  begin
3208        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3209        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3210        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3211        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3212        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3213        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3214    
# Line 3575  begin Line 3218  begin
3218        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3219        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3220        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3221        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3222        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3223        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3224        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3225        ListBox1.Visible := true;        ListBox1.Visible := true;
3226        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3227        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3228        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3229    
3230          chkForstorTilDirekte.Checked := false;
3231          chkForstorTilDirekte.Enabled := false;
3232    
3233        InitLillePakke();        InitLillePakke();
3234  end;  end;
3235    
3236  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3237  begin  begin
3238        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3239        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3240        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3241        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3242        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3243        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3244    
# Line 3602  begin Line 3249  begin
3249        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3250        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3251        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3252        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3253        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3254        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3255        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3256        ListBox1.Visible := true;        ListBox1.Visible := true;
3257        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3258        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3259        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3260        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3261        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3262        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3263        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3264    
3265          chkForstorTilDirekte.Checked := false;
3266          chkForstorTilDirekte.Enabled := true;
3267    
3268        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3269        begin        begin
3270            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3624  end; Line 3275  end;
3275    
3276  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3277  begin  begin
3278        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3279        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3280        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3281        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3282        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3283        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3284    
# Line 3638  begin Line 3289  begin
3289        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3290        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3291        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3292        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3293        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3294        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3295        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3296        ListBox1.Visible := true;        ListBox1.Visible := true;
3297        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3298        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3299        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3300    
3301          BtnEKLoverforsel.Enabled := true;
3302    
3303        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3304          chkForstorTilDirekte.Enabled := true;
3305    
3306        InitLillePakke();        InitLillePakke();
3307        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3661  end; Line 3315  end;
3315    
3316  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3317  begin  begin
3318        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3319        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3320        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3321        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3322        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3323        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3324    
# Line 3675  begin Line 3329  begin
3329        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3330        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3331        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3332        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3333        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3334        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3335        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3336        ListBox1.Visible := true;        ListBox1.Visible := true;
3337        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3338        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3339        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3340        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3341    
3342          chkForstorTilDirekte.Checked := false;
3343          chkForstorTilDirekte.Enabled := false;
3344    
3345    
3346        InitLillePakke();        InitLillePakke();
3347        IndlesScanningLogFil();        IndlesScanningLogFil();
3348        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3694  begin Line 3353  begin
3353        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3354  end;  end;
3355    
3356  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3357  begin  begin
3358        Scanningtype := '3';        Scanningtype := '3';
3359        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3362  end;
3362    
3363  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3364  begin  begin
3365        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3366        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3367        PakkeshopNulstil.Visible := false;  
3368        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        btnNulstil.Visible := false;
3369          InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3370        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3371        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3372    
# Line 3720  begin Line 3380  begin
3380    
3381    
3382    
3383        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3384        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3385        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3386        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3387        ListBox1.Visible := true;        ListBox1.Visible := true;
3388        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3389    
3390        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3391        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3392        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3393    
3394          chkForstorTilDirekte.Checked := false;
3395          chkForstorTilDirekte.Enabled := false;
3396    
3397    
3398        InitLillePakke();        InitLillePakke();
3399        IndlesScanningLogFil();        IndlesScanningLogFil();
3400        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3741  begin Line 3406  begin
3406  end;  end;
3407    
3408    
3409  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3410  begin  begin
3411    InitStorPakke();    InitStorPakke();
3412  end;  end;
3413    
3414  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3415  begin  begin
3416    InitLillePakke();    InitLillePakke();
3417  end;  end;
# Line 3754  end; Line 3419  end;
3419  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3420  begin  begin
3421    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3422    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3423  //  Stregkode := '';  //  Stregkode := '';
3424  end;  end;
3425    
3426  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3427  begin  begin
3428    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3429    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3430  // 20150310: start  // 20150310: start
3431  //  Stregkode := '';  //  Stregkode := '';
3432  // 20150310: slut  // 20150310: slut
3433  end;  end;
3434    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';  
   const Fmt: String = '%d.%d.%d.%d'): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Word;  
   S : String;  
 begin  
   // set default value  
   Result := '';  
   // get filename of exe/dll if no filename is specified  
   sFileName := Trim(FileName);  
   if (sFileName = '') then  
     sFileName := GetModuleName(HInstance);  
   // get size of version info (0 if no version info exists)  
   iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  
   if (iBufferSize > 0) then  
   begin  
     GetMem(pBuffer, iBufferSize);  
     try  
     // get fixed file info (language independent)  
     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);  
     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);  
     // read version blocks  
     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     finally  
       FreeMem(pBuffer);  
     end;  
     // format result string  
     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);  
3435    
     // Hvorfor virker ovenstående ikke ???  
     S := '';  
     Str(iVer[1], Result);  
     S := S+Result+'.';  
     Str(iVer[2], Result);  
     S := S+Result+'.';  
     Str(iVer[3], Result);  
     S := S+Result+'.';  
     Str(iVer[4], Result);  
     S := S+Result+'';  
     Result := S;  
   end;  
 end;  
3436    
3437  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3438  begin  begin
# Line 3845  end; Line 3445  end;
3445    
3446  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3447  begin  begin
3448     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3449     begin     begin
3450       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3451     end     end
3452     else     else
3453     begin     begin
# Line 3859  procedure TMainForm.Testlyd2Click(Sender Line 3459  procedure TMainForm.Testlyd2Click(Sender
3459  begin  begin
3460    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3461    begin    begin
3462       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3463       begin       begin
3464         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3465       end       end
3466       else       else
3467       begin       begin
# Line 3870  begin Line 3470  begin
3470       exit;       exit;
3471    end;    end;
3472    
3473    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3474       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3475       begin       begin
3476         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3477       end       end
3478       else       else
3479       begin       begin
3480         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3481       end;       end;
3482    if Storepakker1.Checked then    if menuStorePakker.Checked then
3483       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3484       begin       begin
3485         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3486       end       end
3487       else       else
3488       begin       begin
# Line 3891  begin Line 3491  begin
3491  end;  end;
3492    
3493    
3494  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3495  begin  begin
3496        Scanningtype := '4';        Scanningtype := '4';
3497        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3503  begin;
3503    CheckCode();    CheckCode();
3504  end;  end;
3505    
3506  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3507  var  var
3508    WebSvar : String;    WebSvar : String;
3509    URLStr : String;    URLStr : String;
# Line 3913  var Line 3513  var
3513    status, kommentar : String;    status, kommentar : String;
3514    
3515  begin  begin
3516      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3517    
3518      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3519      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3520      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3521      StedKode := Sted;      StedKode := Sted;
3522      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3523  // 20150330: start  
3524      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3525      begin      begin
3526        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3527      end;      end;
3528  // 20150330: slut  
3529    
3530      try      try
3531      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3576  begin
3576        end;        end;
3577      end;      end;
3578    
3579      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3580    
3581      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3582    
3583      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3584      if status = 'Fejl' then      if status = 'Fejl' then
3585      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3586         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3587         MainForm.Color := clRed;         MainForm.Color := clRed;
3588         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3589         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 3993  begin Line 3593  begin
3593           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3594         end;         end;
3595         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3596         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3597      end;      end;
3598    
3599  end;  end;
# Line 4017  begin Line 3617  begin
3617    else    else
3618      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3619  }  }
3620    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3621    
3622    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3623    CheckCode();    CheckCode();
# Line 4025  end; Line 3625  end;
3625    
3626  end;  end;
3627    
 function TMainForm.BarCodeValid (ACode: string): boolean;  
 var  
    I: integer;  
    SumOdd, SumEven: integer;  
    ADigit, AChecksumDigit: integer;  
 begin  
    SumOdd := 0;  
    SumEven := 0;  
    for I := 1 to (Length (ACode) - 1) do begin  
       ADigit := StrToIntDef (ACode [I], 0);  
       if (I MOD 2 = 0) then begin  
          SumEven := SumEven + ADigit;  
       end else begin  
          SumOdd := SumOdd + ADigit;  
       end; {if}  
    end; {for}  
    AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);  
    Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);  
 end; {--BarCodeValid--}  
   
 { used for EAN 8/13 }  
 function TMainForm.CheckSumModulo10(const data:string):string;  
         var i,fak,sum : Integer;  
 begin  
         sum := 0;  
         fak := Length(data);  
         for i:=1 to Length(data) do  
         begin  
                 if (fak mod 2) = 0 then  
                         sum := sum + (StrToInt(data[i])*1)  
                 else  
                         sum := sum + (StrToInt(data[i])*3);  
                 dec(fak);  
         end;  
         if (sum mod 10) = 0 then  
                 result := data+'0'  
         else  
                 result := data+IntToStr(10-(sum mod 10));  
 end;  
3628    
3629  //  //
3630  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4102  begin
4102    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4103  end;  end;
4104    
4105  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4106  begin  begin
4107      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4108      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
4109  end;  end;
4110    
4111  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4112  const  const
4113    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4114    
# Line 4556  begin Line 4117  begin
4117      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
4118  end;  end;
4119    
4120  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4121  begin  begin
4122      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4123      begin      begin
# Line 4565  begin Line 4126  begin
4126      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
4127  end;  end;
4128    
4129  function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
 var  
   S2: string;  
 begin  
   Result  := 0;  
   S2 := S + Border;  
   repeat  
     SetLength(A, Length(A) + 1);  
     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);  
     Delete(S2, 1,Length(a[Result] + Border));  
     Inc(Result);  
   until S2 = '';  
 end;  
4130    
4131  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4132  var  var
# Line 4588  var Line 4137  var
4137    I: Integer;    I: Integer;
4138    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4139    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4140    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4141    pakketyper : TStrings;    //pakketyper : TStrings;
4142      pakketyper : TDictionary<String, Integer>;
4143      tmpAntal : Integer;
4144    
4145     time, timeSamlet : TTimingHelper;
4146    
4147    
4148    antlin : Integer;    antlin : Integer;
4149    
4150    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4151    
4152    XmlFelter : TStrings;    //XmlFelter : TStrings;
4153      XmlFelter : TDictionary<String, Integer>;
4154    
4155   begin   begin
4156      XmlFelter := TStringList.Create;  
4157      pakketyper := TStringList.Create;  
4158        XmlFelter := TDictionary<String, Integer>.Create;
4159        pakketyper := TDictionary<String, Integer>.Create;
4160    
4161      linienr := 0;      linienr := 0;
4162      ListBox2.Clear;      ListBox2.Clear;
4163      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 4613  var Line 4172  var
4172          StedKode := Sted;          StedKode := Sted;
4173        end;        end;
4174    
4175          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4176    
4177    
4178      if (Scanningtype = '6') then  
4179        if (Scanningtype = '7') then
4180         begin
4181          URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4182         end
4183        else if (Scanningtype = '6') then
4184       begin       begin
4185        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4186       end       end
4187      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4188       begin       begin
4189        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4190       end       end
4191      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4192       begin       begin
4193        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4194       end       end
4195      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4196       begin       begin
4197        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4198       end       end
4199      else      else
4200       begin       begin
# Line 4636  var Line 4202  var
4202       end;       end;
4203  // 20150310: slut  // 20150310: slut
4204    
4205        time := TTimingHelper.create();        //DEBUG
4206        timeSamlet := TTimingHelper.create();        //DEBUG
4207    
4208      try      try
4209      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4210  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4645  var Line 4214  var
4214        begin        begin
4215          // 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
4216          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4217    
4218    
4219    
4220        end;        end;
4221        on e:exception do        on e:exception do
4222        begin        begin
# Line 4655  var Line 4227  var
4227        end;        end;
4228      end;      end;
4229      try      try
4230          time.stop('HTTP Load');     //DEBUG
4231    
4232        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4233    
4234          time.stop('XML Load');     //DEBUG
4235    
4236    
4237    
4238    
4239    
4240    
4241        antlin := 0;        antlin := 0;
4242        antlinIdag := 0;        antlinIdag := 0;
# Line 4667  var Line 4247  var
4247            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4248              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4249              begin              begin
4250                 antlin := antlin + 1;                 Inc(antlin);
4251                 // 20150306: start                 // 20150306: start
4252                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4253                begin                begin
4254                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4255                   begin                   begin
4256                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4257                   end                   end
4258                   else                   else
4259                   begin                   begin
4260                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4261                   end;                   end;
4262                end;                end;
4263                 // 20150306: slut                 // 20150306: slut
4264              end;              end;
4265            end;            end;
4266            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4267                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4268                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4269                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4270                  end
4271                else                else
4272                  XmlFelter.values[Node.NodeName] := '1';                begin
4273                    XmlFelter.Add(Node.NodeName, 1);
4274                  end;
4275    
4276        end;        end;
4277        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4279  var
4279        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4280        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4281    
4282          time.stop('Antal Linier');//DEBUG
4283    
4284          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4285    
4286        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4287        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4288        begin        begin
# Line 4702  var Line 4291  var
4291        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4292    
4293        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4294          time.stop('Antal Linier2');//DEBUG
4295    
4296    
4297        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4298            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4299            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4301  var
4301                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4302                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4303                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4304              end;              end
4305              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4306                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4307                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4308                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4309              end;              end
4310              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4311                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4312                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4313                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4314              end;              end
4315              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4316                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4317                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4318                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4319              end;              end
4320              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4321                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4322                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4323                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4324                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4325                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4326                    pakketyper.TryGetValue(pakketype, tmpAntal);
4327                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4328                  end
4329                else                else
4330                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4331              end;              end
4332              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4333                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4334                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4335                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4336                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4337                  begin                  begin
4338  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4339                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4340                    begin                    begin
4341                      stregkoderMedTjekkodeArray[linienr] := 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
4342                    end                    end
4343                    else                    else
4344                    begin                    begin
# Line 4753  var Line 4347  var
4347                    linienr := linienr + 1;                    linienr := linienr + 1;
4348                  end;                  end;
4349              end;              end;
4350    
4351    
4352              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4353              begin              begin
4354                if (ScanningType = '1') then                if (ScanningType = '1') then
4355                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)                  //ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4356                else if (ScanningType = '4') then                else if (ScanningType = '4') then
4357                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)                  //ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4358                else if (ScanningType = '5') then                else if (ScanningType = '5') then
4359                  ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)                  //ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4360                else                else
4361                  ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);                  //ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4362                antalFelterFundet := 0;                antalFelterFundet := 0;
4363                tjekkodestatus := '';                tjekkodestatus := '';
4364              end;              end;
4365            end;            end;
4366        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4367    
4368          // Free up the list object  
4369          time.stop('Fyld Listbox2');//DEBUG
4370    
4371    
4372          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4373    
4374    
4375          for pakketype in pakketyper.Keys do
4376          begin
4377            pakketyper.TryGetValue(pakketype, tmpAntal);
4378            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4379          end;
4380    
4381            // Free up the dictionary object
4382        pakketyper.Free;        pakketyper.Free;
4383    
4384    
4385    
4386  //      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.');
4387        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4388        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4880  var Line 4488  var
4488        end;        end;
4489      end;      end;
4490    
4491        time.stop('Done');//DEBUG
4492        timeSamlet.stop('SamletTid');//DEBUG
4493    
4494    
4495  end;  end;
4496    
4497  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 4934  var Line 4546  var
4546     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4547     imorgenYmd : string;     imorgenYmd : string;
4548     logFilnavn : string;     logFilnavn : string;
4549      error : Integer;     //error : Integer;
4550    
4551  begin  begin
4552    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4638  begin
4638          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4639          S := buffer;          S := buffer;
4640          SetLength(A,0);          SetLength(A,0);
4641          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4642          if (length(A) < 2) then          if (length(A) < 2) then
4643          begin          begin
4644            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4645          end;          end;
4646            if (length(A) > 1) then            if (length(A) > 1) then
4647            begin            begin
# Line 5055  begin Line 4667  begin
4667          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4668          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4669          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4670          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4671        end;        end;
4672      end;      end;
4673    end    end
# Line 5064  begin Line 4676  begin
4676        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4677        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4678        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4679        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4680    end;    end;
4681  end;  end;
4682    
# Line 5103  begin Line 4715  begin
4715          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4716          S := buffer;          S := buffer;
4717          SetLength(A,0);          SetLength(A,0);
4718          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4719          if (length(A) < 3) then          if (length(A) < 3) then
4720          begin          begin
4721            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4722          end;          end;
4723          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4724          begin          begin
# Line 5135  begin Line 4747  begin
4747          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4748          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4749          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4750          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4751        end;        end;
4752      end;      end;
4753    end    end
# Line 5144  begin Line 4756  begin
4756        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4757        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4758        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4759        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4760    end;    end;
4761  end;  end;
4762    
# Line 5202  procedure TMainForm.VisAlarmSkaerm(strMe Line 4814  procedure TMainForm.VisAlarmSkaerm(strMe
4814  begin  begin
4815    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4816    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4817    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4818    MainForm.Color := clRed;    MainForm.Color := clRed;
4819    
4820    
4821    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4822    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4823    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4824    PakkeshopNulstil.Visible := true;  
4825      if (strMessage <> '') then
4826      begin
4827        ListBox1.Items.Insert(0, strMessage);
4828        KommentarST.Caption := strMessage;
4829      end;
4830    
4831      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4832    
4833  end;  end;
4834    
4835  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4889  begin
4889    result := svar;    result := svar;
4890  end;  end;
4891    
 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;  
4892    
4893  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4894  begin  begin
# Line 5301  begin Line 4902  begin
4902    end;    end;
4903  end;  end;
4904    
4905  function TMainForm.AdobeReaderExists: Boolean;  
4906  var  //Nedarvet fra IParentForm
4907    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4908  begin  begin
4909    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4910  end;  end;
4911    
4912  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4913  type  procedure TMainForm.LogMessage( msg : string);
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4914  begin  begin
4915      ListBox1.Items.Insert(0, msg);
4916      SkrivScanningLogFil(msg);
4917    end;
4918    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4919    
4920    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4921    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4922      printerTxt := 'Der er fravalgt printer i dette program';  begin
4923      ListBox1.Items.Insert(0,printerTxt);  
4924      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4925    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4926    begin    begin
4927      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4928      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4929      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4930    end    end
4931    else    else
4932    begin    begin
4933      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4934      try      PrinterstatusStaticText1.Color := clWhite;
4935        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       pJ := AllocMem(bytesNeeded);  
       if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  
         RaiseLastWin32Error;  
   
       if numJobs = 0 then  
       begin  
         if (tjektype = 'Test') then  
         begin  
           logTekst := printerTxt + ': Ingen dokumenter i kø';  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         PrinterstatusStaticText1.Caption := '';  
         PrinterstatusStaticText1.Color := MainForm.Color;  
       end  
       else   // så er der kø til printeren  
       begin  
         printerTxt := SavePChar(pJ^[0].pPrinterName);  
         if (tjektype = 'Opstart') or (tjektype = 'Test') then  
         begin  
           logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         for i := 0 to Pred(numJobs) do  
         begin  
           printerTxt := SavePChar(pJ^[i].pPrinterName);  
           statusTxt := 'Ukendt';  
           if (IntToStr(pJ^[i].Status) = '0') then  
             statusTxt := 'Venter...';  
           if (IntToStr(pJ^[i].Status) = '4096') then  
             statusTxt := 'Printer...';  
           if (IntToStr(pJ^[i].Status) = '8210') then  
             statusTxt := 'Printerfejl';  
           if (IntToStr(pJ^[i].Status) = '8214') then  
             statusTxt := 'Sletter print...';  
   
           dokumentTxt := SavePChar(pJ^[i].pDocument);  
           if (dokumentTxt = '') then  
             dokumentTxt := 'Uden navn';  
   
           if (tjektype = 'Opstart') or (tjektype = 'Test') then  
           begin  
             logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',  
                                     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);  
             ListBox1.Items.Insert(0,logTekst);  
             SkrivScanningLogFil(logTekst);  
           end;  
   
           if (i = 0) then  
           begin  
             PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  
             PrinterstatusStaticText1.Font.Color := clBlack;  
             PrinterstatusStaticText1.Color := MainForm.Color;  
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
   
         end;  
       end  
       finally  
         ClosePrinter(hPrinter);  
     end;  
4936    end;    end;
4937  end;  end;
4938    
4939  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4940  var  function TMainForm.GetFormObject() : TForm;
4941    hSession, hfile, hRequest: hInternet;  begin
4942    dwindex,dwcodelen :dword;    Result := self;
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
4943  end;  end;
4944    
4945  // 20150310: start  //Nedarvet fra IParentForm
4946  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetXMLDocument() : TXMLDocument;
 var  
    R: TRect;  
    Rgn: HRGN;  
4947  begin  begin
4948     with Control do    Result := XMLDocument1
    begin  
      R := ClientRect;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;  
      rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;  
      Perform(EM_GETRECT, 0, lParam(@r)) ;  
      InflateRect(r, - 4, - 4) ;  
      Perform(EM_SETRECTNP, 0, lParam(@r)) ;  
      SetWindowRgn(Handle, rgn, True) ;  
      Invalidate;  
    end;  
4949  end;  end;
4950  // 20150310: slut  
4951    
4952  end.  end.
4953    

Legend:
Removed from v.2660  
changed lines
  Added in v.3123

  ViewVC Help
Powered by ViewVC 1.1.20