/[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 3130 by torben, Thu Oct 20 06:56:45 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, 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;  
         if (Length(RuteNummer) > 7) then  
         begin  
           Canvas.Font.Size := FontSizeRuteLille;  
         end;  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
         Canvas.Font.Size := FontSizeKommentar;  
         Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
         if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then  
         begin  
           Kommentar := '';  
         end;  
         if (BoghandlerNavn = 'PAKKE ER SCANNET') then  
         begin  
           BoghandlerNavn := '';  
         end;  
         Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
         Canvas.Font.Size := FontSizeBoghandler;  
         Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
         EndDoc;  
       end;  
2439      end;      end;
2440    end;    end;
2441    
2442  end;    // tilføjet 20161020
2443      if (menuPakkeshop1.Checked OR menuPakkeshopRetur1.Checked) then
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
2444      begin      begin
2445        BeginDoc;      if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2446        Canvas.Font.Size := FontSizeRuteLille;      begin
2447        if (kontrolKoreliste <> '') then        LabelPrint.PrintLabel( Stregkode );
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
2448      end;      end;
2449      end;
2450    
2451  end;  end;
2452    
2453    
2454    
2455  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2456  begin  begin
2457      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2458      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2459  end;  end;
2460    
2461  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2462  begin  begin
2463      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2464      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2465  end;  end;
2466    
# Line 2571  begin Line 2478  begin
2478  end;  end;
2479    
2480    
2481    procedure TMainForm.chkUdenforSpecifikationClick(Sender: TObject);
2482    begin
2483      if (chkUdenforSpecifikation.Checked = true) then
2484      begin
2485        chkEmballageRepareret.Checked := false;
2486      end;
2487    end;
2488    
2489    procedure TMainForm.chkEmballageRepareretClick(Sender: TObject);
2490    begin
2491      if (chkEmballageRepareret.Checked = true) then
2492      begin
2493        chkUdenforSpecifikation.Checked := false;
2494      end;
2495    end;
2496    
2497  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2498  begin  begin
2499    if chkAltidPrintLabel.Checked then    if chkAltidPrintLabel.Checked then
# Line 2584  begin Line 2507  begin
2507    
2508  end;  end;
2509    
2510    
2511    
2512  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2513  begin  begin
2514    if chkScanTjekkode.Checked then    if chkScanTjekkode.Checked then
# Line 2596  begin Line 2521  begin
2521    end;    end;
2522  end;  end;
2523    
2524  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2525  begin  begin
2526        Scanningtype := '5';        Scanningtype := '5';
2527        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2530  end;
2530    
2531  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2532  begin  begin
2533      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2534      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2535      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2536    
# Line 2617  begin Line 2542  begin
2542        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2543        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2544        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2545        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2546      end;      end;
2547  // 20150317: slut  // 20150317: slut
2548  end;  end;
# Line 2632  begin Line 2557  begin
2557    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2558    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2559    
2560          // Tjekker urls    try
2561          logTekst := 'Tjekker urls.';      // Tjekker urls
2562          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2563          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2564        SkrivScanningLogFil(logTekst);
2565    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if CheckUrl(UrlNormal) then  
           begin  
             logTekst := 'UrlNormal accepteret: ' + UrlNormal;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               TjekUrls := '-';   // markerer at der var fejl  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2566    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if CheckUrl(UrlReturDAO) then  
           begin  
             logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2567    
2568          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2569          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2570          begin      begin
2571            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2572            begin      end;
             logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2573    
2574          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2575          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2576          begin      begin
2577            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2578            begin      end;
             logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2579    
2580          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2581          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2582          begin      begin
2583            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2584            begin      end;
             logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2585    
2586          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2587          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2588          begin      begin
2589            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2590            begin      end;
             logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2591    
2592          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2593          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2594          or (PanelValg4.Enabled = true) then      begin
2595          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2596            if CheckUrl(UrlManglendeScanninger) then      end;
           begin  
             logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2597    
2598          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2599          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2600          begin      begin
2601            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2602            begin      end;
             logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2603    
2604          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2605          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2606          begin      begin
2607            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2608            begin      end;
             logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2609    
2610          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2611          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2612          begin      begin
2613            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2614            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;  
2615    
2616        // Tjekker UrlPakkeshopManglendeReturScanninger
2617        if PanelValg6.Enabled = true then
2618        begin
2619          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2620        end;
2621    
2622          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2623          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2624          begin      begin
2625            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2626            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2627              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;  
2628    
2629        // Tjekker UrlEKLoverforsel
2630        if PanelValg1.Enabled = true then
2631        begin
2632          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2633        end;
2634    
         // 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;  
2635    
2636          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2637          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2638          begin      begin
2639            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2640            SkrivScanningLogFil(logTekst);      end;
2641          end  
2642          else  
2643          begin      // Tjekker UrlFindPakketype
2644              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2645              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2646              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2647              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2648              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;  
2649    
         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;  
2650    
2651        logTekst := 'urls er ok';
2652        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2653        SkrivScanningLogFil(logTekst);
2654    
2655      Except
2656        Config.TjekUrls := '-';   // markerer at der var fejl
2657    
2658      end;
2659  end;  end;
2660    
2661  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2662  var  const
2663     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2664  begin  begin
2665     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2666     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2667     Result := SystemTimeToDateTime(SystemTime) ;    begin
2668        logTekst := UrlNavn + ' accepteret: ' + Url;
2669        SkrivScanningLogFil(logTekst);
2670      end
2671      else
2672      begin
2673        inc(urlFejl);   // Optæller antal fejl
2674        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2675        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2676        if Config.TjekUrls = '1' then
2677        begin
2678          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2679        end;
2680    
2681        SkrivScanningLogFil(logTekst);
2682    
2683        if Config.TjekUrls = '1' then
2684        begin
2685          ShowMessage(logTekst);
2686          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2687          Application.Terminate;
2688    
2689          raise Exception.Create('UrlFejl');
2690    
2691        end;
2692      end;
2693    
2694  end;  end;
2695    
2696    
2697    
2698  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2699  var  var
2700    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2711  begin
2711      repeat      repeat
2712        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2713        begin        begin
2714    
2715          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2716          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2717          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2718          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2719          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2720          // (æ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 2751  begin
2751    end;    end;
2752  end;  end;
2753    
2754  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2755  begin  begin
2756    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2757    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2758    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2759    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2760    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2761    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3090  begin Line 2764  begin
2764    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2765    begin    begin
2766       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2767       UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut       Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2768       Application.Terminate;       Application.Terminate;
2769       exit;       exit;
2770    end;    end;
# Line 3099  begin Line 2773  begin
2773  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2774    if Farve <> '' then    if Farve <> '' then
2775    begin    begin
2776       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  
2777    end;    end;
2778    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2779    begin    begin
2780       InitLillePakke();       InitLillePakke();
2781    end;    end;
# Line 3173  end; Line 2837  end;
2837    
2838  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2839  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;  
 *)  
2840  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2841  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2842       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2843       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2844       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2845  // 20150311: slut  
2846    
2847    
2848  end;  end;
2849    
2850  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2851  begin  begin
2852        Scanningtype := '1';        Scanningtype := '1';
2853        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3215  var Line 2866  var
2866    Leveringssted : String;    Leveringssted : String;
2867    orgTjekUrls : String;    orgTjekUrls : String;
2868  begin  begin
2869    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2870    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2871    begin    begin
2872      TjekkerUrls();      TjekkerUrls();
2873    end;    end;
2874    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2875    begin    begin
2876      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2877      RuteNummer := '';      RuteNummer := '';
# Line 3229  begin Line 2880  begin
2880      Koreliste := '';      Koreliste := '';
2881      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2882      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2883      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2884      MainForm.Color := clRed;      MainForm.Color := clRed;
2885      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2886    end    end
2887    else    else
2888    begin    begin
# Line 3242  begin Line 2893  begin
2893      SmsKode := '999999';      SmsKode := '999999';
2894      DBKbane := '999';      DBKbane := '999';
2895      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2896    
2897    
2898      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2899      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2900    end;    end;
2901    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2902    
2903  end;  end;
2904    
# Line 3255  var Line 2908  var
2908    Kommentar : String;    Kommentar : String;
2909    BoghandlerNavn : String;    BoghandlerNavn : String;
2910    Koreliste : String;    Koreliste : String;
2911    Falsk : Boolean;  //  Falsk : Boolean;
2912    SmsKode : String;  //  SmsKode : String;
2913    DBKbane : String;  //  DBKbane : String;
2914    Leveringssted : String;  //  Leveringssted : String;
2915  begin  begin
2916    RuteNummer := 'Rutenr';    RuteNummer := 'Rutenr';
2917    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2918    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2919    Falsk := False;  //  Falsk := False;
2920    
2921    
2922    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2923    begin    begin
2924      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2925    end    end
2926    else if PrinterNavn = 'Ingen' then  //  else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2927    begin  //  begin
2928      ShowMessage('Der er fravalgt printer i dette program.');  //    ShowMessage('Der er fravalgt printer i dette program.');
2929    end  //  end
2930    else    else
2931    begin    begin
2932      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2933      SmsKode := '999999';  //    SmsKode := '999999';
2934      DBKbane := '999';  //    DBKbane := '999';
2935      Leveringssted := 'XXX';  //    Leveringssted := 'XXX';
2936      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);  //    PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2937      CheckPrintQue('Test');  
2938        LabelPrint.PrintTestLabel();
2939    
2940        LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2941    
2942    end;    end;
2943    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2944  end;  end;
2945    
2946  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2947  begin  begin
2948    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2949    begin    begin
2950      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2951    end    end
2952    else    else
2953    begin    begin
# Line 3299  begin Line 2956  begin
2956    end;    end;
2957  end;  end;
2958    
2959  {  
  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;  
2960    
2961  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2962  const  const
# Line 3337  var Line 2965  var
2965   tekst, filversion : String;   tekst, filversion : String;
2966  begin  begin
2967    
2968    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2969    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';
2970    
2971    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 2987  begin
2987          end          end
2988          else          else
2989          begin          begin
2990            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2991          end;          end;
2992      end      end
2993      else      else
2994      begin      begin
2995        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2996      end;      end;
2997    end;    end;
2998    
# Line 3373  begin Line 3001  begin
3001      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
3002      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
3003      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
3004      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
3005    end;    end;
3006    
3007    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3008    
3009  end;  end;
3010    
3011    
3012  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3013    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3014  var  var
# Line 3432  begin Line 3061  begin
3061    
3062    if FileExists(fileName) then    if FileExists(fileName) then
3063    begin    begin
3064      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3065      begin      begin
3066        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3067        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3085  begin
3085    
3086    if FileExists(fileName) then    if FileExists(fileName) then
3087    begin    begin
3088      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3089      begin      begin
3090        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3091        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3092      end      end
3093      else      else
3094      begin      begin
3095        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3096      end;      end;
3097    end    end
3098    else    else
# Line 3472  begin Line 3101  begin
3101    end;    end;
3102  end;  end;
3103    
3104    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3105    begin
3106      Scanningtype := '7';
3107      NulstilAutomatiskValg();
3108      InitIndleveringskode();
3109    end;
3110    
3111  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3112  begin  begin
3113    
# Line 3487  begin Line 3123  begin
3123    
3124  end;  end;
3125    
3126  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3127  begin  begin
3128        Scanningtype := '2';        Scanningtype := '2';
3129        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3130        InitReturFraDao();        InitReturFraDao();
3131  end;  end;
3132    
3133  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3134  begin  begin
3135        Scanningtype := '6';        Scanningtype := '6';
3136        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3139  end;
3139    
3140  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3141  begin  begin
3142        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3143        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3144        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3145        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3146        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3147        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3148    
# Line 3517  begin Line 3153  begin
3153        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3154        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3155        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3156        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3157        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3158        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3159        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3160        ListBox1.Visible := true;        ListBox1.Visible := true;
3161        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3162        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3163        InitLillePakke();        InitLillePakke();
3164        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3165    
3166          chkForstorTilDirekte.Checked := false;
3167          chkForstorTilDirekte.Enabled := false;
3168    
3169        if BladhusSted = 0 then        if BladhusSted = 0 then
3170        begin        begin
3171          IndlesScanningLogFil();          IndlesScanningLogFil();
3172          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3173        end;        end;
3174  end;  end;
3175    
3176  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3177  begin  begin
3178        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3179        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3180        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3181        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3182        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3183        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3184    
# Line 3549  begin Line 3189  begin
3189        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3190        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3191        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3192        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3193        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3194        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3195        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3196        ListBox1.Visible := true;        ListBox1.Visible := true;
3197        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3198        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3199        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3200    
3201          chkForstorTilDirekte.Checked := false;
3202          chkForstorTilDirekte.Enabled := false;
3203    
3204        InitLillePakke();        InitLillePakke();
3205  end;  end;
3206    
3207  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3208  begin  begin
3209        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3210        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3211        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3212        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3213        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3214        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3215    
# Line 3575  begin Line 3219  begin
3219        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3220        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3221        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3222        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3223        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3224        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3225        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3226        ListBox1.Visible := true;        ListBox1.Visible := true;
3227        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3228        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3229        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3230    
3231          chkForstorTilDirekte.Checked := false;
3232          chkForstorTilDirekte.Enabled := false;
3233    
3234        InitLillePakke();        InitLillePakke();
3235  end;  end;
3236    
3237  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3238  begin  begin
3239        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3240        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3241        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3242        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3243        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3244        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3245    
# Line 3602  begin Line 3250  begin
3250        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3251        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3252        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3253        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3254        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3255        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3256        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3257        ListBox1.Visible := true;        ListBox1.Visible := true;
3258        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3259        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3260        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3261        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3262        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3263        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3264        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3265    
3266          chkForstorTilDirekte.Checked := false;
3267          chkForstorTilDirekte.Enabled := true;
3268    
3269        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3270        begin        begin
3271            IndlesScanningLogFil();            IndlesScanningLogFil();
3272            IndlesManglendeScanninger();            IndlesManglendeScanningerAntal();
3273        end;        end;
3274    
3275  end;  end;
3276    
3277  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3278  begin  begin
3279        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3280        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3281        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3282        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3283        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3284        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3285    
# Line 3638  begin Line 3290  begin
3290        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3291        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3292        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3293        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3294        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3295        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3296        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3297        ListBox1.Visible := true;        ListBox1.Visible := true;
3298        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3299        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3300        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3301    
3302          BtnEKLoverforsel.Enabled := true;
3303    
3304        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3305          chkForstorTilDirekte.Enabled := true;
3306    
3307        InitLillePakke();        InitLillePakke();
3308        IndlesScanningLogFil();        IndlesScanningLogFil();
3309        if BladhusSted = 0 then        if BladhusSted = 0 then
3310        begin        begin
3311          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3312        end;        end;
3313        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3314        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
# Line 3661  end; Line 3316  end;
3316    
3317  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3318  begin  begin
3319        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3320        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3321        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3322        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3323        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3324        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3325    
# Line 3675  begin Line 3330  begin
3330        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3331        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3332        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3333        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3334        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3335        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3336        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3337        ListBox1.Visible := true;        ListBox1.Visible := true;
3338        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3339        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3340        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3341        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3342    
3343          chkForstorTilDirekte.Checked := false;
3344          chkForstorTilDirekte.Enabled := false;
3345    
3346    
3347        InitLillePakke();        InitLillePakke();
3348        IndlesScanningLogFil();        IndlesScanningLogFil();
3349        if BladhusSted = 0 then        if BladhusSted = 0 then
3350        begin        begin
3351          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3352        end;        end;
3353        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3354        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3355  end;  end;
3356    
3357  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3358  begin  begin
3359        Scanningtype := '3';        Scanningtype := '3';
3360        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3363  end;
3363    
3364  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3365  begin  begin
3366        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3367        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3368        PakkeshopNulstil.Visible := false;  
3369        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        btnNulstil.Visible := false;
3370          InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3371        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3372        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3373    
# Line 3720  begin Line 3381  begin
3381    
3382    
3383    
3384        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3385        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3386        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3387        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3388        ListBox1.Visible := true;        ListBox1.Visible := true;
3389        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3390    
3391        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3392        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3393        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3394    
3395          chkForstorTilDirekte.Checked := false;
3396          chkForstorTilDirekte.Enabled := false;
3397    
3398    
3399        InitLillePakke();        InitLillePakke();
3400        IndlesScanningLogFil();        IndlesScanningLogFil();
3401        if BladhusSted = 0 then        if BladhusSted = 0 then
3402        begin        begin
3403          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3404        end;        end;
3405        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3406        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3407  end;  end;
3408    
3409    
3410  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3411  begin  begin
3412    InitStorPakke();    InitStorPakke();
3413  end;  end;
3414    
3415  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3416  begin  begin
3417    InitLillePakke();    InitLillePakke();
3418  end;  end;
# Line 3754  end; Line 3420  end;
3420  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3421  begin  begin
3422    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3423    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3424  //  Stregkode := '';  //  Stregkode := '';
3425  end;  end;
3426    
3427  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3428  begin  begin
3429    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3430    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3431  // 20150310: start  // 20150310: start
3432  //  Stregkode := '';  //  Stregkode := '';
3433  // 20150310: slut  // 20150310: slut
3434  end;  end;
3435    
 /// <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]]);  
3436    
     // 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;  
3437    
3438  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3439  begin  begin
# Line 3845  end; Line 3446  end;
3446    
3447  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3448  begin  begin
3449     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3450     begin     begin
3451       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3452     end     end
3453     else     else
3454     begin     begin
# Line 3859  procedure TMainForm.Testlyd2Click(Sender Line 3460  procedure TMainForm.Testlyd2Click(Sender
3460  begin  begin
3461    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3462    begin    begin
3463       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3464       begin       begin
3465         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3466       end       end
3467       else       else
3468       begin       begin
# Line 3870  begin Line 3471  begin
3471       exit;       exit;
3472    end;    end;
3473    
3474    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3475       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3476       begin       begin
3477         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3478       end       end
3479       else       else
3480       begin       begin
3481         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3482       end;       end;
3483    if Storepakker1.Checked then    if menuStorePakker.Checked then
3484       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3485       begin       begin
3486         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3487       end       end
3488       else       else
3489       begin       begin
# Line 3891  begin Line 3492  begin
3492  end;  end;
3493    
3494    
3495  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3496  begin  begin
3497        Scanningtype := '4';        Scanningtype := '4';
3498        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3504  begin;
3504    CheckCode();    CheckCode();
3505  end;  end;
3506    
3507  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3508  var  var
3509    WebSvar : String;    WebSvar : String;
3510    URLStr : String;    URLStr : String;
# Line 3913  var Line 3514  var
3514    status, kommentar : String;    status, kommentar : String;
3515    
3516  begin  begin
3517      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3518    
3519      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');
3520      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3521      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3522      StedKode := Sted;      StedKode := Sted;
3523      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3524  // 20150330: start  
3525      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3526      begin      begin
3527        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3528      end;      end;
3529  // 20150330: slut  
3530    
3531      try      try
3532      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3577  begin
3577        end;        end;
3578      end;      end;
3579    
3580      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3581    
3582      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
3583    
3584      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3585      if status = 'Fejl' then      if status = 'Fejl' then
3586      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3587         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3588         MainForm.Color := clRed;         MainForm.Color := clRed;
3589         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3590         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 3993  begin Line 3594  begin
3594           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3595         end;         end;
3596         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3597         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3598      end;      end;
3599    
3600  end;  end;
# Line 4017  begin Line 3618  begin
3618    else    else
3619      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3620  }  }
3621    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3622    
3623    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3624    CheckCode();    CheckCode();
# Line 4025  end; Line 3626  end;
3626    
3627  end;  end;
3628    
 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;  
3629    
3630  //  //
3631  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4103  begin
4103    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
4104  end;  end;
4105    
4106  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4107  begin  begin
4108      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4109      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
4110  end;  end;
4111    
4112  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4113  const  const
4114    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4115    
4116  begin  begin
4117      IndlesManglendeScanninger();      IndlesManglendeScanningerListe();
4118      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4119  end;  end;
4120    
4121  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4122  begin  begin
4123      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4124      begin      begin
# Line 4565  begin Line 4127  begin
4127      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
4128  end;  end;
4129    
4130  function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
4131    procedure TMainForm.IndlesManglendeScanningerAntal();
4132  var  var
4133    S2: string;    Node: IXMLNode;
4134    
4135      URLStr : String;
4136      StedKode : String;
4137      WebSvar : String;
4138    
4139      i : Integer;
4140    
4141      PakkeType : String;
4142      TotalAntal : String;
4143      AntalProdDato : String;
4144    
4145      CurrentPanel : TPanel;
4146    
4147  begin  begin
4148    Result  := 0;    ListBox2.Clear();
4149    S2 := S + Border;  
4150    repeat    if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4151      SetLength(A, Length(A) + 1);      begin
4152      a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);        StedKode := BladhusStedKode[BladhusSted];
4153      Delete(S2, 1,Length(a[Result] + Border));      end
4154      Inc(Result);    else
4155    until S2 = '';      begin
4156          StedKode := Sted;
4157        end;
4158    
4159      URLStr := Format(Config.UrlHentPakkeAntal, [StedKode]);
4160    
4161    
4162      try
4163        WebSvar := IdHTTP1.Get(URLStr);
4164        except
4165          on e:EIdConnClosedGracefully do
4166          begin
4167            // Her skal vi ikke gøre noget - men vi skal forespørge igen
4168            WebSvar := IdHTTP1.Get(URLStr);
4169          end;
4170          on e:exception do
4171          begin
4172            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4173            logTekst := 'Fejl i web forespørgsel: '+e.Message;
4174            SkrivScanningLogFil(logTekst);
4175            raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4176          end;
4177        end;
4178    
4179    
4180    
4181         try
4182    
4183          XMLDocument1.LoadFromXML(WebSvar);
4184    
4185          for i:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4186              Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4187    
4188              PakkeType := Node.ChildValues['PakkeType'];
4189              TotalAntal := Node.ChildValues['TotalAntal'];
4190              AntalProdDato := Node.ChildValues['AntalProdDato'];
4191    
4192    
4193              CurrentPanel := nil;
4194    
4195              if (PakkeType = 'natxpress') then
4196              begin
4197                 CurrentPanel := PanelManglendePakker1;
4198              end;
4199    
4200              if (PakkeType = 'daodirekte') then
4201              begin
4202                 CurrentPanel := PanelManglendePakker4;
4203              end;
4204    
4205              if (PakkeType = 'pakkeshop') then
4206              begin
4207                 CurrentPanel := PanelManglendePakker5;
4208              end;
4209    
4210              if (CurrentPanel <> nil) then
4211              begin
4212                CurrentPanel.Caption := TotalAntal;
4213                if ( StrToInt(TotalAntal) > 0) then
4214                begin
4215                  CurrentPanel.Visible := true;
4216                end
4217                else
4218                begin
4219                  CurrentPanel.Visible := false;
4220                end;
4221              end;
4222    
4223    
4224          end;
4225    
4226    
4227     except on e:exception do
4228          begin
4229            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4230            logTekst := 'Fejl i XML-format: '+e.Message;
4231            SkrivScanningLogFil(logTekst);
4232            raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4233          end;
4234        end;
4235    
4236    
4237    
4238      ListBox1.Items.Insert(0,'Pakkeantal indlæst - klar til scanning');
4239    
4240  end;  end;
4241    
4242  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanningerListe();
4243  var  var
4244    WebSvar : String;    WebSvar : String;
4245    URLStr : String;    URLStr : String;
# Line 4588  var Line 4248  var
4248    I: Integer;    I: Integer;
4249    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4250    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4251    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4252    pakketyper : TStrings;    //pakketyper : TStrings;
4253      pakketyper : TDictionary<String, Integer>;
4254      tmpAntal : Integer;
4255    
4256     time, timeSamlet : TTimingHelper;
4257    
4258    
4259    antlin : Integer;    antlin : Integer;
4260    
4261    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4262    
4263    XmlFelter : TStrings;    //XmlFelter : TStrings;
4264      XmlFelter : TDictionary<String, Integer>;
4265    
4266   begin   begin
4267      XmlFelter := TStringList.Create;  
4268      pakketyper := TStringList.Create;  
4269        XmlFelter := TDictionary<String, Integer>.Create;
4270        pakketyper := TDictionary<String, Integer>.Create;
4271    
4272      linienr := 0;      linienr := 0;
4273      ListBox2.Clear;      ListBox2.Clear;
4274      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4613  var Line 4283  var
4283          StedKode := Sted;          StedKode := Sted;
4284        end;        end;
4285    
4286          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4287    
4288      if (Scanningtype = '6') then  
4289    
4290        if (Scanningtype = '7') then
4291       begin       begin
4292        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4293         end
4294        else if (Scanningtype = '6') then
4295         begin
4296          URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4297       end       end
4298      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4299       begin       begin
4300        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4301       end       end
4302      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4303       begin       begin
4304        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4305       end       end
4306      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4307       begin       begin
4308        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4309       end       end
4310      else      else
4311       begin       begin
# Line 4636  var Line 4313  var
4313       end;       end;
4314  // 20150310: slut  // 20150310: slut
4315    
4316        time := TTimingHelper.create();        //DEBUG
4317        timeSamlet := TTimingHelper.create();        //DEBUG
4318    
4319      try      try
4320      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4321  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4645  var Line 4325  var
4325        begin        begin
4326          // Her skal vi ikke gøre noget - men vi skal forespørge igen          // Her skal vi ikke gøre noget - men vi skal forespørge igen
4327          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4328    
4329    
4330    
4331        end;        end;
4332        on e:exception do        on e:exception do
4333        begin        begin
# Line 4655  var Line 4338  var
4338        end;        end;
4339      end;      end;
4340      try      try
4341          time.stop('HTTP Load');     //DEBUG
4342    
4343        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4344    
4345          time.stop('XML Load');     //DEBUG
4346    
4347    
4348    
4349    
4350    
4351    
4352        antlin := 0;        antlin := 0;
4353        antlinIdag := 0;        antlinIdag := 0;
# Line 4667  var Line 4358  var
4358            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4359              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4360              begin              begin
4361                 antlin := antlin + 1;                 Inc(antlin);
4362                 // 20150306: start                 // 20150306: start
4363                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4364                begin                begin
4365                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4366                   begin                   begin
4367                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4368                   end                   end
4369                   else                   else
4370                   begin                   begin
4371                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4372                   end;                   end;
4373                end;                end;
4374                 // 20150306: slut                 // 20150306: slut
4375              end;              end;
4376            end;            end;
4377            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4378                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4379                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4380                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4381                  end
4382                else                else
4383                  XmlFelter.values[Node.NodeName] := '1';                begin
4384                    XmlFelter.Add(Node.NodeName, 1);
4385                  end;
4386    
4387        end;        end;
4388        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4390  var
4390        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4391        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4392    
4393          time.stop('Antal Linier');//DEBUG
4394    
4395          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4396    
4397        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4398        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4399        begin        begin
# Line 4702  var Line 4402  var
4402        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4403    
4404        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4405          time.stop('Antal Linier2');//DEBUG
4406    
4407    
4408        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4409            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4410            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4412  var
4412                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4413                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4414                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4415              end;              end
4416              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4417                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4418                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4419                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4420              end;              end
4421              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4422                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4423                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4424                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4425              end;              end
4426              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4427                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4428                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4429                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4430              end;              end
4431              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4432                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4433                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4434                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4435                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4436                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4437                    pakketyper.TryGetValue(pakketype, tmpAntal);
4438                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4439                  end
4440                else                else
4441                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4442              end;              end
4443              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4444                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4445                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4446                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4447                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4448                  begin                  begin
4449  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4450                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4451                    begin                    begin
4452                      stregkoderMedTjekkodeArray[linienr] := 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
4453                    end                    end
4454                    else                    else
4455                    begin                    begin
# Line 4753  var Line 4458  var
4458                    linienr := linienr + 1;                    linienr := linienr + 1;
4459                  end;                  end;
4460              end;              end;
4461    
4462    
4463              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4464              begin              begin
4465                if (ScanningType = '1') then                if (ScanningType = '1') then
4466                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)                   ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4467                else if (ScanningType = '4') then                else if (ScanningType = '4') then
4468                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4469                else if (ScanningType = '5') then                else if (ScanningType = '5') then
# Line 4768  var Line 4475  var
4475              end;              end;
4476            end;            end;
4477        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4478    
4479          // Free up the list object  
4480          time.stop('Fyld Listbox2');//DEBUG
4481    
4482    
4483          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4484    
4485    
4486          for pakketype in pakketyper.Keys do
4487          begin
4488            pakketyper.TryGetValue(pakketype, tmpAntal);
4489            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4490          end;
4491    
4492            // Free up the dictionary object
4493        pakketyper.Free;        pakketyper.Free;
4494    
4495    
4496    
4497  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4498        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4499        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4880  var Line 4599  var
4599        end;        end;
4600      end;      end;
4601    
4602        time.stop('Done');//DEBUG
4603        timeSamlet.stop('SamletTid');//DEBUG
4604    
4605    
4606  end;  end;
4607    
4608  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 4934  var Line 4657  var
4657     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4658     imorgenYmd : string;     imorgenYmd : string;
4659     logFilnavn : string;     logFilnavn : string;
4660      error : Integer;     //error : Integer;
4661    
4662  begin  begin
4663    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4749  begin
4749          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4750          S := buffer;          S := buffer;
4751          SetLength(A,0);          SetLength(A,0);
4752          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4753          if (length(A) < 2) then          if (length(A) < 2) then
4754          begin          begin
4755            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4756          end;          end;
4757            if (length(A) > 1) then            if (length(A) > 1) then
4758            begin            begin
# Line 5055  begin Line 4778  begin
4778          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4779          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4780          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4781          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4782        end;        end;
4783      end;      end;
4784    end    end
# Line 5064  begin Line 4787  begin
4787        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4788        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4789        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4790        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4791    end;    end;
4792  end;  end;
4793    
# Line 5103  begin Line 4826  begin
4826          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4827          S := buffer;          S := buffer;
4828          SetLength(A,0);          SetLength(A,0);
4829          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4830          if (length(A) < 3) then          if (length(A) < 3) then
4831          begin          begin
4832            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4833          end;          end;
4834          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4835          begin          begin
# Line 5135  begin Line 4858  begin
4858          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4859          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4860          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4861          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4862        end;        end;
4863      end;      end;
4864    end    end
# Line 5144  begin Line 4867  begin
4867        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4868        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4869        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4870        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4871    end;    end;
4872  end;  end;
4873    
# Line 5202  procedure TMainForm.VisAlarmSkaerm(strMe Line 4925  procedure TMainForm.VisAlarmSkaerm(strMe
4925  begin  begin
4926    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4927    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4928    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4929    MainForm.Color := clRed;    MainForm.Color := clRed;
4930    
4931    
4932    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4933    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4934    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4935    PakkeshopNulstil.Visible := true;  
4936      if (strMessage <> '') then
4937      begin
4938        ListBox1.Items.Insert(0, strMessage);
4939        KommentarST.Caption := strMessage;
4940      end;
4941    
4942      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4943    
4944  end;  end;
4945    
4946  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 5000  begin
5000    result := svar;    result := svar;
5001  end;  end;
5002    
 function TMainForm.GetCurrentPrinterHandle: THandle;  
 var  
   Device, Driver, Port: array[0..255] of Char;  
   hDeviceMode: THandle;  
 begin  
   Printer.GetPrinter(Device, Driver, Port, hDeviceMode);  
   if not OpenPrinter(@Device, Result, nil) then  
     RaiseLastWin32Error;  
 end;  
   
 function TMainForm.SavePChar(p: PChar): PChar;  
 const  
   error: PChar = 'Nil';  
 begin  
   if not Assigned(p) then  
     Result := error  
   else  
     Result := p;  
 end;  
5003    
5004  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5005  begin  begin
# Line 5301  begin Line 5013  begin
5013    end;    end;
5014  end;  end;
5015    
5016  function TMainForm.AdobeReaderExists: Boolean;  
5017  var  //Nedarvet fra IParentForm
5018    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
5019  begin  begin
5020    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
5021  end;  end;
5022    
5023  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
5024  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;  
5025  begin  begin
5026      ListBox1.Items.Insert(0, msg);
5027      SkrivScanningLogFil(msg);
5028    end;
5029    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
5030    
5031    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
5032    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
5033      printerTxt := 'Der er fravalgt printer i dette program';  begin
5034      ListBox1.Items.Insert(0,printerTxt);  
5035      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
5036    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
5037    begin    begin
5038      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
5039      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
5040      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
5041    end    end
5042    else    else
5043    begin    begin
5044      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
5045      try      PrinterstatusStaticText1.Color := clWhite;
5046        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       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;  
5047    end;    end;
5048  end;  end;
5049    
5050  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
5051  var  function TMainForm.GetFormObject() : TForm;
5052    hSession, hfile, hRequest: hInternet;  begin
5053    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;  
   
5054  end;  end;
5055    
5056  // 20150310: start  //Nedarvet fra IParentForm
5057  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetXMLDocument() : TXMLDocument;
 var  
    R: TRect;  
    Rgn: HRGN;  
5058  begin  begin
5059     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;  
5060  end;  end;
5061  // 20150310: slut  
5062    
5063  end.  end.
5064    

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

  ViewVC Help
Powered by ViewVC 1.1.20