/[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 3108 by torben, Mon Aug 29 14:03:14 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    
207    
 // 20150310: slut  
208    
209    private    private
210      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 212  type
212      SkrivLog : String;      SkrivLog : String;
213      Sted : String;      Sted : String;
214      StedNavn : String;      StedNavn : String;
215      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;  
216  // 29150330: start      Scanningtype,  Pakketype : String;
217      UrlEKLoverforselPakkeshop : String;  
218  // 20150330: slut  
219      UrlFindPakketype, UrlSendPrograminfo: String;      Url : String;
220      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;  
221      ScanTjekkode : String;      Farve : String;
222      ScanTjekkodeAutomatik : string;  
223      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;      Titel : String;
224      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;  
225      LabelType : integer;  
226      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;  
227      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
228      BladhusSted : Integer;      BladhusSted : Integer;
229      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 246  type Line 235  type
235      logTekst : string;      logTekst : string;
236      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
237      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
     TjekUrls : String;  
238    
239            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      Config : TConfiguration;
240    
241    
242        LabelPrint: TLabelPrint;
243    
244      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 = '');
245      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
246      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 = '');
247      procedure CheckCode();      procedure CheckCode();
248      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 262  type Line 253  type
253      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
254      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
255    
256    
257    public    public
258      { Public declarations }      { Public declarations }
259    end;    end;
260    
261    
262  var  var
263    MainForm: TMainForm;    MainForm: TMainForm;
264    
# Line 279  var Line 272  var
272  implementation  implementation
273  {$R *.dfm}  {$R *.dfm}
274    
275  function TMainForm.TColorToHex(Color : TColor) : string;  
276  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;  
277    
278  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
279  begin  begin
280    
281  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
282        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
283    
284    
285    
286    
287      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
288  // 20150309: slut  
289    
290      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
291      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 329  begin
329        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
330      end;      end;
331    
332      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
333    
334      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
335      begin      begin
# Line 374  begin Line 357  begin
357        else if (Sted = 'BR') then        else if (Sted = 'BR') then
358          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
359        else if (Sted = 'BK') then        else if (Sted = 'BK') then
360          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
361          else if (Sted = 'TK') then
362            begin StedNavn := 'BK/Trykkompagniet: '; end
363        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
364          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
365        else if (Sted = '1') then        else if (Sted = '1') then
366          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
367        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 385  begin
385    
386      StartScreen();      StartScreen();
387      MainForm.Caption := Titel;      MainForm.Caption := Titel;
388      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
389      MainForm.Farve := Farve;      MainForm.Farve := Farve;
390      MainForm.Titel := Titel;      MainForm.Titel := Titel;
391      MainForm.Url := Url;      MainForm.Url := Url;
# Line 410  begin Line 395  begin
395        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
396      end;      end;
397    
398      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
399        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
400      else      else
401        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 421  begin Line 406  begin
406    
407      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
408      begin      begin
409        if (ScanTjekkode = '1') then        if (Config.ScanTjekkode = '1') then
410        begin        begin
411          chkScanTjekkode.Checked := true;          chkScanTjekkode.Checked := true;
412          chkScanTjekkode.Enabled := true;          chkScanTjekkode.Enabled := true;
# Line 435  begin Line 420  begin
420        end;        end;
421      end;      end;
422    
423      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
424      begin      begin
425        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
426        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 445  begin
445          end          end
446          else          else
447          begin          begin
448            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
449          end;          end;
450          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
451        end        end
452        else        else
453        begin        begin
454          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
455          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
456        end;        end;
457      end;      end;
458    
459    
460  end;  end;
461    
462  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 492  begin Line 478  begin
478    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
479  end;  end;
480    
481  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
482  begin  begin
483    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
484    begin    begin
485       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
486       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 507  begin Line 493  begin
493    
494  end;  end;
495    
496  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
497  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;  
 *)  
498  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
499  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
500       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
501       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
502       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
503  end;  end;
504    
505    
506    
507    //InitForm kaldes før FormCreate
508  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
509  const  const
510    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
511  var  var
   printerInd : integer;  
512    gemScanningtype : String;    gemScanningtype : String;
513    
514  begin  begin
515    
516    
517    // Initierer nogle variabler    // Initierer nogle variabler
518    BladhusSted := 00;    BladhusSted := 00;
519    Application.ShowHint := True;    Application.ShowHint := True;
520    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
521    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
522    
523    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
524    
525    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
526    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
527    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
528    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
529    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
530    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
531    
532    
533    // 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 539  begin
539    
540  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
541    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
542    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 920;
543    
544      Config := TConfiguration.Create();
545      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
546      Config.Sted := Sted;
547    
548    // Læser parametre fra ini filen    // Læser parametre fra ini filen
549    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
550    try    try
551    
552    
553      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
554      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
555      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
556      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
557      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      Scanningtype := 'A'; //hardcoded
558      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      Pakketype := '0';
559      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
560      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
561      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
562      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');  
563    
564      if (SkrivLog = '1') then      if (SkrivLog = '1') then
565      begin      begin
566        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);
567        try        try
568          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
569          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
570          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
571          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
572          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
573          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 641  begin Line 579  begin
579    
580      if Scanningtype = 'A' then      if Scanningtype = 'A' then
581      begin      begin
582        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
583        Scanningtype := '1';        Scanningtype := '1';
584        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
585        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
586      end;      end;
587    
     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;  
588    
589      if SporgEfterBoghandler = '1' then  
590        if Config.SporgEfterBoghandler = '1' then
591      begin      begin
592        chkSporgEfterKunde.Checked := true;        chkSporgEfterKunde.Checked := true;
593        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
# Line 728  begin Line 598  begin
598        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
599      end;      end;
600    
601      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
602      begin      begin
603        chkScanTjekkode.Checked := true;        chkScanTjekkode.Checked := true;
604        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
# Line 739  begin Line 609  begin
609        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
610      end;      end;
611    
612      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
613      begin      begin
614        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
615        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
616        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
617      end;      end;
# Line 768  begin Line 638  begin
638      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
639      // *************************** //      // *************************** //
640    
641    {$IfDef STED_BK}
642        SpecialVersionSted := 'BK';
643    {$EndIf}
644    {$IfDef STED_TK}
645        SpecialVersionSted := 'TK';// BK-Trykkompagniet
646    {$EndIf}
647    {$IfDef STED_DBK}
648        SpecialVersionSted := 'DBK';
649    {$EndIf}
650    {$IfDef STED_FD}
651        SpecialVersionSted := 'FD';
652    {$EndIf}
653    {$IfDef STED_NS}
654        SpecialVersionSted := 'NS';
655    {$EndIf}
656    
657      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
658      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
659      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 669  begin
669      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
670      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
671    
 // 20150313: start  
672      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
673      begin      begin
674         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
675         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
676    
677          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
678          Sted := SpecialVersionSted;
679         // her skal vi også disable de knapper BK ikke kan bruge
680          PanelValg2.Enabled := false;
681          PanelValg2.Font.Color := clInactiveCaption;
682          PanelValg3.Enabled := false;
683          PanelValg3.Font.Color := clInactiveCaption;
684          //PanelValg6.Enabled := false;
685          //PanelValg6.Font.Color := clInactiveCaption;
686    
687         // her skal vi også disable de menupunkter FD ikke kan bruge
688          menuNatxpressReturDAO1.Enabled := false;
689          menuNatxpressReturfraKunde1.Enabled := false;
690    
691          //Returpakkerfrapakkeshop1.Enabled := false;
692      end;      end;
693    
694      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
695      begin      begin
696         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
697         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
698      end;  
 // 20150313: slut  
699    
     if SpecialVersionSted = 'BK' then  
     begin  
700        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
701        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
702       // 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 704  begin
704        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
705        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
706        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
707        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
708        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
709       // her skal vi også disable de menupunkter BK ikke kan bruge  
710        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
711        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
712        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
713        if SpecialVersionScanningtype = 'A' then  
714        begin        //Returpakkerfrapakkeshop1.Enabled := false;
715           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
716      end;      end;
717    
718      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
719      begin      begin
720        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
721        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
722        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
723        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
724        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
725        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
726        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
727        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
728        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;  
729    
730        Pakkeshoplevering1.Enabled := false;       // her skal vi også disable de menupunkter BK ikke kan bruge
731        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
732          menuNatxpressReturfraKunde1.Enabled := false;
733    
734          //Returpakkerfrapakkeshop1.Enabled := false;
735    
736        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
737        begin        begin
# Line 851  begin Line 743  begin
743        end;        end;
744      end;      end;
745    
746        if SpecialVersionSted = 'DBK' then
747        begin
748          Sted := SpecialVersionSted;
749        end;
750    
751      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
752      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
753      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 870  begin Line 767  begin
767        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
768        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
769        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
770          PanelValg7.Enabled := false;
771          PanelValg7.Font.Color := clInactiveCaption;
772       // 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
773    
774        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
775    
776        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
777        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
778        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
779        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
780        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
781        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
782        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
783        begin        begin
784          Scanningtype := '4';          Scanningtype := '4';
785          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
786          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
787          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
788        end        end
# Line 892  begin Line 791  begin
791          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
792          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
793          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
794          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
795          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
796          if Scanningtype = '1' then          if Scanningtype = '1' then
797          begin          begin
798            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
799            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
800            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
801          end;          end;
802          if Scanningtype = '2' then          if Scanningtype = '2' then
803          begin          begin
804            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
805            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
806            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
807          end;          end;
808          if Scanningtype = '3' then          if Scanningtype = '3' then
809          begin          begin
810            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
811            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
812            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
813          end;          end;
814          if Scanningtype = '4' then          if Scanningtype = '4' then
815          begin          begin
816            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
817            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
818            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
819          end;          end;
820          if Scanningtype = '5' then          if Scanningtype = '5' then
821          begin          begin
822            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
823            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
824            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
825          end;          end;
826          if Scanningtype = '6' then          if Scanningtype = '6' then
827          begin          begin
828            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
829            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
830            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
831          end;          end;
# Line 955  begin Line 854  begin
854          Application.Terminate;          Application.Terminate;
855      end;      end;
856    
857      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
858      begin      begin
859          TjekkerUrls();          TjekkerUrls();
860          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
861          begin          begin
862             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
863             MainForm.Color := clRed;             MainForm.Color := clRed;
864             RutenummerST.Caption := '';             RutenummerST.Caption := '';
865             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
866             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
867             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
868             exit;             exit;
869          end;          end;
870      end      end
# Line 1007  begin Line 906  begin
906    
907      if Pakketype = '1' then      if Pakketype = '1' then
908      begin      begin
909        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
910        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
911      end      end
912      else      else
913      begin      begin
914        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
915        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
916      end;      end;
917    
918      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
919      begin      begin
920        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
921        Testprinter1.Visible := true;        Testprinter1.Visible := true;
922        Testlyd1.Visible := true;        Testlyd1.Visible := true;
923        Testlyd2.Visible := true;        Testlyd2.Visible := true;
924      end      end
925      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
926      begin      begin
927        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
928        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1038  begin Line 937  begin
937        Testlyd2.Visible := false;        Testlyd2.Visible := false;
938      end;      end;
939    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
940    
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
941    
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
942    
943    
944      if not FileExists(ScannetOkTilTjekkodeLyd) then      LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
945      begin      LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
       ScannetOkTilTjekkodeLyd := '';  
     end;  
   
   
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
   
     CheckPrintQue('Opstart');  
946    
947    finally    finally
948      Free;      Free;
# Line 1076  begin Line 951  begin
951      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
952      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
953      begin      begin
954        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
955        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
956        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
957        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
958        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
959        Testprinter1.Visible := false;        Testprinter1.Visible := false;
960        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
961        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
962      end;      end;
963    
964      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1134  begin Line 1009  begin
1009      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1010    
1011      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1012      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1013    
1014  end;  end;
1015    
# Line 1191  begin Line 1066  begin
1066      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1067      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1068      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1069        or (NumberString = 'DAO PAKKESHOP')
1070        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1071            or (LowerCase(NumberString) = 'for stor daodirekte' )
1072      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1073    
1074      begin      begin
# Line 1201  begin Line 1079  begin
1079      begin      begin
1080        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1081      end;      end;
1082    end;    end;  // Slut ctrl-v
1083    
1084    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1085    begin    begin
1086      if (Length(Trim(Stregkode)) = 0) then  
1087        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1088        Stregkode := Trim(Stregkode);
1089    
1090        if (Length(Stregkode) = 0) then
1091      begin      begin
1092        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1093    
# Line 1214  begin Line 1096  begin
1096    
1097      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1098      begin      begin
1099         PakkeshopNulstil.Click();         btnNulstil.Click();
1100         exit;         exit;
1101      end;      end;
1102    
1103      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1104      begin      begin
1105        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1106    
# Line 1255  begin Line 1137  begin
1137         exit;         exit;
1138      end;      end;
1139    
1140        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1141        begin
1142          if chkForstorTilDirekte.Enabled then
1143          begin
1144            chkForstorTilDirekte.Checked := true;
1145          end
1146          else
1147          begin
1148             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1149          end;
1150          Stregkode := '';
1151          StregkodeST.Caption := StregKode;
1152          exit;
1153        end;
1154    
1155    
1156      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1157      begin      begin
1158         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1409  begin Line 1307  begin
1307      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1308      begin      begin
1309        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1310        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1311        try        try
1312          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1313          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1452  begin Line 1350  begin
1350        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1351      end;      end;
1352    
1353      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1354          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1355          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1356          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1357          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1358          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1359      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1360          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1361    
1362         exit;         exit;
1363      end;      end;
1364    
1365      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1366      begin      begin
1367        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1368        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1391  begin
1391                InitPakkeshoplevering();                InitPakkeshoplevering();
1392              end;              end;
1393            end            end
1394        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1395              begin
1396                if Scanningtype <> '6' then
1397                begin
1398                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1399    
1400                 exit;
1401                end;
1402              end
1403    
1404    
1405        else        else
1406            begin            begin
1407            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1408              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1409                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1410    
1411               exit;               exit;
1412            end;            end;
1413        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1414      end      end
1415      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1416      begin      begin
1417        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1418    
1419        exit;        exit;
1420      end;      end;
1421    
1422      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1423      begin      begin
1424        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1425        begin        begin
# Line 1522  begin Line 1430  begin
1430        end;        end;
1431      end;      end;
1432    
1433        // EmballageRepareret skal bare sætte reklamationkoden,
1434        // og så ellers fortsætte med scanning som normalt
1435        if (chkEmballageRepareret.Checked = True) then
1436        begin
1437          URLStr := Format(Config.UrlEmballageRepareret,[Sted,Stregkode]);
1438          WebSvar := IdHTTP1.Get(URLStr);
1439    
1440          chkEmballageRepareret.Checked := False;
1441        end;
1442    
1443      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (chkUdenforSpecifikation.Checked = True) then
1444        begin
1445          URLStr := Format(Config.URLUdenforSpecifikation,[Sted,Stregkode]);
1446          //InputBox( '1', '1', URLStr);
1447    
1448          WebSvar := IdHTTP1.Get(URLStr);
1449          //InputBox( '2', '2', WebSvar );
1450    
1451          chkUdenforSpecifikation.Checked := False;
1452          LabelPrint.PrintLabel(Stregkode);
1453    
1454          StregkodeST.Caption := '';
1455          Stregkode := '';
1456    
1457          RuteNummerST.Caption := '';
1458          BoghandlerNavnST.Caption := '';
1459          KommentarST.Caption := 'Retur til leverandør';
1460    
1461    
1462    
1463    
1464          exit;   //leave procedure
1465        end;
1466    
1467    
1468    
1469    
1470        if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1471      begin      begin
1472        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1473        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1480  begin
1480        end;        end;
1481      end;      end;
1482    
1483      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1484        begin        begin
1485          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1486             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1487             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1488             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1489             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1490             Stregkode := '';             Stregkode := '';
1491             InitScreen();             InitScreen();
1492        end        end
1493      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1494        begin        begin
1495          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1496             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1498  begin
1498             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1499             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1500             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1501             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1502             Stregkode := '';             Stregkode := '';
1503             InitScreen();             InitScreen();
1504        end        end
1505      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1506        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1507         begin         begin
1508            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1568  begin Line 1511  begin
1511              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1512              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1513    
1514              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1515    
1516             end             end
1517            else            else
# Line 1585  begin Line 1528  begin
1528             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1529             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1530             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1531             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1532                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1533             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1534                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1535             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1536           end           end
1537          else          else
1538           begin           begin
1539                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1540                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1541                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1542                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1543                                    
1544                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1550  begin
1550          InitScreen();          InitScreen();
1551       end;       end;
1552    
1553      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
1554      begin      begin
1555         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1556           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1557            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1558         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1559            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1560         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1561         try         try
# Line 1621  begin Line 1565  begin
1565            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1566            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1567            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1568               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1569               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1570              exit;              exit;
1571            end;            end;
1572            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1573            begin            begin
1574              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1575              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1645  begin Line 1585  begin
1585              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1586              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1587              begin              begin
1588                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1589                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1590                MainForm.Color := clRed;                MainForm.Color := clRed;
1591              end;              end;
1592           end;           end;
1593            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
1594            begin            begin
1595              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1596              if Storepakker1.Checked then              if menuStorePakker.Checked then
1597              begin              begin
1598                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1599              end              end
1600              else              else
1601              begin              begin
1602                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1603              end;              end;
1604              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1605            end            end
1606            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1607            begin            begin
1608              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1609              if Storepakker1.Checked then              if menuStorePakker.Checked then
1610              begin              begin
1611                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1612              end              end
1613              else              else
1614              begin              begin
1615                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1616              end;              end;
1617              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1618            end            end
1619            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1620            begin            begin
# Line 1685  begin Line 1625  begin
1625            end            end
1626            else            else
1627            begin            begin
1628              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1629            end;            end;
1630           if not PakkeshopNulstil.Visible then  
1631             if not btnNulstil.Visible then
1632            begin            begin
1633    
1634              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1635              begin              begin
1636                if Storepakker1.Checked then                if menuStorePakker.Checked then
1637                begin                begin
1638                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1639                end                end
1640                else                else
1641                begin                begin
1642                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1643                end;                end;
1644                InitLillePakke();                InitLillePakke();
1645              end;              end;
# Line 1738  begin Line 1677  begin
1677    
1678    Key := #0;    Key := #0;
1679    
1680    
1681    
1682    
1683    
1684    
1685  end; //End of OnKeyPress  end; //End of OnKeyPress
1686    
1687    
1688    
1689  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1690  const  const
1691    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1747  var Line 1693  var
1693    WebSvar : String;    WebSvar : String;
1694    URLStr : String;    URLStr : String;
1695  begin  begin
1696    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1697    begin    begin
1698      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1699      try      try
1700        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1701        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1762  begin Line 1708  begin
1708        ShowMessage(logTekst);        ShowMessage(logTekst);
1709        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1710        // 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
1711        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1712        Application.Terminate;        Application.Terminate;
1713      end;      end;
1714      end;      end;
# Line 1781  var Line 1727  var
1727    
1728    
1729  begin  begin
1730      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
1731      begin      begin
1732        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1733          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1734          begin          begin
1735              wrkAntalSenere := 0;//initial Value
1736    
1737            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1738            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1739            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1740            begin            begin
1741              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1742              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1743  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1744  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1745  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1746              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1747            end            end
1748            else     // kun idag            else     // kun idag
1749            begin            begin
# Line 1900  begin Line 1847  begin
1847                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1848              end;              end;
1849            end;            end;
1850  // 20150310: slut  
1851            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1852          end;          end;
1853      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1877  procedure TMainForm.InitBladhus();
1877    
1878  begin  begin
1879    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1880    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1881    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1882    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1883    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1884    ListBox1.Visible := true;    ListBox1.Visible := true;
1885  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1886  // 20150317: start  
1887  (*    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  
1888    begin    begin
1889      IndlesScanningLogFil();      IndlesScanningLogFil();
1890    end;    end;
# Line 1989  begin Line 1896  begin
1896      01 :      01 :
1897            begin;      // NS            begin;      // NS
1898              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1899              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1900              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1901              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1902              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1903              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2001  begin Line 1908  begin
1908      02 :      02 :
1909            begin;    // BK            begin;    // BK
1910              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1911              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1912              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1913              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1914              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1915              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1916              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1917              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1918              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1919              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 1923  begin
1923              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1924             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1925              begin              begin
1926                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1927              end              end
1928              else              else
1929              begin              begin
1930                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1931              end;              end;
1932              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1933              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1934              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1935              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1936              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2039  begin Line 1946  begin
1946            end;            end;
1947      04 :  begin;           // DBK      04 :  begin;           // DBK
1948              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1949              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1950              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1951              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1952              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1953              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1954              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1955              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1956              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1957            end;            end;
# Line 2060  var Line 1967  var
1967    URLStr : String;    URLStr : String;
1968    pakkestorrelse : String;    pakkestorrelse : String;
1969    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1970    
1971      PakkeshopLabel: TLabelData;
1972  begin  begin
1973    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1974    begin    begin
# Line 2069  begin Line 1978  begin
1978    begin    begin
1979      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1980    end;    end;
1981    if Pakkernormal1.Checked then  
1982    
1983      if menuNatXpress1.Checked then
1984    begin    begin
1985       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1986       begin       begin
1987         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1988       end;       end;
1989       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1990    end    end
1991    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
1992    begin    begin
1993       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1994    end    end
1995    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
1996    begin    begin
1997       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
1998    end    end
1999    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2000    begin    begin
2001       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2002    end    end
2003    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2004    begin    begin
2005       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2006    end    end
2007    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2008    begin    begin
2009       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
2010      end
2011      else if menuIndlevering.Checked then
2012      begin
2013        URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
2014    end    end
2015    else    else
2016    begin    begin
2017      exit;      exit;
2018    end;    end;
2019    
2020      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2021      begin
2022        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2023      end;
2024    
2025    try    try
2026      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2027      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2043  begin
2043          end;          end;
2044      end;      end;
2045    end;    end;
2046    
2047    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2048    try    try
2049      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2050       begin       begin
2051        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2052        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2054  begin
2054        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2055        PrintNyLabel := False;        PrintNyLabel := False;
2056    
2057        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2058        begin        begin
2059          try          try
2060            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2143  begin Line 2065  begin
2065          begin          begin
2066            PrintNyLabel := True;            PrintNyLabel := True;
2067          end;          end;
 // 20150310: start  
2068        end;        end;
 // 20150310: slut  
2069       end       end
2070        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2071        begin
2072    
2073    
2074    
2075    
2076         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2077         if (Kommentar = 'Ok') then
2078         begin
2079           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2080           PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2081           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2082           Stregkode := PakkeshopLabel.Stregkode;
2083    
2084           LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2085           chkForstorTilDirekte.Checked := false;
2086    
2087         end;
2088    
2089    
2090        end
2091      else      else
2092       begin       begin
2093        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2095  begin
2095        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2096        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2097        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2098        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2099          begin          begin
2100          try          try
2101            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2120  begin
2120          PrintNyLabel := True;          PrintNyLabel := True;
2121        end;        end;
2122      end;      end;
2123    
2124    
2125      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2126      begin      begin
2127        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2128        begin        begin
2129            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2130            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2131        end;        end;
2132      end      end
2133      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2134      begin      begin
2135         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2136         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;  
2137      end;      end;
2138    except on e:exception do    except on e:exception do
2139      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2216  begin Line 2152  begin
2152    //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
2153    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2154    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2155    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2156      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2157    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2158    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2164  begin
2164      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2165    end;    end;
2166    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2167    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2168    begin    begin
2169      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2170    end;    end;
2171    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2172    begin    begin
2173      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2174    end;    end;
2175    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2176       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2177    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2178    begin    begin
2179      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2180    end;    end;
2181    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2182    begin    begin
2183       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2184        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2190  begin
2190          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2191        end;        end;
2192    end;    end;
2193    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2194    begin    begin
2195      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2196    end;    end;
2197    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2198    begin    begin
2199      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2200      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2207  begin
2207        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2208      end;      end;
2209    end;    end;
2210      if menuIndlevering.Checked then
2211      begin
2212        List1Msg := Stregkode;
2213      end;
2214    
2215    
2216    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2217    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2218    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2219  end;  end;
2220    
2221  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2222  begin  begin
2223    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2224    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2234  pakkeForkertSted : Integer;
2234    kontrolKoreliste : string;    kontrolKoreliste : string;
2235    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2236  begin  begin
2237    if Budlevering1.Checked then    if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2238       RuteNummerST.Color := HexToTColor(Farve);    begin
2239        LabelPrint.PrintLabel( Stregkode );
2240      end;
2241    
2242    
2243      exit;
2244    
2245      if menuDaoDirekte1.Checked then
2246         RuteNummerST.Color := TUtils.HexToTColor(Farve);
2247    
2248    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2249    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2280  begin
2280        end;        end;
2281    end    end
2282    else    else
2283    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2284    begin    begin
2285       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2286       begin       begin
2287          PrintNyLabel := false;          PrintNyLabel := false;
2288    
2289          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
2290          MainForm.Color := clRed;          MainForm.Color := clRed;
2291          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2292    
2293       end       end
2294       else       else
# Line 2349  begin Line 2299  begin
2299            PrintNyLabel := true;            PrintNyLabel := true;
2300            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2301            nyFarve := Farve;            nyFarve := Farve;
2302            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2303            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2304            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2305            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2306            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2307            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2308    
2309            if (PrinterNavn = 'Ingen') then  //          if (Config.PrinterNavn = 'Ingen') then
2310            begin  //          begin
2311               PrintNyLabel := false;  //             PrintNyLabel := false;
2312            end;  //          end;
2313    
2314            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
2315            begin            begin
2316              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2317              MainForm.Color := clRed;              MainForm.Color := clRed;
2318              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2319            end;            end;
2320    
2321         end;         end;
# Line 2389  begin Line 2339  begin
2339    
2340            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
2341            begin            begin
2342              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2343              MainForm.Color := clRed;              MainForm.Color := clRed;
2344              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2345            end;            end;
2346    
2347         end;         end;
# Line 2399  begin Line 2349  begin
2349    
2350    end;    end;
2351    
2352    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2353    begin    begin
2354      case BladhusSted of      case BladhusSted of
2355        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2361  begin
2361               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2362  // 20150304: slut  // 20150304: slut
2363                begin                begin
2364                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2365                end;                end;
2366              end;              end;
2367        01 :  begin;        01 :  begin;
2368               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2369                    // 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
2370                    // 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')
2371                begin                begin
2372                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2373                end;                end;
2374              end;              end;
2375        02 :  begin;        02 :  begin;
2376                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
2377                begin                begin
2378                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2379                end;                end;
2380              end;              end;
2381        03 :  begin;        03 :  begin;
2382               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2383                    // 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
2384                    // 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')
2385               begin               begin
2386                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2387               end;               end;
2388              end;              end;
2389        04 :  begin;        04 :  begin;
2390                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
2391                begin                begin
2392                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2393                end;                end;
2394              end;              end;
2395        else        else
# Line 2448  begin Line 2398  begin
2398    end;    end;
2399    
2400  // 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
2401    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
2402    begin    begin
2403      exit;      exit;
2404    end;    end;
2405    
2406    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
2407    begin    begin
2408    end    end
2409    else    else
2410    begin    begin
2411      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
2412      begin      begin
2413        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2414        if (chkAltidPrintLabel.Checked) then        if (chkAltidPrintLabel.Checked) then
# Line 2475  begin Line 2425  begin
2425        end;        end;
2426        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2427        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2428        with Printer do  
2429        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2430          BeginDoc;  
         Canvas.Font.Size := FontSizeRute;  
         if (Length(RuteNummer) > 7) then  
         begin  
           Canvas.Font.Size := FontSizeRuteLille;  
         end;  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
         Canvas.Font.Size := FontSizeKommentar;  
         Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
         if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then  
         begin  
           Kommentar := '';  
         end;  
         if (BoghandlerNavn = 'PAKKE ER SCANNET') then  
         begin  
           BoghandlerNavn := '';  
         end;  
         Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
         Canvas.Font.Size := FontSizeBoghandler;  
         Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
         EndDoc;  
       end;  
2431      end;      end;
2432    end;    end;
2433    
2434  end;  end;
2435    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2436    
2437    
2438  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2439  begin  begin
2440      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2441      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2442  end;  end;
2443    
2444  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2445  begin  begin
2446      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2447      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2448  end;  end;
2449    
# Line 2596  begin Line 2486  begin
2486    end;    end;
2487  end;  end;
2488    
2489  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2490  begin  begin
2491        Scanningtype := '5';        Scanningtype := '5';
2492        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2495  end;
2495    
2496  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2497  begin  begin
2498      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2499      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2500      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2501    
# Line 2617  begin Line 2507  begin
2507        // 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)
2508        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2509        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2510        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2511      end;      end;
2512  // 20150317: slut  // 20150317: slut
2513  end;  end;
# Line 2632  begin Line 2522  begin
2522    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2523    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...');
2524    
2525          // Tjekker urls    try
2526          logTekst := 'Tjekker urls.';      // Tjekker urls
2527          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2528          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2529        SkrivScanningLogFil(logTekst);
2530    
         // 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;  
2531    
         // 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;  
2532    
2533          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2534          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2535          begin      begin
2536            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2537            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;  
2538    
2539          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2540          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2541          begin      begin
2542            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2543            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;  
2544    
2545          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2546          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2547          begin      begin
2548            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2549            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;  
2550    
2551          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2552          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2553          begin      begin
2554            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2555            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;  
2556    
2557          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2558          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2559          or (PanelValg4.Enabled = true) then      begin
2560          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2561            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;  
2562    
2563          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2564          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2565          begin      begin
2566            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2567            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;  
2568    
2569          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2570          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2571          begin      begin
2572            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2573            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;  
2574    
2575          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2576          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2577          begin      begin
2578            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2579            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;  
2580    
2581        // Tjekker UrlPakkeshopManglendeReturScanninger
2582        if PanelValg6.Enabled = true then
2583        begin
2584          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2585        end;
2586    
2587          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2588          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2589          begin      begin
2590            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2591            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2592              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;  
2593    
2594        // Tjekker UrlEKLoverforsel
2595        if PanelValg1.Enabled = true then
2596        begin
2597          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2598        end;
2599    
         // 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;  
2600    
2601          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2602          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2603          begin      begin
2604            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2605            SkrivScanningLogFil(logTekst);      end;
2606          end  
2607          else  
2608          begin      // Tjekker UrlFindPakketype
2609              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2610              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2611              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2612              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2613    
         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;  
2614    
2615    
2616        logTekst := 'urls er ok';
2617        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2618        SkrivScanningLogFil(logTekst);
2619    
2620      Except
2621        Config.TjekUrls := '-';   // markerer at der var fejl
2622    
2623      end;
2624  end;  end;
2625    
2626  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2627  var  const
2628     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2629  begin  begin
2630     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2631     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2632     Result := SystemTimeToDateTime(SystemTime) ;    begin
2633        logTekst := UrlNavn + ' accepteret: ' + Url;
2634        SkrivScanningLogFil(logTekst);
2635      end
2636      else
2637      begin
2638        inc(urlFejl);   // Optæller antal fejl
2639        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2640        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2641        if Config.TjekUrls = '1' then
2642        begin
2643          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2644        end;
2645    
2646        SkrivScanningLogFil(logTekst);
2647    
2648        if Config.TjekUrls = '1' then
2649        begin
2650          ShowMessage(logTekst);
2651          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2652          Application.Terminate;
2653    
2654          raise Exception.Create('UrlFejl');
2655    
2656        end;
2657      end;
2658    
2659  end;  end;
2660    
2661    
2662    
2663  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2664  var  var
2665    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2676  begin
2676      repeat      repeat
2677        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2678        begin        begin
2679    
2680          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2681          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2682          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2683          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2684          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2685          // (æ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 2716  begin
2716    end;    end;
2717  end;  end;
2718    
2719  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2720  begin  begin
2721    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2722    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2723    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2724    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2725    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2726    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3090  begin Line 2729  begin
2729    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2730    begin    begin
2731       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2732       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
2733       Application.Terminate;       Application.Terminate;
2734       exit;       exit;
2735    end;    end;
# Line 3099  begin Line 2738  begin
2738  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2739    if Farve <> '' then    if Farve <> '' then
2740    begin    begin
2741       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  
2742    end;    end;
2743    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2744    begin    begin
2745       InitLillePakke();       InitLillePakke();
2746    end;    end;
# Line 3173  end; Line 2802  end;
2802    
2803  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2804  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;  
 *)  
2805  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2806  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2807       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2808       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2809       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2810  // 20150311: slut  
2811    
2812    
2813  end;  end;
2814    
2815  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2816  begin  begin
2817        Scanningtype := '1';        Scanningtype := '1';
2818        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3215  var Line 2831  var
2831    Leveringssted : String;    Leveringssted : String;
2832    orgTjekUrls : String;    orgTjekUrls : String;
2833  begin  begin
2834    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2835    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2836    begin    begin
2837      TjekkerUrls();      TjekkerUrls();
2838    end;    end;
2839    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2840    begin    begin
2841      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2842      RuteNummer := '';      RuteNummer := '';
# Line 3229  begin Line 2845  begin
2845      Koreliste := '';      Koreliste := '';
2846      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2847      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2848      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2849      MainForm.Color := clRed;      MainForm.Color := clRed;
2850      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2851    end    end
2852    else    else
2853    begin    begin
# Line 3242  begin Line 2858  begin
2858      SmsKode := '999999';      SmsKode := '999999';
2859      DBKbane := '999';      DBKbane := '999';
2860      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2861    
2862    
2863      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2864      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2865    end;    end;
2866    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2867    
2868  end;  end;
2869    
# Line 3259  var Line 2877  var
2877    SmsKode : String;    SmsKode : String;
2878    DBKbane : String;    DBKbane : String;
2879    Leveringssted : String;    Leveringssted : String;
2880      LabelData : TLabelData;
2881  begin  begin
2882    RuteNummer := 'Rutenr';    RuteNummer := 'Rutenr';
2883    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
# Line 3266  begin Line 2885  begin
2885    Falsk := False;    Falsk := False;
2886    
2887    
2888    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2889    begin    begin
2890      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2891    end    end
2892    else if PrinterNavn = 'Ingen' then  //  else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2893    begin  //  begin
2894      ShowMessage('Der er fravalgt printer i dette program.');  //    ShowMessage('Der er fravalgt printer i dette program.');
2895    end  //  end
2896    else    else
2897    begin    begin
2898      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2899      SmsKode := '999999';  //    SmsKode := '999999';
2900      DBKbane := '999';  //    DBKbane := '999';
2901      Leveringssted := 'XXX';  //    Leveringssted := 'XXX';
2902      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);  //    PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2903      CheckPrintQue('Test');  
2904    
2905        LabelData := TLabelData.Create(nil);
2906        LabelData.LabelType := 'simpel';
2907        LabelData.SimpelLinie1 := '999999';
2908        LabelData.SimpelLinie2 := '999';
2909        LabelData.SimpelLinie3 := 'xxx';
2910        LabelPrint.PrintLabelData(Labeldata);
2911    
2912        LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2913    
2914        LabelData.Free();
2915    
2916    end;    end;
2917    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2918  end;  end;
2919    
2920  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2921  begin  begin
2922    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2923    begin    begin
2924      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2925    end    end
2926    else    else
2927    begin    begin
# Line 3299  begin Line 2930  begin
2930    end;    end;
2931  end;  end;
2932    
2933  {  
  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;  
2934    
2935  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2936  const  const
# Line 3337  var Line 2939  var
2939   tekst, filversion : String;   tekst, filversion : String;
2940  begin  begin
2941    
2942    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2943    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';
2944    
2945    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 2961  begin
2961          end          end
2962          else          else
2963          begin          begin
2964            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2965          end;          end;
2966      end      end
2967      else      else
2968      begin      begin
2969        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2970      end;      end;
2971    end;    end;
2972    
# Line 3373  begin Line 2975  begin
2975      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2976      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
2977      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2978      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
2979    end;    end;
2980    
2981    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2982    
2983  end;  end;
2984    
2985    
2986  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2987    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
2988  var  var
# Line 3432  begin Line 3035  begin
3035    
3036    if FileExists(fileName) then    if FileExists(fileName) then
3037    begin    begin
3038      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3039      begin      begin
3040        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3041        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3059  begin
3059    
3060    if FileExists(fileName) then    if FileExists(fileName) then
3061    begin    begin
3062      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3063      begin      begin
3064        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3065        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3066      end      end
3067      else      else
3068      begin      begin
3069        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3070      end;      end;
3071    end    end
3072    else    else
# Line 3472  begin Line 3075  begin
3075    end;    end;
3076  end;  end;
3077    
3078    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3079    begin
3080      Scanningtype := '7';
3081      NulstilAutomatiskValg();
3082      InitIndleveringskode();
3083    end;
3084    
3085  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3086  begin  begin
3087    
# Line 3487  begin Line 3097  begin
3097    
3098  end;  end;
3099    
3100  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3101  begin  begin
3102        Scanningtype := '2';        Scanningtype := '2';
3103        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3104        InitReturFraDao();        InitReturFraDao();
3105  end;  end;
3106    
3107  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3108  begin  begin
3109        Scanningtype := '6';        Scanningtype := '6';
3110        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3113  end;
3113    
3114  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3115  begin  begin
3116        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3117        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3118        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3119        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3120        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3121        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3122    
# Line 3517  begin Line 3127  begin
3127        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3128        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3129        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3130        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3131        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3132        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3133        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3134        ListBox1.Visible := true;        ListBox1.Visible := true;
3135        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3136        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3137        InitLillePakke();        InitLillePakke();
3138        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3139    
3140          chkForstorTilDirekte.Checked := false;
3141          chkForstorTilDirekte.Enabled := false;
3142    
3143        if BladhusSted = 0 then        if BladhusSted = 0 then
3144        begin        begin
3145          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3535  end; Line 3149  end;
3149    
3150  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3151  begin  begin
3152        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3153        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3154        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3155        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3156        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3157        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3158    
# Line 3549  begin Line 3163  begin
3163        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3164        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3165        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3166        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3167        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3168        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3169        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3170        ListBox1.Visible := true;        ListBox1.Visible := true;
3171        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3172        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3173        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3174    
3175          chkForstorTilDirekte.Checked := false;
3176          chkForstorTilDirekte.Enabled := false;
3177    
3178        InitLillePakke();        InitLillePakke();
3179  end;  end;
3180    
3181  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3182  begin  begin
3183        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3184        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3185        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3186        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3187        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3188        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3189    
# Line 3575  begin Line 3193  begin
3193        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3194        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3195        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3196        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3197        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3198        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3199        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3200        ListBox1.Visible := true;        ListBox1.Visible := true;
3201        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3202        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3203        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3204    
3205          chkForstorTilDirekte.Checked := false;
3206          chkForstorTilDirekte.Enabled := false;
3207    
3208        InitLillePakke();        InitLillePakke();
3209  end;  end;
3210    
3211  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3212  begin  begin
3213        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3214        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3215        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3216        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3217        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3218        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3219    
# Line 3602  begin Line 3224  begin
3224        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3225        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3226        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3227        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3228        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3229        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3230        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3231        ListBox1.Visible := true;        ListBox1.Visible := true;
3232        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3233        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3234        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3235        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3236        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3237        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3238        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3239    
3240          chkForstorTilDirekte.Checked := false;
3241          chkForstorTilDirekte.Enabled := true;
3242    
3243        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3244        begin        begin
3245            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3624  end; Line 3250  end;
3250    
3251  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3252  begin  begin
3253        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3254        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3255        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3256        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3257        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3258        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3259    
# Line 3638  begin Line 3264  begin
3264        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3265        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3266        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3267        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3268        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3269        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3270        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3271        ListBox1.Visible := true;        ListBox1.Visible := true;
3272        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3273        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3274        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3275    
3276        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3277    
3278          chkForstorTilDirekte.Checked := false;
3279          chkForstorTilDirekte.Enabled := true;
3280    
3281        InitLillePakke();        InitLillePakke();
3282        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3661  end; Line 3290  end;
3290    
3291  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3292  begin  begin
3293        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3294        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3295        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3296        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3297        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3298        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3299    
# Line 3675  begin Line 3304  begin
3304        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3305        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3306        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3307        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3308        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3309        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3310        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3311        ListBox1.Visible := true;        ListBox1.Visible := true;
3312        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3313        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3314        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3315        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3316    
3317          chkForstorTilDirekte.Checked := false;
3318          chkForstorTilDirekte.Enabled := false;
3319    
3320    
3321        InitLillePakke();        InitLillePakke();
3322        IndlesScanningLogFil();        IndlesScanningLogFil();
3323        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3694  begin Line 3328  begin
3328        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3329  end;  end;
3330    
3331  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3332  begin  begin
3333        Scanningtype := '3';        Scanningtype := '3';
3334        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3337  end;
3337    
3338  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3339  begin  begin
3340        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3341        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3342        PakkeshopNulstil.Visible := false;  
3343        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        btnNulstil.Visible := false;
3344          InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3345        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3346        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3347    
# Line 3720  begin Line 3355  begin
3355    
3356    
3357    
3358        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3359        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3360        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3361        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3362        ListBox1.Visible := true;        ListBox1.Visible := true;
3363        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3364    
3365        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3366        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3367        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3368    
3369          chkForstorTilDirekte.Checked := false;
3370          chkForstorTilDirekte.Enabled := false;
3371    
3372    
3373        InitLillePakke();        InitLillePakke();
3374        IndlesScanningLogFil();        IndlesScanningLogFil();
3375        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3741  begin Line 3381  begin
3381  end;  end;
3382    
3383    
3384  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3385  begin  begin
3386    InitStorPakke();    InitStorPakke();
3387  end;  end;
3388    
3389  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3390  begin  begin
3391    InitLillePakke();    InitLillePakke();
3392  end;  end;
# Line 3754  end; Line 3394  end;
3394  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3395  begin  begin
3396    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3397    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3398  //  Stregkode := '';  //  Stregkode := '';
3399  end;  end;
3400    
3401  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3402  begin  begin
3403    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3404    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3405  // 20150310: start  // 20150310: start
3406  //  Stregkode := '';  //  Stregkode := '';
3407  // 20150310: slut  // 20150310: slut
3408  end;  end;
3409    
 /// <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]]);  
3410    
     // 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;  
3411    
3412  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3413  begin  begin
# Line 3845  end; Line 3420  end;
3420    
3421  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3422  begin  begin
3423     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3424     begin     begin
3425       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3426     end     end
3427     else     else
3428     begin     begin
# Line 3859  procedure TMainForm.Testlyd2Click(Sender Line 3434  procedure TMainForm.Testlyd2Click(Sender
3434  begin  begin
3435    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3436    begin    begin
3437       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3438       begin       begin
3439         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3440       end       end
3441       else       else
3442       begin       begin
# Line 3870  begin Line 3445  begin
3445       exit;       exit;
3446    end;    end;
3447    
3448    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3449       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3450       begin       begin
3451         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3452       end       end
3453       else       else
3454       begin       begin
3455         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3456       end;       end;
3457    if Storepakker1.Checked then    if menuStorePakker.Checked then
3458       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3459       begin       begin
3460         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3461       end       end
3462       else       else
3463       begin       begin
# Line 3891  begin Line 3466  begin
3466  end;  end;
3467    
3468    
3469  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3470  begin  begin
3471        Scanningtype := '4';        Scanningtype := '4';
3472        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3478  begin;
3478    CheckCode();    CheckCode();
3479  end;  end;
3480    
3481  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3482  var  var
3483    WebSvar : String;    WebSvar : String;
3484    URLStr : String;    URLStr : String;
# Line 3913  var Line 3488  var
3488    status, kommentar : String;    status, kommentar : String;
3489    
3490  begin  begin
3491      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3492    
3493      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');
3494      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3495      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3496      StedKode := Sted;      StedKode := Sted;
3497      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3498  // 20150330: start  
3499      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3500      begin      begin
3501        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3502      end;      end;
3503  // 20150330: slut  
3504    
3505      try      try
3506      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3551  begin
3551        end;        end;
3552      end;      end;
3553    
3554      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3555    
3556      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
3557    
3558      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3559      if status = 'Fejl' then      if status = 'Fejl' then
3560      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3561         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3562         MainForm.Color := clRed;         MainForm.Color := clRed;
3563         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3564         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 3993  begin Line 3568  begin
3568           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3569         end;         end;
3570         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3571         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3572      end;      end;
3573    
3574  end;  end;
# Line 4017  begin Line 3592  begin
3592    else    else
3593      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3594  }  }
3595    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3596    
3597    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3598    CheckCode();    CheckCode();
# Line 4025  end; Line 3600  end;
3600    
3601  end;  end;
3602    
 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;  
3603    
3604  //  //
3605  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4077  begin
4077    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
4078  end;  end;
4079    
4080  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4081  begin  begin
4082      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4083      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
4084  end;  end;
4085    
4086  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4087  const  const
4088    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4089    
# Line 4556  begin Line 4092  begin
4092      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
4093  end;  end;
4094    
4095  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4096  begin  begin
4097      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4098      begin      begin
# Line 4565  begin Line 4101  begin
4101      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
4102  end;  end;
4103    
4104  function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
 var  
   S2: string;  
 begin  
   Result  := 0;  
   S2 := S + Border;  
   repeat  
     SetLength(A, Length(A) + 1);  
     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);  
     Delete(S2, 1,Length(a[Result] + Border));  
     Inc(Result);  
   until S2 = '';  
 end;  
4105    
4106  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4107  var  var
# Line 4588  var Line 4112  var
4112    I: Integer;    I: Integer;
4113    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4114    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4115    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4116    pakketyper : TStrings;    //pakketyper : TStrings;
4117      pakketyper : TDictionary<String, Integer>;
4118      tmpAntal : Integer;
4119    
4120     time, timeSamlet : TTimingHelper;
4121    
4122    
4123    antlin : Integer;    antlin : Integer;
4124    
4125    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4126    
4127    XmlFelter : TStrings;    //XmlFelter : TStrings;
4128      XmlFelter : TDictionary<String, Integer>;
4129    
4130   begin   begin
4131      XmlFelter := TStringList.Create;  
4132      pakketyper := TStringList.Create;  
4133        XmlFelter := TDictionary<String, Integer>.Create;
4134        pakketyper := TDictionary<String, Integer>.Create;
4135    
4136      linienr := 0;      linienr := 0;
4137      ListBox2.Clear;      ListBox2.Clear;
4138      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 4147  var
4147          StedKode := Sted;          StedKode := Sted;
4148        end;        end;
4149    
4150          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4151    
4152    
4153    
4154      if (Scanningtype = '6') then      if (Scanningtype = '7') then
4155       begin       begin
4156        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4157         end
4158        else if (Scanningtype = '6') then
4159         begin
4160          URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4161       end       end
4162      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4163       begin       begin
4164        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4165       end       end
4166      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4167       begin       begin
4168        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4169       end       end
4170      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4171       begin       begin
4172        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4173       end       end
4174      else      else
4175       begin       begin
# Line 4636  var Line 4177  var
4177       end;       end;
4178  // 20150310: slut  // 20150310: slut
4179    
4180        time := TTimingHelper.create();        //DEBUG
4181        timeSamlet := TTimingHelper.create();        //DEBUG
4182    
4183      try      try
4184      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4185  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4645  var Line 4189  var
4189        begin        begin
4190          // 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
4191          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4192    
4193    
4194    
4195        end;        end;
4196        on e:exception do        on e:exception do
4197        begin        begin
# Line 4655  var Line 4202  var
4202        end;        end;
4203      end;      end;
4204      try      try
4205          time.stop('HTTP Load');     //DEBUG
4206    
4207        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4208    
4209          time.stop('XML Load');     //DEBUG
4210    
4211    
4212    
4213    
4214    
4215    
4216        antlin := 0;        antlin := 0;
4217        antlinIdag := 0;        antlinIdag := 0;
# Line 4667  var Line 4222  var
4222            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4223              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4224              begin              begin
4225                 antlin := antlin + 1;                 Inc(antlin);
4226                 // 20150306: start                 // 20150306: start
4227                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4228                begin                begin
4229                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4230                   begin                   begin
4231                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4232                   end                   end
4233                   else                   else
4234                   begin                   begin
4235                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4236                   end;                   end;
4237                end;                end;
4238                 // 20150306: slut                 // 20150306: slut
4239              end;              end;
4240            end;            end;
4241            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4242                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4243                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4244                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4245                  end
4246                else                else
4247                  XmlFelter.values[Node.NodeName] := '1';                begin
4248                    XmlFelter.Add(Node.NodeName, 1);
4249                  end;
4250    
4251        end;        end;
4252        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4254  var
4254        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4255        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4256    
4257          time.stop('Antal Linier');//DEBUG
4258    
4259          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4260    
4261        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4262        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4263        begin        begin
# Line 4702  var Line 4266  var
4266        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4267    
4268        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4269    
4270    
4271        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4272            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4273            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4275  var
4275                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4276                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4277                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4278              end;              end
4279              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4280                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4281                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4282                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4283              end;              end
4284              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4285                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4286                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4287                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4288              end;              end
4289              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4290                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4291                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4292                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4293              end;              end
4294              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4295                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4296                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4297                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4298                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4299                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4300                    pakketyper.TryGetValue(pakketype, tmpAntal);
4301                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4302                  end
4303                else                else
4304                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4305              end;              end
4306              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4307                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4308                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4309                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4310                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4311                  begin                  begin
4312  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4313                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4314                    begin                    begin
4315                      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
4316                    end                    end
4317                    else                    else
4318                    begin                    begin
# Line 4753  var Line 4321  var
4321                    linienr := linienr + 1;                    linienr := linienr + 1;
4322                  end;                  end;
4323              end;              end;
4324    
4325    
4326              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4327              begin              begin
4328                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4338  var
4338              end;              end;
4339            end;            end;
4340        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4341    
4342          // Free up the list object  
4343          time.stop('Fyld Listbox2');//DEBUG
4344    
4345    
4346          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4347    
4348    
4349          for pakketype in pakketyper.Keys do
4350          begin
4351            pakketyper.TryGetValue(pakketype, tmpAntal);
4352            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4353          end;
4354    
4355            // Free up the dictionary object
4356        pakketyper.Free;        pakketyper.Free;
4357    
4358    
4359    
4360  //      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.');
4361        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4362        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4880  var Line 4462  var
4462        end;        end;
4463      end;      end;
4464    
4465        time.stop('Done');//DEBUG
4466        timeSamlet.stop('SamletTid');//DEBUG
4467    
4468    
4469  end;  end;
4470    
4471  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 4934  var Line 4520  var
4520     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4521     imorgenYmd : string;     imorgenYmd : string;
4522     logFilnavn : string;     logFilnavn : string;
4523      error : Integer;     //error : Integer;
4524    
4525  begin  begin
4526    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4612  begin
4612          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4613          S := buffer;          S := buffer;
4614          SetLength(A,0);          SetLength(A,0);
4615          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4616          if (length(A) < 2) then          if (length(A) < 2) then
4617          begin          begin
4618            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4619          end;          end;
4620            if (length(A) > 1) then            if (length(A) > 1) then
4621            begin            begin
# Line 5055  begin Line 4641  begin
4641          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4642          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4643          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4644          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4645        end;        end;
4646      end;      end;
4647    end    end
# Line 5064  begin Line 4650  begin
4650        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4651        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4652        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4653        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4654    end;    end;
4655  end;  end;
4656    
# Line 5103  begin Line 4689  begin
4689          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4690          S := buffer;          S := buffer;
4691          SetLength(A,0);          SetLength(A,0);
4692          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4693          if (length(A) < 3) then          if (length(A) < 3) then
4694          begin          begin
4695            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4696          end;          end;
4697          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4698          begin          begin
# Line 5135  begin Line 4721  begin
4721          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4722          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4723          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4724          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4725        end;        end;
4726      end;      end;
4727    end    end
# Line 5144  begin Line 4730  begin
4730        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4731        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4732        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4733        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4734    end;    end;
4735  end;  end;
4736    
# Line 5202  procedure TMainForm.VisAlarmSkaerm(strMe Line 4788  procedure TMainForm.VisAlarmSkaerm(strMe
4788  begin  begin
4789    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4790    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4791    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4792    MainForm.Color := clRed;    MainForm.Color := clRed;
4793    
4794    
4795    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4796    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4797    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4798    PakkeshopNulstil.Visible := true;  
4799      if (strMessage <> '') then
4800      begin
4801        ListBox1.Items.Insert(0, strMessage);
4802        KommentarST.Caption := strMessage;
4803      end;
4804    
4805      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4806    
4807  end;  end;
4808    
4809  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4863  begin
4863    result := svar;    result := svar;
4864  end;  end;
4865    
 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;  
4866    
4867  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4868  begin  begin
# Line 5301  begin Line 4876  begin
4876    end;    end;
4877  end;  end;
4878    
4879  function TMainForm.AdobeReaderExists: Boolean;  
4880  var  //Nedarvet fra IParentForm
4881    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4882  begin  begin
4883    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4884  end;  end;
4885    
4886  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4887  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;  
4888  begin  begin
4889      ListBox1.Items.Insert(0, msg);
4890      SkrivScanningLogFil(msg);
4891    end;
4892    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4893    
4894    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4895    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4896      printerTxt := 'Der er fravalgt printer i dette program';  begin
4897      ListBox1.Items.Insert(0,printerTxt);  
4898      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4899    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4900    begin    begin
4901      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4902      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4903      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4904    end    end
4905    else    else
4906    begin    begin
4907      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4908      try      PrinterstatusStaticText1.Color := clWhite;
4909        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;  
4910    end;    end;
4911  end;  end;
4912    
4913  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4914  var  function TMainForm.GetFormObject() : TForm;
4915    hSession, hfile, hRequest: hInternet;  begin
4916    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;  
   
4917  end;  end;
4918    
4919  // 20150310: start  //Nedarvet fra IParentForm
4920  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetXMLDocument() : TXMLDocument;
 var  
    R: TRect;  
    Rgn: HRGN;  
4921  begin  begin
4922     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;  
4923  end;  end;
4924  // 20150310: slut  
4925    
4926  end.  end.
4927    

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

  ViewVC Help
Powered by ViewVC 1.1.20