/[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 3131 by torben, Thu Oct 20 07:31:23 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 IndlesManglendeScanningerAntal();
251        procedure IndlesManglendeScanningerListe();
252      procedure IndlesRuteskiftFil(var filnavn : string);      procedure IndlesRuteskiftFil(var filnavn : string);
253      procedure IndlesKontrolFil(var filnavn : string);      procedure IndlesKontrolFil(var filnavn : string);
254      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
# Line 262  type Line 256  type
256      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
257      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
258    
259    
260    public    public
261      { Public declarations }      { Public declarations }
262    end;    end;
263    
264    
265  var  var
266    MainForm: TMainForm;    MainForm: TMainForm;
267    
# Line 279  var Line 275  var
275  implementation  implementation
276  {$R *.dfm}  {$R *.dfm}
277    
278  function TMainForm.TColorToHex(Color : TColor) : string;  
279  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;  
280    
281  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
282  begin  begin
283    
284  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
285        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
286    
287    
288    
289    
290      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
291  // 20150309: slut  
292    
293      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
294      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 332  begin
332        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
333      end;      end;
334    
335      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
336    
337      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
338      begin      begin
# Line 374  begin Line 360  begin
360        else if (Sted = 'BR') then        else if (Sted = 'BR') then
361          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
362        else if (Sted = 'BK') then        else if (Sted = 'BK') then
363          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
364          else if (Sted = 'TK') then
365            begin StedNavn := 'BK/Trykkompagniet: '; end
366        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
367          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
368        else if (Sted = '1') then        else if (Sted = '1') then
369          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
370        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 388  begin
388    
389      StartScreen();      StartScreen();
390      MainForm.Caption := Titel;      MainForm.Caption := Titel;
391      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
392      MainForm.Farve := Farve;      MainForm.Farve := Farve;
393      MainForm.Titel := Titel;      MainForm.Titel := Titel;
394      MainForm.Url := Url;      MainForm.Url := Url;
# Line 410  begin Line 398  begin
398        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
399      end;      end;
400    
401      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
402        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
403      else      else
404        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 421  begin Line 409  begin
409    
410      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
411      begin      begin
412        if (ScanTjekkode = '1') then        if (Config.ScanTjekkode = '1') then
413        begin        begin
414          chkScanTjekkode.Checked := true;          chkScanTjekkode.Checked := true;
415          chkScanTjekkode.Enabled := true;          chkScanTjekkode.Enabled := true;
# Line 435  begin Line 423  begin
423        end;        end;
424      end;      end;
425    
426      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
427      begin      begin
428        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
429        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 448  begin
448          end          end
449          else          else
450          begin          begin
451            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
452          end;          end;
453          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
454        end        end
455        else        else
456        begin        begin
457          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
458          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
459        end;        end;
460      end;      end;
461    
462    
463  end;  end;
464    
465  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 492  begin Line 481  begin
481    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
482  end;  end;
483    
484  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
485  begin  begin
486    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
487    begin    begin
488       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
489       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 507  begin Line 496  begin
496    
497  end;  end;
498    
499  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
500  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;  
 *)  
501  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
502  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
503       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
504       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
505       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
506  end;  end;
507    
508    
509    
510    //InitForm kaldes før FormCreate
511  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
512  const  const
513    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
514  var  var
   printerInd : integer;  
515    gemScanningtype : String;    gemScanningtype : String;
516    
517  begin  begin
518    
519    
520    // Initierer nogle variabler    // Initierer nogle variabler
521    BladhusSted := 00;    BladhusSted := 00;
522    Application.ShowHint := True;    Application.ShowHint := True;
523    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
524    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
525    
526    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
527    
528    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
529    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
530    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
531    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
532    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
533    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
534    
535    
536    // 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 542  begin
542    
543  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
544    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
545    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 920;
546    
547      Config := TConfiguration.Create();
548      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
549      Config.Sted := Sted;
550    
551    // Læser parametre fra ini filen    // Læser parametre fra ini filen
552    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
553    try    try
554    
555    
556      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
557      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
558      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
559      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
560      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      Scanningtype := 'A'; //hardcoded
561      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      Pakketype := '0';
562      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
563      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
564      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
565      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');  
566    
567      if (SkrivLog = '1') then      if (SkrivLog = '1') then
568      begin      begin
569        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);
570        try        try
571          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
572          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
573          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
574          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
575          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
576          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 641  begin Line 582  begin
582    
583      if Scanningtype = 'A' then      if Scanningtype = 'A' then
584      begin      begin
585        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
586        Scanningtype := '1';        Scanningtype := '1';
587        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
588        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
589      end;      end;
590    
     if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
591    
592      if SporgEfterBoghandler = '1' then  
593        if Config.SporgEfterBoghandler = '1' then
594      begin      begin
595        chkSporgEfterKunde.Checked := true;        chkSporgEfterKunde.Checked := true;
596        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
# Line 728  begin Line 601  begin
601        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
602      end;      end;
603    
604      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
605      begin      begin
606        chkScanTjekkode.Checked := true;        chkScanTjekkode.Checked := true;
607        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
# Line 739  begin Line 612  begin
612        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
613      end;      end;
614    
615      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
616      begin      begin
617        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
618        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
619        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
620      end;      end;
# Line 768  begin Line 641  begin
641      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
642      // *************************** //      // *************************** //
643    
644    {$IfDef STED_BK}
645        SpecialVersionSted := 'BK';
646    {$EndIf}
647    {$IfDef STED_TK}
648        SpecialVersionSted := 'TK';// BK-Trykkompagniet
649    {$EndIf}
650    {$IfDef STED_DBK}
651        SpecialVersionSted := 'DBK';
652    {$EndIf}
653    {$IfDef STED_FD}
654        SpecialVersionSted := 'FD';
655    {$EndIf}
656    {$IfDef STED_NS}
657        SpecialVersionSted := 'NS';
658    {$EndIf}
659    
660      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
661      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
662      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 672  begin
672      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
673      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
674    
 // 20150313: start  
675      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
676      begin      begin
677         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
678         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
679    
680          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
681          Sted := SpecialVersionSted;
682         // her skal vi også disable de knapper BK ikke kan bruge
683          PanelValg2.Enabled := false;
684          PanelValg2.Font.Color := clInactiveCaption;
685          PanelValg3.Enabled := false;
686          PanelValg3.Font.Color := clInactiveCaption;
687          //PanelValg6.Enabled := false;
688          //PanelValg6.Font.Color := clInactiveCaption;
689    
690         // her skal vi også disable de menupunkter FD ikke kan bruge
691          menuNatxpressReturDAO1.Enabled := false;
692          menuNatxpressReturfraKunde1.Enabled := false;
693    
694          //Returpakkerfrapakkeshop1.Enabled := false;
695      end;      end;
696    
697      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
698      begin      begin
699         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
700         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
701      end;  
 // 20150313: slut  
702    
     if SpecialVersionSted = 'BK' then  
     begin  
703        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
704        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
705       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 805  begin Line 707  begin
707        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
708        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
709        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
710        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
711        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
712       // her skal vi også disable de menupunkter BK ikke kan bruge  
713        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
714        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
715        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
716        if SpecialVersionScanningtype = 'A' then  
717        begin        //Returpakkerfrapakkeshop1.Enabled := false;
718           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
719      end;      end;
720    
721      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
722      begin      begin
723        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
724        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
725        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
726        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
727        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
728        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
729        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
730        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
731        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
       PanelValg6.Enabled := false;  
       PanelValg6.Font.Color := clInactiveCaption;  
      // her skal vi også disable de menupunkter DBK ikke kan bruge  
       ReturpakkerfraDAO1.Enabled := false;  
       Returpakkerfraboghandler1.Enabled := false;  
732    
733        Pakkeshoplevering1.Enabled := false;       // her skal vi også disable de menupunkter BK ikke kan bruge
734        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
735          menuNatxpressReturfraKunde1.Enabled := false;
736    
737          //Returpakkerfrapakkeshop1.Enabled := false;
738    
739        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
740        begin        begin
# Line 851  begin Line 746  begin
746        end;        end;
747      end;      end;
748    
749        if SpecialVersionSted = 'DBK' then
750        begin
751          Sted := SpecialVersionSted;
752        end;
753    
754      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
755      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
756      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 870  begin Line 770  begin
770        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
771        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
772        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
773          PanelValg7.Enabled := false;
774          PanelValg7.Font.Color := clInactiveCaption;
775       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
776    
777        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
778    
779        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
780        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
781        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
782        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
783        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
784        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
785        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
786        begin        begin
787          Scanningtype := '4';          Scanningtype := '4';
788          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
789          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
790          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
791        end        end
# Line 892  begin Line 794  begin
794          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
795          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
796          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
797          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
798          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
799          if Scanningtype = '1' then          if Scanningtype = '1' then
800          begin          begin
801            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
802            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
803            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
804          end;          end;
805          if Scanningtype = '2' then          if Scanningtype = '2' then
806          begin          begin
807            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
808            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
809            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
810          end;          end;
811          if Scanningtype = '3' then          if Scanningtype = '3' then
812          begin          begin
813            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
814            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
815            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
816          end;          end;
817          if Scanningtype = '4' then          if Scanningtype = '4' then
818          begin          begin
819            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
820            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
821            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
822          end;          end;
823          if Scanningtype = '5' then          if Scanningtype = '5' then
824          begin          begin
825            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
826            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
827            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
828          end;          end;
829          if Scanningtype = '6' then          if Scanningtype = '6' then
830          begin          begin
831            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
832            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
833            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
834          end;          end;
# Line 955  begin Line 857  begin
857          Application.Terminate;          Application.Terminate;
858      end;      end;
859    
860      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
861      begin      begin
862          TjekkerUrls();          TjekkerUrls();
863          if TjekUrls = '-' then  // så var der fejl i url - så vi stopper her          if Config.TjekUrls = '-' then  // så var der fejl i url - så vi stopper her
864          begin          begin
865             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
866             MainForm.Color := clRed;             MainForm.Color := clRed;
867             RutenummerST.Caption := '';             RutenummerST.Caption := '';
868             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
869             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
870             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
871             exit;             exit;
872          end;          end;
873      end      end
# Line 1007  begin Line 909  begin
909    
910      if Pakketype = '1' then      if Pakketype = '1' then
911      begin      begin
912        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
913        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
914      end      end
915      else      else
916      begin      begin
917        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
918        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
919      end;      end;
920    
921      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
922      begin      begin
923        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
924        Testprinter1.Visible := true;        Testprinter1.Visible := true;
925        Testlyd1.Visible := true;        Testlyd1.Visible := true;
926        Testlyd2.Visible := true;        Testlyd2.Visible := true;
927      end      end
928      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
929      begin      begin
930        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
931        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1038  begin Line 940  begin
940        Testlyd2.Visible := false;        Testlyd2.Visible := false;
941      end;      end;
942    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
943    
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
   
   
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
944    
945    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
946    
947      CheckPrintQue('Opstart');      LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
948        LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
949    
950    finally    finally
951      Free;      Free;
# Line 1076  begin Line 954  begin
954      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
955      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
956      begin      begin
957        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
958        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
959        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
960        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
961        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
962        Testprinter1.Visible := false;        Testprinter1.Visible := false;
963        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
964        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
965      end;      end;
966    
967      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1095  begin Line 973  begin
973      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
974      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
975    
976      if PanelValg6.Enabled then      IndlesManglendeScanningerAntal();
     begin  
        Scanningtype := '6';  
        IndlesManglendeScanninger();  
     end;  
977    
978      if PanelValg5.Enabled then  //    if PanelValg6.Enabled then
979      begin  //    begin
980         Scanningtype := '5';  //       Scanningtype := '6';
981         IndlesManglendeScanninger();  //       IndlesManglendeScanningerAntal();
982      end;  //    end;
983    //
984      if PanelValg4.Enabled then  //    if PanelValg5.Enabled then
985      begin  //    begin
986         Scanningtype := '4';  //       Scanningtype := '5';
987         IndlesManglendeScanninger();  //       IndlesManglendeScanningerAntal();
988      end;  //    end;
989    //
990      if PanelValg3.Enabled then  //    if PanelValg4.Enabled then
991      begin  //    begin
992         Scanningtype := '3';  //       Scanningtype := '4';
993         IndlesManglendeScanninger();  //       IndlesManglendeScanningerAntal();
994      end;  //    end;
995    //
996      if PanelValg2.Enabled then  //    if PanelValg3.Enabled then
997      begin  //    begin
998         Scanningtype := '2';  //       Scanningtype := '3';
999         IndlesManglendeScanninger();  //       IndlesManglendeScanningerAntal();
1000      end;  //    end;
1001    //
1002      if PanelValg1.Enabled then  //    if PanelValg2.Enabled then
1003      begin  //    begin
1004         Scanningtype := '1';  //       Scanningtype := '2';
1005         IndlesManglendeScanninger();  //       IndlesManglendeScanningerAntal();
1006      end;  //    end;
1007    //
1008    //    if PanelValg1.Enabled then
1009    //    begin
1010    //       Scanningtype := '1';
1011    //       IndlesManglendeScanningerAntal();
1012    //    end;
1013    
1014      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1015    
1016      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1017      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1018    
1019  end;  end;
1020    
# Line 1191  begin Line 1071  begin
1071      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1072      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1073      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1074        or (NumberString = 'DAO PAKKESHOP')
1075        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1076            or (LowerCase(NumberString) = 'for stor daodirekte' )
1077      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1078    
1079      begin      begin
# Line 1201  begin Line 1084  begin
1084      begin      begin
1085        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1086      end;      end;
1087    end;    end;  // Slut ctrl-v
1088    
1089    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1090    begin    begin
1091      if (Length(Trim(Stregkode)) = 0) then  
1092        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1093        Stregkode := Trim(Stregkode);
1094    
1095        if (Length(Stregkode) = 0) then
1096      begin      begin
1097        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1098    
# Line 1214  begin Line 1101  begin
1101    
1102      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1103      begin      begin
1104         PakkeshopNulstil.Click();         btnNulstil.Click();
1105         exit;         exit;
1106      end;      end;
1107    
1108      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1109      begin      begin
1110        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1111    
# Line 1255  begin Line 1142  begin
1142         exit;         exit;
1143      end;      end;
1144    
1145        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1146        begin
1147          if chkForstorTilDirekte.Enabled then
1148          begin
1149            chkForstorTilDirekte.Checked := true;
1150          end
1151          else
1152          begin
1153             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1154          end;
1155          Stregkode := '';
1156          StregkodeST.Caption := StregKode;
1157          exit;
1158        end;
1159    
1160    
1161      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1162      begin      begin
1163         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1409  begin Line 1312  begin
1312      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1313      begin      begin
1314        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1315        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1316        try        try
1317          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1318          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1452  begin Line 1355  begin
1355        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1356      end;      end;
1357    
1358      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1359          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1360          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1361          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1362          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1363          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1364      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1365          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1366    
1367         exit;         exit;
1368      end;      end;
1369    
1370      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1371      begin      begin
1372        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1373        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1396  begin
1396                InitPakkeshoplevering();                InitPakkeshoplevering();
1397              end;              end;
1398            end            end
1399        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1400              begin
1401                if Scanningtype <> '6' then
1402                begin
1403                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1404    
1405                 exit;
1406                end;
1407              end
1408    
1409    
1410        else        else
1411            begin            begin
1412            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1413              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1414                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1415    
1416               exit;               exit;
1417            end;            end;
1418        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1419      end      end
1420      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1421      begin      begin
1422        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1423    
1424        exit;        exit;
1425      end;      end;
1426    
1427      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1428      begin      begin
1429        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1430        begin        begin
# Line 1522  begin Line 1435  begin
1435        end;        end;
1436      end;      end;
1437    
1438        // EmballageRepareret skal bare sætte reklamationkoden,
1439        // og så ellers fortsætte med scanning som normalt
1440        if (chkEmballageRepareret.Checked = True) then
1441        begin
1442          URLStr := Format(Config.UrlEmballageRepareret,[Sted,Stregkode]);
1443          WebSvar := IdHTTP1.Get(URLStr);
1444    
1445          chkEmballageRepareret.Checked := False;
1446        end;
1447    
1448      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (chkUdenforSpecifikation.Checked = True) then
1449        begin
1450          URLStr := Format(Config.URLUdenforSpecifikation,[Sted,Stregkode]);
1451          //InputBox( '1', '1', URLStr);
1452    
1453          WebSvar := IdHTTP1.Get(URLStr);
1454          //InputBox( '2', '2', WebSvar );
1455    
1456          chkUdenforSpecifikation.Checked := False;
1457          LabelPrint.PrintLabel(Stregkode);
1458    
1459          StregkodeST.Caption := '';
1460          Stregkode := '';
1461    
1462          RuteNummerST.Caption := '';
1463          BoghandlerNavnST.Caption := '';
1464          KommentarST.Caption := 'Retur til leverandør';
1465    
1466    
1467    
1468    
1469          exit;   //leave procedure
1470        end;
1471    
1472    
1473    
1474    
1475        if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1476      begin      begin
1477        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1478        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1485  begin
1485        end;        end;
1486      end;      end;
1487    
1488      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1489        begin        begin
1490          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1491             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1492             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1493             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1494             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1495             Stregkode := '';             Stregkode := '';
1496             InitScreen();             InitScreen();
1497        end        end
1498      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1499        begin        begin
1500          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1501             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1503  begin
1503             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1504             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1505             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1506             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1507             Stregkode := '';             Stregkode := '';
1508             InitScreen();             InitScreen();
1509        end        end
1510      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1511        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1512         begin         begin
1513            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1568  begin Line 1516  begin
1516              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1517              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1518    
1519              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1520    
1521             end             end
1522            else            else
# Line 1585  begin Line 1533  begin
1533             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1534             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1535             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1536             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1537                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1538             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1539                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1540             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1541           end           end
1542          else          else
1543           begin           begin
1544                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1545                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1546                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1547                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1548                                    
1549                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1555  begin
1555          InitScreen();          InitScreen();
1556       end;       end;
1557    
1558      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1559      begin      begin
1560         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1561           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1562            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1563         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1564            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1565         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1566         try         try
# Line 1621  begin Line 1570  begin
1570            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1571            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1572            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1573               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1574               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1575              exit;              exit;
1576            end;            end;
1577            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked) then
1578            begin            begin
1579              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1580              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1645  begin Line 1590  begin
1590              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1591              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1592              begin              begin
1593                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1594                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1595                MainForm.Color := clRed;                MainForm.Color := clRed;
1596              end;              end;
1597           end;           end;
1598            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( menuNatXpress1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1599            begin            begin
1600              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1601              if Storepakker1.Checked then              if menuStorePakker.Checked then
1602              begin              begin
1603                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1604              end              end
1605              else              else
1606              begin              begin
1607                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1608              end;              end;
1609              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1610            end            end
1611            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1612            begin            begin
1613              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1614              if Storepakker1.Checked then              if menuStorePakker.Checked then
1615              begin              begin
1616                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1617              end              end
1618              else              else
1619              begin              begin
1620                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1621              end;              end;
1622              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1623            end            end
1624            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1625            begin            begin
# Line 1685  begin Line 1630  begin
1630            end            end
1631            else            else
1632            begin            begin
1633              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1634            end;            end;
1635           if not PakkeshopNulstil.Visible then  
1636             if not btnNulstil.Visible then
1637            begin            begin
1638    
1639              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1640              begin              begin
1641                if Storepakker1.Checked then                if menuStorePakker.Checked then
1642                begin                begin
1643                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1644                end                end
1645                else                else
1646                begin                begin
1647                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1648                end;                end;
1649                InitLillePakke();                InitLillePakke();
1650              end;              end;
# Line 1738  begin Line 1682  begin
1682    
1683    Key := #0;    Key := #0;
1684    
1685    
1686    
1687    
1688    
1689    
1690  end; //End of OnKeyPress  end; //End of OnKeyPress
1691    
1692    
1693    
1694  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1695  const  const
1696    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1747  var Line 1698  var
1698    WebSvar : String;    WebSvar : String;
1699    URLStr : String;    URLStr : String;
1700  begin  begin
1701    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1702    begin    begin
1703      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1704      try      try
1705        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1706        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1762  begin Line 1713  begin
1713        ShowMessage(logTekst);        ShowMessage(logTekst);
1714        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1715        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1716        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1717        Application.Terminate;        Application.Terminate;
1718      end;      end;
1719      end;      end;
# Line 1781  var Line 1732  var
1732    
1733    
1734  begin  begin
1735      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.Checked or menuIndlevering.Checked then
1736      begin      begin
1737        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1738          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1739          begin          begin
1740              wrkAntalSenere := 0;//initial Value
1741    
1742            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1743            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1744            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1745            begin            begin
1746              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1747              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1748  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1749  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1750  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1751              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1752            end            end
1753            else     // kun idag            else     // kun idag
1754            begin            begin
# Line 1900  begin Line 1852  begin
1852                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1853              end;              end;
1854            end;            end;
1855  // 20150310: slut  
1856            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1857          end;          end;
1858      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1882  procedure TMainForm.InitBladhus();
1882    
1883  begin  begin
1884    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1885    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1886    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1887    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1888    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1889    ListBox1.Visible := true;    ListBox1.Visible := true;
1890  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1891  // 20150317: start  
1892  (*    if menuDaoDirekte1.Checked then
   if TestFunktionen = '1' then  
     begin  
       Testforbindelsen1.Visible := true;  
       Testprinter1.Visible := true;  
       Testlyd1.Visible := true;  
       Testlyd2.Visible := true;  
     end  
   else if TestFunktionen = '2' then  
     begin  
       Testforbindelsen1.Enabled := false;  
       Testprinter1.Enabled := false;  
       Testlyd1.Enabled := false;  
       Testlyd2.Enabled := false;  
     end  
   else  
     begin  
       Testforbindelsen1.Visible := false;  
       Testprinter1.Visible := false;  
       Testlyd1.Visible := false;  
       Testlyd2.Visible := false;  
     end;  
   Testprinter1.Visible := false;  
   AlarmLyd := 'Sounds\Alarm.wav';  
   if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   ScannetOkLyd := 'Sounds\Ok.wav';  
   if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   ScannetOkStorLyd := 'Sounds\Ok_stor.wav';  
   if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
 *)  
 // 20150317: slut  
   if Budlevering1.Checked then  
1893    begin    begin
1894      IndlesScanningLogFil();      IndlesScanningLogFil();
1895    end;    end;
# Line 1989  begin Line 1901  begin
1901      01 :      01 :
1902            begin;      // NS            begin;      // NS
1903              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1904              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1905              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1906              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1907              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1908              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
1909              BladhusKontrolfil_lokal := 'RuteKontrol.txt';              BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1910              DownloadBladhusKontrolfil();              DownloadBladhusKontrolfil();
1911              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1912            end;            end;
1913      02 :      02 :
1914            begin;    // BK            begin;    // BK
1915              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1916              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1917              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1918              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1919              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1920              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1921              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1922              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1923              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1924              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1925            end;            end;
1926      03 :      03 :
1927            begin;          // FD            begin;          // FD
1928              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1929             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1930              begin              begin
1931                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1932              end              end
1933              else              else
1934              begin              begin
1935                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1936              end;              end;
1937              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1938              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1939              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1940              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1941              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2035  begin Line 1947  begin
1947              BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';              BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
1948              BladhusKontrolfil_lokal := 'RuteKontrol.txt';              BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1949              DownloadBladhusKontrolfil();              DownloadBladhusKontrolfil();
1950              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1951            end;            end;
1952      04 :  begin;           // DBK      04 :  begin;           // DBK
1953              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1954              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1955              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1956              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1957              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1958              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1959              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1960              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1961              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1962            end;            end;
# Line 2060  var Line 1972  var
1972    URLStr : String;    URLStr : String;
1973    pakkestorrelse : String;    pakkestorrelse : String;
1974    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1975    
1976      PakkeshopLabel: TLabelData;
1977  begin  begin
1978    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1979    begin    begin
# Line 2069  begin Line 1983  begin
1983    begin    begin
1984      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1985    end;    end;
1986    if Pakkernormal1.Checked then  
1987    
1988      if menuNatXpress1.Checked then
1989    begin    begin
1990       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1991       begin       begin
1992         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1993       end;       end;
1994       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1995    end    end
1996    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
1997    begin    begin
1998       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1999    end    end
2000    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2001    begin    begin
2002       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2003    end    end
2004    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2005    begin    begin
2006       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2007    end    end
2008    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2009    begin    begin
2010       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2011    end    end
2012    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2013    begin    begin
2014       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
2015      end
2016      else if menuIndlevering.Checked then
2017      begin
2018        URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
2019    end    end
2020    else    else
2021    begin    begin
2022      exit;      exit;
2023    end;    end;
2024    
2025      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2026      begin
2027        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2028      end;
2029    
2030    try    try
2031      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2032      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2048  begin
2048          end;          end;
2049      end;      end;
2050    end;    end;
2051    
2052    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2053    try    try
2054      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2055       begin       begin
2056        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2057        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2059  begin
2059        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2060        PrintNyLabel := False;        PrintNyLabel := False;
2061    
2062        if Pakkeshoplevering1.Checked then        try
2063            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2064          except on e:exception do
2065              PrintNyLabelInteger := 0;
2066          end;
2067          if (PrintNyLabelInteger = 1) then
2068        begin        begin
2069          try          PrintNyLabel := True;
           PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);  
         except on e:exception do  
             PrintNyLabelInteger := 0;  
         end;  
         if (PrintNyLabelInteger = 1) then  
         begin  
           PrintNyLabel := True;  
         end;  
 // 20150310: start  
2070        end;        end;
2071  // 20150310: slut  
2072       end       end
2073        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2074        begin
2075    
2076    
2077    
2078    
2079         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2080         if (Kommentar = 'Ok') then
2081         begin
2082           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2083           PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2084           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2085           Stregkode := PakkeshopLabel.Stregkode;
2086    
2087           LabelPrint.PrintLabel(PakkeshopLabel.Stregkode);
2088    
2089    //       LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2090    //       chkForstorTilDirekte.Checked := false;
2091    
2092         end;
2093    
2094    
2095        end
2096      else      else
2097       begin       begin
2098        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2100  begin
2100        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2101        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2102        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2103        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2104          begin          begin
2105          try          try
2106            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2125  begin
2125          PrintNyLabel := True;          PrintNyLabel := True;
2126        end;        end;
2127      end;      end;
2128    
2129    
2130      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2131      begin      begin
2132        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2133        begin        begin
2134            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2135            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2136        end;        end;
2137      end      end
2138      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2139      begin      begin
2140         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2141         begin        //PrintNyLabel := False;  //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
           // Det er ok at DBK scanner pakker til E     (Schenker)  
        end  
        else  
        begin  
           Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';  
           PrintNyLabel := False;  
        end;  
2142      end;      end;
2143    except on e:exception do    except on e:exception do
2144      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2216  begin Line 2157  begin
2157    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2158    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2159    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2160    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2161      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2162    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2163    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2169  begin
2169      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2170    end;    end;
2171    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2172    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2173    begin    begin
2174      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2175    end;    end;
2176    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2177    begin    begin
2178      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2179    end;    end;
2180    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2181       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2182    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2183    begin    begin
2184      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2185    end;    end;
2186    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2187    begin    begin
2188       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2189        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2195  begin
2195          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2196        end;        end;
2197    end;    end;
2198    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2199    begin    begin
2200      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2201    end;    end;
2202    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2203    begin    begin
2204      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2205      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2212  begin
2212        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2213      end;      end;
2214    end;    end;
2215      if menuIndlevering.Checked then
2216      begin
2217        List1Msg := Stregkode;
2218      end;
2219    
2220    
2221    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2222    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2223    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2224  end;  end;
2225    
2226  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2227  begin  begin
2228    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2229    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2239  pakkeForkertSted : Integer;
2239    kontrolKoreliste : string;    kontrolKoreliste : string;
2240    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2241  begin  begin
2242    if Budlevering1.Checked then  //  if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2243       RuteNummerST.Color := HexToTColor(Farve);  //  begin
2244    //    LabelPrint.PrintLabel( Stregkode );
2245    //  end;
2246    //
2247    //  exit;
2248    
2249      if menuDaoDirekte1.Checked then
2250         RuteNummerST.Color := TUtils.HexToTColor(Farve);
2251    
2252    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2253    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2284  begin
2284        end;        end;
2285    end    end
2286    else    else
2287    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2288    begin    begin
2289       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2290       begin       begin
2291          PrintNyLabel := false;          PrintNyLabel := false;
2292    
2293          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
2294          MainForm.Color := clRed;          MainForm.Color := clRed;
2295          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2296    
2297       end       end
2298       else       else
# Line 2349  begin Line 2303  begin
2303            PrintNyLabel := true;            PrintNyLabel := true;
2304            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2305            nyFarve := Farve;            nyFarve := Farve;
2306            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2307            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2308            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2309            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2310            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2311            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2312    
2313            if (PrinterNavn = 'Ingen') then  //          if (Config.PrinterNavn = 'Ingen') then
2314            begin  //          begin
2315               PrintNyLabel := false;  //             PrintNyLabel := false;
2316            end;  //          end;
2317    
2318            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2319            begin            begin
2320              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2321              MainForm.Color := clRed;              MainForm.Color := clRed;
2322              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2323            end;            end;
2324    
2325         end;         end;
# Line 2389  begin Line 2343  begin
2343    
2344            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2345            begin            begin
2346              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2347              MainForm.Color := clRed;              MainForm.Color := clRed;
2348              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2349            end;            end;
2350    
2351         end;         end;
# Line 2399  begin Line 2353  begin
2353    
2354    end;    end;
2355    
2356    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2357    begin    begin
2358      case BladhusSted of      case BladhusSted of
2359        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2365  begin
2365               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2366  // 20150304: slut  // 20150304: slut
2367                begin                begin
2368                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2369                    LabelPrint.PrintLabel( Stregkode );
2370                end;                end;
2371              end;              end;
2372        01 :  begin;        01 :  begin;
2373               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2374                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2375                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2376                begin                begin
2377                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2378                    LabelPrint.PrintLabel( Stregkode );
2379                end;                end;
2380              end;              end;
2381        02 :  begin;        02 :  begin;
2382                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2383                begin                begin
2384                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2385                    LabelPrint.PrintLabel( Stregkode );
2386                end;                end;
2387              end;              end;
2388        03 :  begin;        03 :  begin;
2389               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2390                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2391                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2392               begin               begin
2393                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2394                    LabelPrint.PrintLabel( Stregkode );
2395               end;               end;
2396              end;              end;
2397        04 :  begin;        04 :  begin;
2398                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2399                begin                begin
2400                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2401                    LabelPrint.PrintLabel( Stregkode );
2402                end;                end;
2403              end;              end;
       else  
        ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));  
2404      end;      end;
2405    end;    end;
2406    
2407  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2408    if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then    if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2409    begin    begin
2410      exit;      exit;
2411    end;    end;
2412    
2413    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then    if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2414    begin    begin
2415    end    end
2416    else    else
2417    begin    begin
2418      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then      if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2419      begin      begin
2420        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2421        if (chkAltidPrintLabel.Checked) then        if (chkAltidPrintLabel.Checked) then
# Line 2475  begin Line 2432  begin
2432        end;        end;
2433        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2434        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2435        with Printer do  
2436        begin        //LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2437          BeginDoc;        LabelPrint.PrintLabel( Stregkode );
2438          Canvas.Font.Size := FontSizeRute;        exit;
2439          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;  
2440      end;      end;
2441    end;    end;
2442    
2443  end;    // tilføjet 20161020
2444      if (menuPakkeshop1.Checked OR menuPakkeshopRetur1.Checked) then
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
2445      begin      begin
2446        BeginDoc;      if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2447        Canvas.Font.Size := FontSizeRuteLille;      begin
2448        if (kontrolKoreliste <> '') then        LabelPrint.PrintLabel( Stregkode );
2449        begin        exit;
2450          Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);      end;
       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;  
2451    
2452        Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);    end;
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
2453    
       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;  
2454  end;  end;
2455    
2456    
2457    
2458  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2459  begin  begin
2460      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2461      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2462  end;  end;
2463    
2464  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2465  begin  begin
2466      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2467      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2468  end;  end;
2469    
# Line 2571  begin Line 2481  begin
2481  end;  end;
2482    
2483    
2484    procedure TMainForm.chkUdenforSpecifikationClick(Sender: TObject);
2485    begin
2486      if (chkUdenforSpecifikation.Checked = true) then
2487      begin
2488        chkEmballageRepareret.Checked := false;
2489      end;
2490    end;
2491    
2492    procedure TMainForm.chkEmballageRepareretClick(Sender: TObject);
2493    begin
2494      if (chkEmballageRepareret.Checked = true) then
2495      begin
2496        chkUdenforSpecifikation.Checked := false;
2497      end;
2498    end;
2499    
2500  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2501  begin  begin
2502    if chkAltidPrintLabel.Checked then    if chkAltidPrintLabel.Checked then
# Line 2584  begin Line 2510  begin
2510    
2511  end;  end;
2512    
2513    
2514    
2515  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2516  begin  begin
2517    if chkScanTjekkode.Checked then    if chkScanTjekkode.Checked then
# Line 2596  begin Line 2524  begin
2524    end;    end;
2525  end;  end;
2526    
2527  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2528  begin  begin
2529        Scanningtype := '5';        Scanningtype := '5';
2530        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2533  end;
2533    
2534  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2535  begin  begin
2536      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2537      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2538      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2539    
# Line 2617  begin Line 2545  begin
2545        // 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)
2546        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2547        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2548        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2549      end;      end;
2550  // 20150317: slut  // 20150317: slut
2551  end;  end;
# Line 2632  begin Line 2560  begin
2560    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2561    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...');
2562    
2563          // Tjekker urls    try
2564          logTekst := 'Tjekker urls.';      // Tjekker urls
2565          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2566          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2567        SkrivScanningLogFil(logTekst);
2568    
         // 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;  
2569    
         // 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;  
2570    
2571          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2572          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2573          begin      begin
2574            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2575            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;  
2576    
2577          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2578          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2579          begin      begin
2580            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2581            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;  
2582    
2583          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2584          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2585          begin      begin
2586            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2587            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;  
2588    
2589          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2590          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2591          begin      begin
2592            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2593            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;  
2594    
2595          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2596          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2597          or (PanelValg4.Enabled = true) then      begin
2598          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2599            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;  
2600    
2601          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2602          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2603          begin      begin
2604            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2605            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;  
2606    
2607          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2608          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2609          begin      begin
2610            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2611            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;  
2612    
2613          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2614          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2615          begin      begin
2616            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2617            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;  
2618    
2619        // Tjekker UrlPakkeshopManglendeReturScanninger
2620        if PanelValg6.Enabled = true then
2621        begin
2622          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2623        end;
2624    
2625          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2626          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2627          begin      begin
2628            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2629            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2630              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;  
2631    
2632        // Tjekker UrlEKLoverforsel
2633        if PanelValg1.Enabled = true then
2634        begin
2635          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2636        end;
2637    
         // 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;  
2638    
2639          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2640          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2641          begin      begin
2642            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2643            SkrivScanningLogFil(logTekst);      end;
2644          end  
2645          else  
2646          begin      // Tjekker UrlFindPakketype
2647              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2648              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2649              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2650              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
             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;  
2651    
         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;  
2652    
2653    
2654        logTekst := 'urls er ok';
2655        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2656        SkrivScanningLogFil(logTekst);
2657    
2658      Except
2659        Config.TjekUrls := '-';   // markerer at der var fejl
2660    
2661      end;
2662  end;  end;
2663    
2664  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2665  var  const
2666     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2667  begin  begin
2668     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2669     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2670     Result := SystemTimeToDateTime(SystemTime) ;    begin
2671        logTekst := UrlNavn + ' accepteret: ' + Url;
2672        SkrivScanningLogFil(logTekst);
2673      end
2674      else
2675      begin
2676        inc(urlFejl);   // Optæller antal fejl
2677        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2678        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2679        if Config.TjekUrls = '1' then
2680        begin
2681          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2682        end;
2683    
2684        SkrivScanningLogFil(logTekst);
2685    
2686        if Config.TjekUrls = '1' then
2687        begin
2688          ShowMessage(logTekst);
2689          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2690          Application.Terminate;
2691    
2692          raise Exception.Create('UrlFejl');
2693    
2694        end;
2695      end;
2696    
2697  end;  end;
2698    
2699    
2700    
2701  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2702  var  var
2703    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2714  begin
2714      repeat      repeat
2715        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2716        begin        begin
2717    
2718          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2719          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2720          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2721          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2722          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2723          // (æ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 2754  begin
2754    end;    end;
2755  end;  end;
2756    
2757  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2758  begin  begin
2759    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2760    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2761    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2762    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2763    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2764    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3090  begin Line 2767  begin
2767    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2768    begin    begin
2769       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2770       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
2771       Application.Terminate;       Application.Terminate;
2772       exit;       exit;
2773    end;    end;
# Line 3099  begin Line 2776  begin
2776  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2777    if Farve <> '' then    if Farve <> '' then
2778    begin    begin
2779       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  
2780    end;    end;
2781    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2782    begin    begin
2783       InitLillePakke();       InitLillePakke();
2784    end;    end;
# Line 3173  end; Line 2840  end;
2840    
2841  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2842  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;  
 *)  
2843  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2844  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2845       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2846       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2847       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2848  // 20150311: slut  
2849    
2850    
2851  end;  end;
2852    
2853  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2854  begin  begin
2855        Scanningtype := '1';        Scanningtype := '1';
2856        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3215  var Line 2869  var
2869    Leveringssted : String;    Leveringssted : String;
2870    orgTjekUrls : String;    orgTjekUrls : String;
2871  begin  begin
2872    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2873    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2874    begin    begin
2875      TjekkerUrls();      TjekkerUrls();
2876    end;    end;
2877    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2878    begin    begin
2879      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2880      RuteNummer := '';      RuteNummer := '';
# Line 3229  begin Line 2883  begin
2883      Koreliste := '';      Koreliste := '';
2884      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2885      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2886      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2887      MainForm.Color := clRed;      MainForm.Color := clRed;
2888      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2889    end    end
2890    else    else
2891    begin    begin
# Line 3242  begin Line 2896  begin
2896      SmsKode := '999999';      SmsKode := '999999';
2897      DBKbane := '999';      DBKbane := '999';
2898      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2899    
2900    
2901      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2902      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2903    end;    end;
2904    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2905    
2906  end;  end;
2907    
# Line 3255  var Line 2911  var
2911    Kommentar : String;    Kommentar : String;
2912    BoghandlerNavn : String;    BoghandlerNavn : String;
2913    Koreliste : String;    Koreliste : String;
2914    Falsk : Boolean;  //  Falsk : Boolean;
2915    SmsKode : String;  //  SmsKode : String;
2916    DBKbane : String;  //  DBKbane : String;
2917    Leveringssted : String;  //  Leveringssted : String;
2918  begin  begin
2919    RuteNummer := 'Rutenr';    RuteNummer := 'Rutenr';
2920    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2921    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2922    Falsk := False;  //  Falsk := False;
2923    
2924    
2925    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2926    begin    begin
2927      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2928    end    end
2929    else if PrinterNavn = 'Ingen' then  //  else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2930    begin  //  begin
2931      ShowMessage('Der er fravalgt printer i dette program.');  //    ShowMessage('Der er fravalgt printer i dette program.');
2932    end  //  end
2933    else    else
2934    begin    begin
2935      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2936      SmsKode := '999999';  //    SmsKode := '999999';
2937      DBKbane := '999';  //    DBKbane := '999';
2938      Leveringssted := 'XXX';  //    Leveringssted := 'XXX';
2939      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);  //    PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2940      CheckPrintQue('Test');  
2941        LabelPrint.PrintTestLabel();
2942    
2943        LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2944    
2945    end;    end;
2946    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2947  end;  end;
2948    
2949  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2950  begin  begin
2951    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2952    begin    begin
2953      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2954    end    end
2955    else    else
2956    begin    begin
# Line 3299  begin Line 2959  begin
2959    end;    end;
2960  end;  end;
2961    
2962  {  
  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;  
2963    
2964  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2965  const  const
# Line 3337  var Line 2968  var
2968   tekst, filversion : String;   tekst, filversion : String;
2969  begin  begin
2970    
2971    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2972    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';
2973    
2974    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 2990  begin
2990          end          end
2991          else          else
2992          begin          begin
2993            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2994          end;          end;
2995      end      end
2996      else      else
2997      begin      begin
2998        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2999      end;      end;
3000    end;    end;
3001    
# Line 3373  begin Line 3004  begin
3004      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
3005      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
3006      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
3007      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
3008    end;    end;
3009    
3010    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3011    
3012  end;  end;
3013    
3014    
3015  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3016    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3017  var  var
# Line 3432  begin Line 3064  begin
3064    
3065    if FileExists(fileName) then    if FileExists(fileName) then
3066    begin    begin
3067      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3068      begin      begin
3069        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3070        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3088  begin
3088    
3089    if FileExists(fileName) then    if FileExists(fileName) then
3090    begin    begin
3091      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3092      begin      begin
3093        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3094        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3095      end      end
3096      else      else
3097      begin      begin
3098        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3099      end;      end;
3100    end    end
3101    else    else
# Line 3472  begin Line 3104  begin
3104    end;    end;
3105  end;  end;
3106    
3107    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3108    begin
3109      Scanningtype := '7';
3110      NulstilAutomatiskValg();
3111      InitIndleveringskode();
3112    end;
3113    
3114  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3115  begin  begin
3116    
# Line 3487  begin Line 3126  begin
3126    
3127  end;  end;
3128    
3129  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3130  begin  begin
3131        Scanningtype := '2';        Scanningtype := '2';
3132        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3133        InitReturFraDao();        InitReturFraDao();
3134  end;  end;
3135    
3136  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3137  begin  begin
3138        Scanningtype := '6';        Scanningtype := '6';
3139        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3142  end;
3142    
3143  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3144  begin  begin
3145        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3146        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3147        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3148        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3149        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3150        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3151    
# Line 3517  begin Line 3156  begin
3156        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3157        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3158        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3159        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3160        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3161        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3162        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3163        ListBox1.Visible := true;        ListBox1.Visible := true;
3164        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3165        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3166        InitLillePakke();        InitLillePakke();
3167        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3168    
3169          chkForstorTilDirekte.Checked := false;
3170          chkForstorTilDirekte.Enabled := false;
3171    
3172        if BladhusSted = 0 then        if BladhusSted = 0 then
3173        begin        begin
3174          IndlesScanningLogFil();          IndlesScanningLogFil();
3175          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3176        end;        end;
3177  end;  end;
3178    
3179  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3180  begin  begin
3181        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3182        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3183        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3184        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3185        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3186        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3187    
# Line 3549  begin Line 3192  begin
3192        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3193        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3194        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3195        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3196        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3197        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3198        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3199        ListBox1.Visible := true;        ListBox1.Visible := true;
3200        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3201        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3202        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3203    
3204          chkForstorTilDirekte.Checked := false;
3205          chkForstorTilDirekte.Enabled := false;
3206    
3207        InitLillePakke();        InitLillePakke();
3208  end;  end;
3209    
3210  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3211  begin  begin
3212        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3213        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3214        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3215        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3216        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3217        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3218    
# Line 3575  begin Line 3222  begin
3222        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3223        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3224        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3225        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3226        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3227        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3228        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3229        ListBox1.Visible := true;        ListBox1.Visible := true;
3230        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3231        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3232        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3233    
3234          chkForstorTilDirekte.Checked := false;
3235          chkForstorTilDirekte.Enabled := false;
3236    
3237        InitLillePakke();        InitLillePakke();
3238  end;  end;
3239    
3240  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3241  begin  begin
3242        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3243        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3244        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3245        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3246        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3247        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3248    
# Line 3602  begin Line 3253  begin
3253        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3254        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3255        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3256        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3257        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3258        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3259        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3260        ListBox1.Visible := true;        ListBox1.Visible := true;
3261        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3262        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3263        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3264        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3265        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3266        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3267        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3268    
3269          chkForstorTilDirekte.Checked := false;
3270          chkForstorTilDirekte.Enabled := true;
3271    
3272        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3273        begin        begin
3274            IndlesScanningLogFil();            IndlesScanningLogFil();
3275            IndlesManglendeScanninger();            IndlesManglendeScanningerAntal();
3276        end;        end;
3277    
3278  end;  end;
3279    
3280  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3281  begin  begin
3282        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3283        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3284        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3285        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3286        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3287        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3288    
# Line 3638  begin Line 3293  begin
3293        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3294        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3295        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3296        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3297        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3298        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3299        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3300        ListBox1.Visible := true;        ListBox1.Visible := true;
3301        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3302        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3303        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3304    
3305        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3306    
3307          chkForstorTilDirekte.Checked := false;
3308          chkForstorTilDirekte.Enabled := true;
3309    
3310        InitLillePakke();        InitLillePakke();
3311        IndlesScanningLogFil();        IndlesScanningLogFil();
3312        if BladhusSted = 0 then        if BladhusSted = 0 then
3313        begin        begin
3314          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3315        end;        end;
3316        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3317        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
# Line 3661  end; Line 3319  end;
3319    
3320  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3321  begin  begin
3322        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3323        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3324        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3325        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3326        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3327        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3328    
# Line 3675  begin Line 3333  begin
3333        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3334        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3335        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3336        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3337        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3338        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3339        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3340        ListBox1.Visible := true;        ListBox1.Visible := true;
3341        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3342        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3343        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3344        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3345    
3346          chkForstorTilDirekte.Checked := false;
3347          chkForstorTilDirekte.Enabled := false;
3348    
3349    
3350        InitLillePakke();        InitLillePakke();
3351        IndlesScanningLogFil();        IndlesScanningLogFil();
3352        if BladhusSted = 0 then        if BladhusSted = 0 then
3353        begin        begin
3354          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3355        end;        end;
3356        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3357        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3358  end;  end;
3359    
3360  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3361  begin  begin
3362        Scanningtype := '3';        Scanningtype := '3';
3363        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3366  end;
3366    
3367  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3368  begin  begin
3369        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3370        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3371        PakkeshopNulstil.Visible := false;  
3372        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        btnNulstil.Visible := false;
3373          InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3374        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3375        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3376    
# Line 3720  begin Line 3384  begin
3384    
3385    
3386    
3387        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3388        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3389        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3390        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3391        ListBox1.Visible := true;        ListBox1.Visible := true;
3392        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3393    
3394        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3395        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3396        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3397    
3398          chkForstorTilDirekte.Checked := false;
3399          chkForstorTilDirekte.Enabled := false;
3400    
3401    
3402        InitLillePakke();        InitLillePakke();
3403        IndlesScanningLogFil();        IndlesScanningLogFil();
3404        if BladhusSted = 0 then        if BladhusSted = 0 then
3405        begin        begin
3406          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3407        end;        end;
3408        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3409        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3410  end;  end;
3411    
3412    
3413  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3414  begin  begin
3415    InitStorPakke();    InitStorPakke();
3416  end;  end;
3417    
3418  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3419  begin  begin
3420    InitLillePakke();    InitLillePakke();
3421  end;  end;
# Line 3754  end; Line 3423  end;
3423  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3424  begin  begin
3425    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3426    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3427  //  Stregkode := '';  //  Stregkode := '';
3428  end;  end;
3429    
3430  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3431  begin  begin
3432    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3433    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3434  // 20150310: start  // 20150310: start
3435  //  Stregkode := '';  //  Stregkode := '';
3436  // 20150310: slut  // 20150310: slut
3437  end;  end;
3438    
 /// <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]]);  
3439    
     // 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;  
3440    
3441  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3442  begin  begin
# Line 3845  end; Line 3449  end;
3449    
3450  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3451  begin  begin
3452     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3453     begin     begin
3454       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3455     end     end
3456     else     else
3457     begin     begin
# Line 3859  procedure TMainForm.Testlyd2Click(Sender Line 3463  procedure TMainForm.Testlyd2Click(Sender
3463  begin  begin
3464    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3465    begin    begin
3466       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3467       begin       begin
3468         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3469       end       end
3470       else       else
3471       begin       begin
# Line 3870  begin Line 3474  begin
3474       exit;       exit;
3475    end;    end;
3476    
3477    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3478       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3479       begin       begin
3480         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3481       end       end
3482       else       else
3483       begin       begin
3484         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3485       end;       end;
3486    if Storepakker1.Checked then    if menuStorePakker.Checked then
3487       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3488       begin       begin
3489         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3490       end       end
3491       else       else
3492       begin       begin
# Line 3891  begin Line 3495  begin
3495  end;  end;
3496    
3497    
3498  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3499  begin  begin
3500        Scanningtype := '4';        Scanningtype := '4';
3501        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3507  begin;
3507    CheckCode();    CheckCode();
3508  end;  end;
3509    
3510  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3511  var  var
3512    WebSvar : String;    WebSvar : String;
3513    URLStr : String;    URLStr : String;
# Line 3913  var Line 3517  var
3517    status, kommentar : String;    status, kommentar : String;
3518    
3519  begin  begin
3520      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3521    
3522      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');
3523      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3524      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3525      StedKode := Sted;      StedKode := Sted;
3526      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3527  // 20150330: start  
3528      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3529      begin      begin
3530        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3531      end;      end;
3532  // 20150330: slut  
3533    
3534      try      try
3535      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3580  begin
3580        end;        end;
3581      end;      end;
3582    
3583      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3584    
3585      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
3586    
3587      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3588      if status = 'Fejl' then      if status = 'Fejl' then
3589      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3590         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3591         MainForm.Color := clRed;         MainForm.Color := clRed;
3592         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3593         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 3993  begin Line 3597  begin
3597           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3598         end;         end;
3599         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3600         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3601      end;      end;
3602    
3603  end;  end;
# Line 4017  begin Line 3621  begin
3621    else    else
3622      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3623  }  }
3624    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3625    
3626    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3627    CheckCode();    CheckCode();
# Line 4025  end; Line 3629  end;
3629    
3630  end;  end;
3631    
 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;  
3632    
3633  //  //
3634  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4106  begin
4106    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
4107  end;  end;
4108    
4109  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4110  begin  begin
4111      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4112      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
4113  end;  end;
4114    
4115  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4116  const  const
4117    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4118    
4119  begin  begin
4120      IndlesManglendeScanninger();      IndlesManglendeScanningerListe();
4121      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
4122  end;  end;
4123    
4124  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4125  begin  begin
4126      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4127      begin      begin
# Line 4565  begin Line 4130  begin
4130      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
4131  end;  end;
4132    
4133  function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
4134    procedure TMainForm.IndlesManglendeScanningerAntal();
4135  var  var
4136    S2: string;    Node: IXMLNode;
4137    
4138      URLStr : String;
4139      StedKode : String;
4140      WebSvar : String;
4141    
4142      i : Integer;
4143    
4144      PakkeType : String;
4145      TotalAntal : String;
4146      AntalProdDato : String;
4147    
4148      CurrentPanel : TPanel;
4149    
4150  begin  begin
4151    Result  := 0;    ListBox2.Clear();
4152    S2 := S + Border;  
4153    repeat    if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4154      SetLength(A, Length(A) + 1);      begin
4155      a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);        StedKode := BladhusStedKode[BladhusSted];
4156      Delete(S2, 1,Length(a[Result] + Border));      end
4157      Inc(Result);    else
4158    until S2 = '';      begin
4159          StedKode := Sted;
4160        end;
4161    
4162      URLStr := Format(Config.UrlHentPakkeAntal, [StedKode]);
4163    
4164    
4165      try
4166        WebSvar := IdHTTP1.Get(URLStr);
4167        except
4168          on e:EIdConnClosedGracefully do
4169          begin
4170            // Her skal vi ikke gøre noget - men vi skal forespørge igen
4171            WebSvar := IdHTTP1.Get(URLStr);
4172          end;
4173          on e:exception do
4174          begin
4175            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4176            logTekst := 'Fejl i web forespørgsel: '+e.Message;
4177            SkrivScanningLogFil(logTekst);
4178            raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4179          end;
4180        end;
4181    
4182    
4183    
4184         try
4185    
4186          XMLDocument1.LoadFromXML(WebSvar);
4187    
4188          for i:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4189              Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4190    
4191              PakkeType := Node.ChildValues['PakkeType'];
4192              TotalAntal := Node.ChildValues['TotalAntal'];
4193              AntalProdDato := Node.ChildValues['AntalProdDato'];
4194    
4195    
4196              CurrentPanel := nil;
4197    
4198              if (PakkeType = 'natxpress') then
4199              begin
4200                 CurrentPanel := PanelManglendePakker1;
4201              end;
4202    
4203              if (PakkeType = 'daodirekte') then
4204              begin
4205                 CurrentPanel := PanelManglendePakker4;
4206              end;
4207    
4208              if (PakkeType = 'pakkeshop') then
4209              begin
4210                 CurrentPanel := PanelManglendePakker5;
4211              end;
4212    
4213              if (CurrentPanel <> nil) then
4214              begin
4215                CurrentPanel.Caption := TotalAntal;
4216                if ( StrToInt(TotalAntal) > 0) then
4217                begin
4218                  CurrentPanel.Visible := true;
4219                end
4220                else
4221                begin
4222                  CurrentPanel.Visible := false;
4223                end;
4224              end;
4225    
4226    
4227          end;
4228    
4229    
4230     except on e:exception do
4231          begin
4232            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4233            logTekst := 'Fejl i XML-format: '+e.Message;
4234            SkrivScanningLogFil(logTekst);
4235            raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4236          end;
4237        end;
4238    
4239    
4240    
4241      ListBox1.Items.Insert(0,'Pakkeantal indlæst - klar til scanning');
4242    
4243  end;  end;
4244    
4245  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanningerListe();
4246  var  var
4247    WebSvar : String;    WebSvar : String;
4248    URLStr : String;    URLStr : String;
# Line 4588  var Line 4251  var
4251    I: Integer;    I: Integer;
4252    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4253    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4254    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4255    pakketyper : TStrings;    //pakketyper : TStrings;
4256      pakketyper : TDictionary<String, Integer>;
4257      tmpAntal : Integer;
4258    
4259     time, timeSamlet : TTimingHelper;
4260    
4261    
4262    antlin : Integer;    antlin : Integer;
4263    
4264    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4265    
4266    XmlFelter : TStrings;    //XmlFelter : TStrings;
4267      XmlFelter : TDictionary<String, Integer>;
4268    
4269   begin   begin
4270      XmlFelter := TStringList.Create;  
4271      pakketyper := TStringList.Create;  
4272        XmlFelter := TDictionary<String, Integer>.Create;
4273        pakketyper := TDictionary<String, Integer>.Create;
4274    
4275      linienr := 0;      linienr := 0;
4276      ListBox2.Clear;      ListBox2.Clear;
4277      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 4286  var
4286          StedKode := Sted;          StedKode := Sted;
4287        end;        end;
4288    
4289          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4290    
4291    
4292    
4293      if (Scanningtype = '6') then      if (Scanningtype = '7') then
4294       begin       begin
4295        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4296         end
4297        else if (Scanningtype = '6') then
4298         begin
4299          URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4300       end       end
4301      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4302       begin       begin
4303        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4304       end       end
4305      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4306       begin       begin
4307        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4308       end       end
4309      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4310       begin       begin
4311        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4312       end       end
4313      else      else
4314       begin       begin
# Line 4636  var Line 4316  var
4316       end;       end;
4317  // 20150310: slut  // 20150310: slut
4318    
4319        time := TTimingHelper.create();        //DEBUG
4320        timeSamlet := TTimingHelper.create();        //DEBUG
4321    
4322      try      try
4323      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4324  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4645  var Line 4328  var
4328        begin        begin
4329          // 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
4330          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4331    
4332    
4333    
4334        end;        end;
4335        on e:exception do        on e:exception do
4336        begin        begin
# Line 4655  var Line 4341  var
4341        end;        end;
4342      end;      end;
4343      try      try
4344          time.stop('HTTP Load');     //DEBUG
4345    
4346        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4347    
4348          time.stop('XML Load');     //DEBUG
4349    
4350    
4351    
4352    
4353    
4354    
4355        antlin := 0;        antlin := 0;
4356        antlinIdag := 0;        antlinIdag := 0;
# Line 4667  var Line 4361  var
4361            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4362              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4363              begin              begin
4364                 antlin := antlin + 1;                 Inc(antlin);
4365                 // 20150306: start                 // 20150306: start
4366                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4367                begin                begin
4368                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4369                   begin                   begin
4370                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4371                   end                   end
4372                   else                   else
4373                   begin                   begin
4374                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4375                   end;                   end;
4376                end;                end;
4377                 // 20150306: slut                 // 20150306: slut
4378              end;              end;
4379            end;            end;
4380            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4381                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4382                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4383                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4384                  end
4385                else                else
4386                  XmlFelter.values[Node.NodeName] := '1';                begin
4387                    XmlFelter.Add(Node.NodeName, 1);
4388                  end;
4389    
4390        end;        end;
4391        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4393  var
4393        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4394        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4395    
4396          time.stop('Antal Linier');//DEBUG
4397    
4398          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4399    
4400        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4401        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4402        begin        begin
# Line 4702  var Line 4405  var
4405        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4406    
4407        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4408          time.stop('Antal Linier2');//DEBUG
4409    
4410    
4411        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4412            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4413            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4415  var
4415                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4416                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4417                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4418              end;              end
4419              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4420                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4421                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4422                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4423              end;              end
4424              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4425                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4426                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4427                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4428              end;              end
4429              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4430                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4431                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4432                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4433              end;              end
4434              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4435                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4436                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4437                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4438                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4439                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4440                    pakketyper.TryGetValue(pakketype, tmpAntal);
4441                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4442                  end
4443                else                else
4444                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4445              end;              end
4446              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4447                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4448                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4449                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4450                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4451                  begin                  begin
4452  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4453                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4454                    begin                    begin
4455                      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
4456                    end                    end
4457                    else                    else
4458                    begin                    begin
# Line 4753  var Line 4461  var
4461                    linienr := linienr + 1;                    linienr := linienr + 1;
4462                  end;                  end;
4463              end;              end;
4464    
4465    
4466              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4467              begin              begin
4468                if (ScanningType = '1') then                if (ScanningType = '1') then
4469                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)                   ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4470                else if (ScanningType = '4') then                else if (ScanningType = '4') then
4471                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4472                else if (ScanningType = '5') then                else if (ScanningType = '5') then
# Line 4768  var Line 4478  var
4478              end;              end;
4479            end;            end;
4480        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4481    
4482          // Free up the list object  
4483          time.stop('Fyld Listbox2');//DEBUG
4484    
4485    
4486          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4487    
4488    
4489          for pakketype in pakketyper.Keys do
4490          begin
4491            pakketyper.TryGetValue(pakketype, tmpAntal);
4492            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4493          end;
4494    
4495            // Free up the dictionary object
4496        pakketyper.Free;        pakketyper.Free;
4497    
4498    
4499    
4500  //      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.');
4501        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4502        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4880  var Line 4602  var
4602        end;        end;
4603      end;      end;
4604    
4605        time.stop('Done');//DEBUG
4606        timeSamlet.stop('SamletTid');//DEBUG
4607    
4608    
4609  end;  end;
4610    
4611  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 4934  var Line 4660  var
4660     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4661     imorgenYmd : string;     imorgenYmd : string;
4662     logFilnavn : string;     logFilnavn : string;
4663      error : Integer;     //error : Integer;
4664    
4665  begin  begin
4666    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4752  begin
4752          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4753          S := buffer;          S := buffer;
4754          SetLength(A,0);          SetLength(A,0);
4755          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4756          if (length(A) < 2) then          if (length(A) < 2) then
4757          begin          begin
4758            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4759          end;          end;
4760            if (length(A) > 1) then            if (length(A) > 1) then
4761            begin            begin
# Line 5055  begin Line 4781  begin
4781          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4782          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4783          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4784          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4785        end;        end;
4786      end;      end;
4787    end    end
# Line 5064  begin Line 4790  begin
4790        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4791        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4792        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4793        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4794    end;    end;
4795  end;  end;
4796    
# Line 5103  begin Line 4829  begin
4829          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4830          S := buffer;          S := buffer;
4831          SetLength(A,0);          SetLength(A,0);
4832          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4833          if (length(A) < 3) then          if (length(A) < 3) then
4834          begin          begin
4835            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4836          end;          end;
4837          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4838          begin          begin
# Line 5135  begin Line 4861  begin
4861          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4862          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4863          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4864          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4865        end;        end;
4866      end;      end;
4867    end    end
# Line 5144  begin Line 4870  begin
4870        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4871        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4872        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4873        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4874    end;    end;
4875  end;  end;
4876    
# Line 5202  procedure TMainForm.VisAlarmSkaerm(strMe Line 4928  procedure TMainForm.VisAlarmSkaerm(strMe
4928  begin  begin
4929    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4930    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4931    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4932    MainForm.Color := clRed;    MainForm.Color := clRed;
4933    
4934    
4935    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4936    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4937    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4938    PakkeshopNulstil.Visible := true;  
4939      if (strMessage <> '') then
4940      begin
4941        ListBox1.Items.Insert(0, strMessage);
4942        KommentarST.Caption := strMessage;
4943      end;
4944    
4945      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4946    
4947  end;  end;
4948    
4949  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 5003  begin
5003    result := svar;    result := svar;
5004  end;  end;
5005    
 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;  
5006    
5007  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5008  begin  begin
# Line 5301  begin Line 5016  begin
5016    end;    end;
5017  end;  end;
5018    
5019  function TMainForm.AdobeReaderExists: Boolean;  
5020  var  //Nedarvet fra IParentForm
5021    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
5022  begin  begin
5023    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
5024  end;  end;
5025    
5026  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
5027  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;  
5028  begin  begin
5029      ListBox1.Items.Insert(0, msg);
5030      SkrivScanningLogFil(msg);
5031    end;
5032    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
5033    
5034    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
5035    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
5036      printerTxt := 'Der er fravalgt printer i dette program';  begin
5037      ListBox1.Items.Insert(0,printerTxt);  
5038      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
5039    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
5040    begin    begin
5041      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
5042      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
5043      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
5044    end    end
5045    else    else
5046    begin    begin
5047      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
5048      try      PrinterstatusStaticText1.Color := clWhite;
5049        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;  
5050    end;    end;
5051  end;  end;
5052    
5053  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
5054  var  function TMainForm.GetFormObject() : TForm;
5055    hSession, hfile, hRequest: hInternet;  begin
5056    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;  
   
5057  end;  end;
5058    
5059  // 20150310: start  //Nedarvet fra IParentForm
5060  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetXMLDocument() : TXMLDocument;
 var  
    R: TRect;  
    Rgn: HRGN;  
5061  begin  begin
5062     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;  
5063  end;  end;
5064  // 20150310: slut  
5065    
5066  end.  end.
5067    

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

  ViewVC Help
Powered by ViewVC 1.1.20