/[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 3107 by torben, Tue Aug 23 14:08:44 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;
729        PanelValg6.Enabled := false;  
730        PanelValg6.Font.Color := clInactiveCaption;       // her skal vi også disable de menupunkter BK ikke kan bruge
731       // her skal vi også disable de menupunkter DBK ikke kan bruge        menuNatxpressReturDAO1.Enabled := false;
732        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
       Returpakkerfraboghandler1.Enabled := false;  
733    
734        Pakkeshoplevering1.Enabled := false;        //Returpakkerfrapakkeshop1.Enabled := false;
       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;  
   
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
941    
942    
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
943    
944        LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
945      if (PrinterNavn <> '') then      LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
     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 (chkUdenforSpecifikation.Checked = True) then
1444        begin
1445          URLStr := Format(Config.URLUdenforSpecifikation,[Sted,Stregkode]);
1446          //ShowMessage( URLStr);
1447    
1448          WebSvar := IdHTTP1.Get(Config.URLUdenforSpecifikation);
1449          //ShowMessage( WebSvar );
1450    
1451          chkUdenforSpecifikation.Checked := False;
1452          LabelPrint.PrintLabel(Stregkode);
1453          exit;   //leave procedure
1454        end;
1455    
1456    
1457    
1458    
1459      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1460      begin      begin
1461        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1462        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1469  begin
1469        end;        end;
1470      end;      end;
1471    
1472      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1473        begin        begin
1474          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1475             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1476             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1477             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1478             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1479             Stregkode := '';             Stregkode := '';
1480             InitScreen();             InitScreen();
1481        end        end
1482      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1483        begin        begin
1484          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1485             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1487  begin
1487             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1488             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1489             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1490             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1491             Stregkode := '';             Stregkode := '';
1492             InitScreen();             InitScreen();
1493        end        end
1494      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1495        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1496         begin         begin
1497            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1568  begin Line 1500  begin
1500              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1501              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1502    
1503              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1504    
1505             end             end
1506            else            else
# Line 1585  begin Line 1517  begin
1517             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1518             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1519             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1520             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1521                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1522             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1523                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1524             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1525           end           end
1526          else          else
1527           begin           begin
1528                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1529                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1530                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1531                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1532                                    
1533                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1539  begin
1539          InitScreen();          InitScreen();
1540       end;       end;
1541    
1542      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
1543      begin      begin
1544         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1545           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1546            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1547         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1548            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1549         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1550         try         try
# Line 1621  begin Line 1554  begin
1554            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1555            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1556            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1557               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1558               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1559              exit;              exit;
1560            end;            end;
1561            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1562            begin            begin
1563              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1564              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1645  begin Line 1574  begin
1574              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1575              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1576              begin              begin
1577                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1578                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1579                MainForm.Color := clRed;                MainForm.Color := clRed;
1580              end;              end;
1581           end;           end;
1582            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
1583            begin            begin
1584              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1585              if Storepakker1.Checked then              if menuStorePakker.Checked then
1586              begin              begin
1587                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1588              end              end
1589              else              else
1590              begin              begin
1591                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1592              end;              end;
1593              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1594            end            end
1595            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1596            begin            begin
1597              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1598              if Storepakker1.Checked then              if menuStorePakker.Checked then
1599              begin              begin
1600                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1601              end              end
1602              else              else
1603              begin              begin
1604                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1605              end;              end;
1606              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1607            end            end
1608            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1609            begin            begin
# Line 1685  begin Line 1614  begin
1614            end            end
1615            else            else
1616            begin            begin
1617              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1618            end;            end;
1619           if not PakkeshopNulstil.Visible then  
1620             if not btnNulstil.Visible then
1621            begin            begin
1622    
1623              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1624              begin              begin
1625                if Storepakker1.Checked then                if menuStorePakker.Checked then
1626                begin                begin
1627                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1628                end                end
1629                else                else
1630                begin                begin
1631                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1632                end;                end;
1633                InitLillePakke();                InitLillePakke();
1634              end;              end;
# Line 1738  begin Line 1666  begin
1666    
1667    Key := #0;    Key := #0;
1668    
1669    
1670    
1671    
1672    
1673    
1674  end; //End of OnKeyPress  end; //End of OnKeyPress
1675    
1676    
1677    
1678  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1679  const  const
1680    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1747  var Line 1682  var
1682    WebSvar : String;    WebSvar : String;
1683    URLStr : String;    URLStr : String;
1684  begin  begin
1685    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1686    begin    begin
1687      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1688      try      try
1689        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1690        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1762  begin Line 1697  begin
1697        ShowMessage(logTekst);        ShowMessage(logTekst);
1698        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1699        // 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
1700        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1701        Application.Terminate;        Application.Terminate;
1702      end;      end;
1703      end;      end;
# Line 1781  var Line 1716  var
1716    
1717    
1718  begin  begin
1719      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
1720      begin      begin
1721        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1722          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1723          begin          begin
1724              wrkAntalSenere := 0;//initial Value
1725    
1726            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1727            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1728            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1729            begin            begin
1730              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1731              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1732  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1733  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1734  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1735              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1736            end            end
1737            else     // kun idag            else     // kun idag
1738            begin            begin
# Line 1900  begin Line 1836  begin
1836                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1837              end;              end;
1838            end;            end;
1839  // 20150310: slut  
1840            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1841          end;          end;
1842      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1866  procedure TMainForm.InitBladhus();
1866    
1867  begin  begin
1868    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1869    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1870    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1871    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1872    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1873    ListBox1.Visible := true;    ListBox1.Visible := true;
1874  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1875  // 20150317: start  
1876  (*    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  
1877    begin    begin
1878      IndlesScanningLogFil();      IndlesScanningLogFil();
1879    end;    end;
# Line 1989  begin Line 1885  begin
1885      01 :      01 :
1886            begin;      // NS            begin;      // NS
1887              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1888              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1889              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1890              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1891              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1892              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2001  begin Line 1897  begin
1897      02 :      02 :
1898            begin;    // BK            begin;    // BK
1899              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1900              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1901              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1902              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1903              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1904              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1905              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1906              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1907              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1908              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 1912  begin
1912              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1913             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1914              begin              begin
1915                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1916              end              end
1917              else              else
1918              begin              begin
1919                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1920              end;              end;
1921              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1922              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1923              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1924              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1925              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2039  begin Line 1935  begin
1935            end;            end;
1936      04 :  begin;           // DBK      04 :  begin;           // DBK
1937              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1938              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1939              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1940              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1941              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1942              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1943              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1944              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1945              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1946            end;            end;
# Line 2060  var Line 1956  var
1956    URLStr : String;    URLStr : String;
1957    pakkestorrelse : String;    pakkestorrelse : String;
1958    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1959    
1960      PakkeshopLabel: TLabelData;
1961  begin  begin
1962    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1963    begin    begin
# Line 2069  begin Line 1967  begin
1967    begin    begin
1968      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1969    end;    end;
1970    if Pakkernormal1.Checked then  
1971    
1972      if menuNatXpress1.Checked then
1973    begin    begin
1974       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1975       begin       begin
1976         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1977       end;       end;
1978       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1979      end
1980      else if menuNatxpressReturDAO1.Checked then
1981      begin
1982         URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1983    end    end
1984    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
1985    begin    begin
1986       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
1987    end    end
1988    else if Returpakkerfraboghandler1.Checked then    else if menuDaoDirekte1.Checked then
1989    begin    begin
1990       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
1991    end    end
1992    else if Budlevering1.Checked then    else if menuPakkeshop1.Checked then
1993    begin    begin
1994       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
1995    end    end
1996    else if Pakkeshoplevering1.Checked then    else if menuPakkeshopRetur1.Checked then
1997    begin    begin
1998       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
1999    end    end
2000    else if Returpakkerfrapakkeshop1.Checked then    else if menuIndlevering.Checked then
2001    begin    begin
2002       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);      URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
2003    end    end
2004    else    else
2005    begin    begin
2006      exit;      exit;
2007    end;    end;
2008    
2009      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2010      begin
2011        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2012      end;
2013    
2014    try    try
2015      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2016      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2032  begin
2032          end;          end;
2033      end;      end;
2034    end;    end;
2035    
2036    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2037    try    try
2038      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2039       begin       begin
2040        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2041        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2043  begin
2043        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2044        PrintNyLabel := False;        PrintNyLabel := False;
2045    
2046        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2047        begin        begin
2048          try          try
2049            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2143  begin Line 2054  begin
2054          begin          begin
2055            PrintNyLabel := True;            PrintNyLabel := True;
2056          end;          end;
 // 20150310: start  
2057        end;        end;
 // 20150310: slut  
2058       end       end
2059        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2060        begin
2061    
2062    
2063    
2064    
2065         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2066         if (Kommentar = 'Ok') then
2067         begin
2068           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2069           PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2070           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2071           Stregkode := PakkeshopLabel.Stregkode;
2072    
2073           LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2074           chkForstorTilDirekte.Checked := false;
2075    
2076         end;
2077    
2078    
2079        end
2080      else      else
2081       begin       begin
2082        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2084  begin
2084        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2085        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2086        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2087        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2088          begin          begin
2089          try          try
2090            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2109  begin
2109          PrintNyLabel := True;          PrintNyLabel := True;
2110        end;        end;
2111      end;      end;
2112    
2113    
2114      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2115      begin      begin
2116        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2117        begin        begin
2118            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2119            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2120        end;        end;
2121      end      end
2122      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2123      begin      begin
2124         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2125         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;  
2126      end;      end;
2127    except on e:exception do    except on e:exception do
2128      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2216  begin Line 2141  begin
2141    //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
2142    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2143    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2144    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2145      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2146    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2147    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2153  begin
2153      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2154    end;    end;
2155    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2156    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2157    begin    begin
2158      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2159    end;    end;
2160    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2161    begin    begin
2162      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2163    end;    end;
2164    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2165       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2166    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2167    begin    begin
2168      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2169    end;    end;
2170    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2171    begin    begin
2172       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2173        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2179  begin
2179          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2180        end;        end;
2181    end;    end;
2182    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2183    begin    begin
2184      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2185    end;    end;
2186    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2187    begin    begin
2188      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2189      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2196  begin
2196        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2197      end;      end;
2198    end;    end;
2199      if menuIndlevering.Checked then
2200      begin
2201        List1Msg := Stregkode;
2202      end;
2203    
2204    
2205    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2206    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2207    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2208  end;  end;
2209    
2210  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2211  begin  begin
2212    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2213    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2223  pakkeForkertSted : Integer;
2223    kontrolKoreliste : string;    kontrolKoreliste : string;
2224    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2225  begin  begin
2226    if Budlevering1.Checked then    if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2227       RuteNummerST.Color := HexToTColor(Farve);    begin
2228        LabelPrint.PrintLabel( Stregkode );
2229      end;
2230    
2231    
2232      exit;
2233    
2234      if menuDaoDirekte1.Checked then
2235         RuteNummerST.Color := TUtils.HexToTColor(Farve);
2236    
2237    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2238    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2269  begin
2269        end;        end;
2270    end    end
2271    else    else
2272    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2273    begin    begin
2274       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2275       begin       begin
2276          PrintNyLabel := false;          PrintNyLabel := false;
2277    
2278          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
2279          MainForm.Color := clRed;          MainForm.Color := clRed;
2280          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2281    
2282       end       end
2283       else       else
# Line 2349  begin Line 2288  begin
2288            PrintNyLabel := true;            PrintNyLabel := true;
2289            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2290            nyFarve := Farve;            nyFarve := Farve;
2291            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2292            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2293            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2294            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2295            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2296            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2297    
2298            if (PrinterNavn = 'Ingen') then  //          if (Config.PrinterNavn = 'Ingen') then
2299            begin  //          begin
2300               PrintNyLabel := false;  //             PrintNyLabel := false;
2301            end;  //          end;
2302    
2303            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
2304            begin            begin
2305              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2306              MainForm.Color := clRed;              MainForm.Color := clRed;
2307              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2308            end;            end;
2309    
2310         end;         end;
# Line 2389  begin Line 2328  begin
2328    
2329            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
2330            begin            begin
2331              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2332              MainForm.Color := clRed;              MainForm.Color := clRed;
2333              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2334            end;            end;
2335    
2336         end;         end;
# Line 2399  begin Line 2338  begin
2338    
2339    end;    end;
2340    
2341    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2342    begin    begin
2343      case BladhusSted of      case BladhusSted of
2344        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2350  begin
2350               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2351  // 20150304: slut  // 20150304: slut
2352                begin                begin
2353                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2354                end;                end;
2355              end;              end;
2356        01 :  begin;        01 :  begin;
2357               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2358                    // 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
2359                    // 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')
2360                begin                begin
2361                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2362                end;                end;
2363              end;              end;
2364        02 :  begin;        02 :  begin;
2365                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
2366                begin                begin
2367                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2368                end;                end;
2369              end;              end;
2370        03 :  begin;        03 :  begin;
2371               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2372                    // 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
2373                    // 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')
2374               begin               begin
2375                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2376               end;               end;
2377              end;              end;
2378        04 :  begin;        04 :  begin;
2379                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2380                begin                begin
2381                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2382                end;                end;
2383              end;              end;
2384        else        else
# Line 2448  begin Line 2387  begin
2387    end;    end;
2388    
2389  // 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
2390    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
2391    begin    begin
2392      exit;      exit;
2393    end;    end;
2394    
2395    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
2396    begin    begin
2397    end    end
2398    else    else
2399    begin    begin
2400      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
2401      begin      begin
2402        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2403        if (chkAltidPrintLabel.Checked) then        if (chkAltidPrintLabel.Checked) then
# Line 2475  begin Line 2414  begin
2414        end;        end;
2415        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2416        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2417        with Printer do  
2418        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2419          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;  
2420      end;      end;
2421    end;    end;
2422    
2423  end;  end;
2424    
 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;  
2425    
2426    
2427  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2428  begin  begin
2429      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2430      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2431  end;  end;
2432    
2433  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2434  begin  begin
2435      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2436      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2437  end;  end;
2438    
# Line 2596  begin Line 2475  begin
2475    end;    end;
2476  end;  end;
2477    
2478  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2479  begin  begin
2480        Scanningtype := '5';        Scanningtype := '5';
2481        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2484  end;
2484    
2485  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2486  begin  begin
2487      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2488      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2489      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2490    
# Line 2617  begin Line 2496  begin
2496        // 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)
2497        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2498        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2499        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2500      end;      end;
2501  // 20150317: slut  // 20150317: slut
2502  end;  end;
# Line 2632  begin Line 2511  begin
2511    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2512    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...');
2513    
2514          // Tjekker urls    try
2515          logTekst := 'Tjekker urls.';      // Tjekker urls
2516          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2517          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2518        SkrivScanningLogFil(logTekst);
2519    
         // 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;  
2520    
         // 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;  
2521    
2522          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2523          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2524          begin      begin
2525            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2526            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;  
2527    
2528          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2529          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2530          begin      begin
2531            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2532            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;  
2533    
2534          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2535          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2536          begin      begin
2537            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2538            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;  
2539    
2540          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2541          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2542          begin      begin
2543            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2544            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;  
2545    
2546          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2547          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2548          or (PanelValg4.Enabled = true) then      begin
2549          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2550            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;  
2551    
2552          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2553          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2554          begin      begin
2555            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2556            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;  
2557    
2558          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2559          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2560          begin      begin
2561            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2562            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;  
2563    
2564          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2565          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2566          begin      begin
2567            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2568            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;  
2569    
2570        // Tjekker UrlPakkeshopManglendeReturScanninger
2571        if PanelValg6.Enabled = true then
2572        begin
2573          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2574        end;
2575    
2576          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2577          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2578          begin      begin
2579            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2580            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2581              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;  
2582    
2583        // Tjekker UrlEKLoverforsel
2584        if PanelValg1.Enabled = true then
2585        begin
2586          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2587        end;
2588    
         // 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;  
2589    
2590          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2591          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2592          begin      begin
2593            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2594            SkrivScanningLogFil(logTekst);      end;
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2595    
         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;  
2596    
2597        // Tjekker UrlFindPakketype
2598        TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2599    
2600        // Tjekker UrlSendPrograminfo
2601        TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2602    
2603    
2604    
2605        logTekst := 'urls er ok';
2606        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2607        SkrivScanningLogFil(logTekst);
2608    
2609      Except
2610        Config.TjekUrls := '-';   // markerer at der var fejl
2611    
2612      end;
2613  end;  end;
2614    
2615  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2616  var  const
2617     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2618  begin  begin
2619     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2620     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2621     Result := SystemTimeToDateTime(SystemTime) ;    begin
2622        logTekst := UrlNavn + ' accepteret: ' + Url;
2623        SkrivScanningLogFil(logTekst);
2624      end
2625      else
2626      begin
2627        inc(urlFejl);   // Optæller antal fejl
2628        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2629        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2630        if Config.TjekUrls = '1' then
2631        begin
2632          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2633        end;
2634    
2635        SkrivScanningLogFil(logTekst);
2636    
2637        if Config.TjekUrls = '1' then
2638        begin
2639          ShowMessage(logTekst);
2640          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2641          Application.Terminate;
2642    
2643          raise Exception.Create('UrlFejl');
2644    
2645        end;
2646      end;
2647    
2648  end;  end;
2649    
2650    
2651    
2652  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2653  var  var
2654    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2665  begin
2665      repeat      repeat
2666        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2667        begin        begin
2668    
2669          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2670          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2671          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2672          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2673          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2674          // (æ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 2705  begin
2705    end;    end;
2706  end;  end;
2707    
2708  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2709  begin  begin
2710    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2711    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2712    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2713    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2714    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2715    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3090  begin Line 2718  begin
2718    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2719    begin    begin
2720       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2721       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
2722       Application.Terminate;       Application.Terminate;
2723       exit;       exit;
2724    end;    end;
# Line 3099  begin Line 2727  begin
2727  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2728    if Farve <> '' then    if Farve <> '' then
2729    begin    begin
2730       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  
2731    end;    end;
2732    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2733    begin    begin
2734       InitLillePakke();       InitLillePakke();
2735    end;    end;
# Line 3173  end; Line 2791  end;
2791    
2792  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2793  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;  
 *)  
2794  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2795  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2796       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2797       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2798       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2799  // 20150311: slut  
2800    
2801    
2802  end;  end;
2803    
2804  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2805  begin  begin
2806        Scanningtype := '1';        Scanningtype := '1';
2807        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3215  var Line 2820  var
2820    Leveringssted : String;    Leveringssted : String;
2821    orgTjekUrls : String;    orgTjekUrls : String;
2822  begin  begin
2823    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2824    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2825    begin    begin
2826      TjekkerUrls();      TjekkerUrls();
2827    end;    end;
2828    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2829    begin    begin
2830      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2831      RuteNummer := '';      RuteNummer := '';
# Line 3229  begin Line 2834  begin
2834      Koreliste := '';      Koreliste := '';
2835      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2836      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2837      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2838      MainForm.Color := clRed;      MainForm.Color := clRed;
2839      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2840    end    end
2841    else    else
2842    begin    begin
# Line 3242  begin Line 2847  begin
2847      SmsKode := '999999';      SmsKode := '999999';
2848      DBKbane := '999';      DBKbane := '999';
2849      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2850    
2851    
2852      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2853      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2854    end;    end;
2855    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2856    
2857  end;  end;
2858    
# Line 3259  var Line 2866  var
2866    SmsKode : String;    SmsKode : String;
2867    DBKbane : String;    DBKbane : String;
2868    Leveringssted : String;    Leveringssted : String;
2869      LabelData : TLabelData;
2870  begin  begin
2871    RuteNummer := 'Rutenr';    RuteNummer := 'Rutenr';
2872    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
# Line 3266  begin Line 2874  begin
2874    Falsk := False;    Falsk := False;
2875    
2876    
2877    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2878    begin    begin
2879      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2880    end    end
2881    else if PrinterNavn = 'Ingen' then  //  else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2882    begin  //  begin
2883      ShowMessage('Der er fravalgt printer i dette program.');  //    ShowMessage('Der er fravalgt printer i dette program.');
2884    end  //  end
2885    else    else
2886    begin    begin
2887      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2888      SmsKode := '999999';  //    SmsKode := '999999';
2889      DBKbane := '999';  //    DBKbane := '999';
2890      Leveringssted := 'XXX';  //    Leveringssted := 'XXX';
2891      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);  //    PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2892      CheckPrintQue('Test');  
2893    
2894        LabelData := TLabelData.Create(nil);
2895        LabelData.LabelType := 'simpel';
2896        LabelData.SimpelLinie1 := '999999';
2897        LabelData.SimpelLinie2 := '999';
2898        LabelData.SimpelLinie3 := 'xxx';
2899        LabelPrint.PrintLabelData(Labeldata);
2900    
2901        LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2902    
2903        LabelData.Free();
2904    
2905    end;    end;
2906    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2907  end;  end;
2908    
2909  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2910  begin  begin
2911    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2912    begin    begin
2913      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2914    end    end
2915    else    else
2916    begin    begin
# Line 3299  begin Line 2919  begin
2919    end;    end;
2920  end;  end;
2921    
2922  {  
  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;  
2923    
2924  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2925  const  const
# Line 3337  var Line 2928  var
2928   tekst, filversion : String;   tekst, filversion : String;
2929  begin  begin
2930    
2931    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2932    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';
2933    
2934    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 2950  begin
2950          end          end
2951          else          else
2952          begin          begin
2953            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2954          end;          end;
2955      end      end
2956      else      else
2957      begin      begin
2958        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2959      end;      end;
2960    end;    end;
2961    
# Line 3373  begin Line 2964  begin
2964      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2965      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
2966      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2967      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
2968    end;    end;
2969    
2970    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2971    
2972  end;  end;
2973    
2974    
2975  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2976    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
2977  var  var
# Line 3432  begin Line 3024  begin
3024    
3025    if FileExists(fileName) then    if FileExists(fileName) then
3026    begin    begin
3027      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3028      begin      begin
3029        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3030        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3048  begin
3048    
3049    if FileExists(fileName) then    if FileExists(fileName) then
3050    begin    begin
3051      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3052      begin      begin
3053        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3054        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3055      end      end
3056      else      else
3057      begin      begin
3058        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3059      end;      end;
3060    end    end
3061    else    else
# Line 3472  begin Line 3064  begin
3064    end;    end;
3065  end;  end;
3066    
3067    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3068    begin
3069      Scanningtype := '7';
3070      NulstilAutomatiskValg();
3071      InitIndleveringskode();
3072    end;
3073    
3074  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3075  begin  begin
3076    
# Line 3487  begin Line 3086  begin
3086    
3087  end;  end;
3088    
3089  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3090  begin  begin
3091        Scanningtype := '2';        Scanningtype := '2';
3092        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3093        InitReturFraDao();        InitReturFraDao();
3094  end;  end;
3095    
3096  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3097  begin  begin
3098        Scanningtype := '6';        Scanningtype := '6';
3099        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3102  end;
3102    
3103  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3104  begin  begin
3105        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3106        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3107        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3108        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3109        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3110        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3111    
# Line 3517  begin Line 3116  begin
3116        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3117        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3118        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3119        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3120        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3121        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3122        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3123        ListBox1.Visible := true;        ListBox1.Visible := true;
3124        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3125        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3126        InitLillePakke();        InitLillePakke();
3127        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3128    
3129          chkForstorTilDirekte.Checked := false;
3130          chkForstorTilDirekte.Enabled := false;
3131    
3132        if BladhusSted = 0 then        if BladhusSted = 0 then
3133        begin        begin
3134          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3535  end; Line 3138  end;
3138    
3139  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3140  begin  begin
3141        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3142        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3143        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3144        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3145        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3146        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3147    
# Line 3549  begin Line 3152  begin
3152        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3153        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3154        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3155        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3156        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3157        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3158        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3159        ListBox1.Visible := true;        ListBox1.Visible := true;
3160        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3161        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3162        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3163    
3164          chkForstorTilDirekte.Checked := false;
3165          chkForstorTilDirekte.Enabled := false;
3166    
3167        InitLillePakke();        InitLillePakke();
3168  end;  end;
3169    
3170  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3171  begin  begin
3172        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3173        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3174        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3175        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3176        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3177        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3178    
# Line 3575  begin Line 3182  begin
3182        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3183        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3184        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3185        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3186        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3187        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3188        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3189        ListBox1.Visible := true;        ListBox1.Visible := true;
3190        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3191        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3192        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3193    
3194          chkForstorTilDirekte.Checked := false;
3195          chkForstorTilDirekte.Enabled := false;
3196    
3197        InitLillePakke();        InitLillePakke();
3198  end;  end;
3199    
3200  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3201  begin  begin
3202        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3203        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3204        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3205        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3206        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3207        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3208    
# Line 3602  begin Line 3213  begin
3213        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3214        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3215        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3216        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3217        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3218        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3219        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3220        ListBox1.Visible := true;        ListBox1.Visible := true;
3221        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3222        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3223        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3224        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3225        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3226        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3227        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3228    
3229          chkForstorTilDirekte.Checked := false;
3230          chkForstorTilDirekte.Enabled := true;
3231    
3232        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3233        begin        begin
3234            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3624  end; Line 3239  end;
3239    
3240  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3241  begin  begin
3242        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3243        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3244        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3245        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3246        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3247        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3248    
# Line 3638  begin Line 3253  begin
3253        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3254        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3255        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3256        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3257        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3258        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3259        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3260        ListBox1.Visible := true;        ListBox1.Visible := true;
3261        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3262        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3263        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3264    
3265          BtnEKLoverforsel.Enabled := true;
3266    
3267        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3268          chkForstorTilDirekte.Enabled := true;
3269    
3270        InitLillePakke();        InitLillePakke();
3271        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3661  end; Line 3279  end;
3279    
3280  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3281  begin  begin
3282        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3283        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3284        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3285        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3286        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3287        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3288    
# Line 3675  begin Line 3293  begin
3293        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3294        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3295        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3296        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3297        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3298        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3299        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3300        ListBox1.Visible := true;        ListBox1.Visible := true;
3301        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3302        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3303        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3304        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3305    
3306          chkForstorTilDirekte.Checked := false;
3307          chkForstorTilDirekte.Enabled := false;
3308    
3309    
3310        InitLillePakke();        InitLillePakke();
3311        IndlesScanningLogFil();        IndlesScanningLogFil();
3312        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3694  begin Line 3317  begin
3317        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3318  end;  end;
3319    
3320  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3321  begin  begin
3322        Scanningtype := '3';        Scanningtype := '3';
3323        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3326  end;
3326    
3327  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3328  begin  begin
3329        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3330        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3331        PakkeshopNulstil.Visible := false;  
3332        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        btnNulstil.Visible := false;
3333          InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3334        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3335        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3336    
# Line 3720  begin Line 3344  begin
3344    
3345    
3346    
3347        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3348        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3349        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3350        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3351        ListBox1.Visible := true;        ListBox1.Visible := true;
3352        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3353    
3354        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3355        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3356        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3357    
3358          chkForstorTilDirekte.Checked := false;
3359          chkForstorTilDirekte.Enabled := false;
3360    
3361    
3362        InitLillePakke();        InitLillePakke();
3363        IndlesScanningLogFil();        IndlesScanningLogFil();
3364        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3741  begin Line 3370  begin
3370  end;  end;
3371    
3372    
3373  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3374  begin  begin
3375    InitStorPakke();    InitStorPakke();
3376  end;  end;
3377    
3378  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3379  begin  begin
3380    InitLillePakke();    InitLillePakke();
3381  end;  end;
# Line 3754  end; Line 3383  end;
3383  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3384  begin  begin
3385    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3386    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3387  //  Stregkode := '';  //  Stregkode := '';
3388  end;  end;
3389    
3390  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3391  begin  begin
3392    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3393    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3394  // 20150310: start  // 20150310: start
3395  //  Stregkode := '';  //  Stregkode := '';
3396  // 20150310: slut  // 20150310: slut
3397  end;  end;
3398    
 /// <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]]);  
3399    
     // 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;  
3400    
3401  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3402  begin  begin
# Line 3845  end; Line 3409  end;
3409    
3410  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3411  begin  begin
3412     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3413     begin     begin
3414       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3415     end     end
3416     else     else
3417     begin     begin
# Line 3859  procedure TMainForm.Testlyd2Click(Sender Line 3423  procedure TMainForm.Testlyd2Click(Sender
3423  begin  begin
3424    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3425    begin    begin
3426       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3427       begin       begin
3428         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3429       end       end
3430       else       else
3431       begin       begin
# Line 3870  begin Line 3434  begin
3434       exit;       exit;
3435    end;    end;
3436    
3437    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3438       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3439       begin       begin
3440         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3441       end       end
3442       else       else
3443       begin       begin
3444         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3445       end;       end;
3446    if Storepakker1.Checked then    if menuStorePakker.Checked then
3447       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3448       begin       begin
3449         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3450       end       end
3451       else       else
3452       begin       begin
# Line 3891  begin Line 3455  begin
3455  end;  end;
3456    
3457    
3458  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3459  begin  begin
3460        Scanningtype := '4';        Scanningtype := '4';
3461        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3467  begin;
3467    CheckCode();    CheckCode();
3468  end;  end;
3469    
3470  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3471  var  var
3472    WebSvar : String;    WebSvar : String;
3473    URLStr : String;    URLStr : String;
# Line 3913  var Line 3477  var
3477    status, kommentar : String;    status, kommentar : String;
3478    
3479  begin  begin
3480      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3481    
3482      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');
3483      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3484      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3485      StedKode := Sted;      StedKode := Sted;
3486      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3487  // 20150330: start  
3488      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3489      begin      begin
3490        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3491      end;      end;
3492  // 20150330: slut  
3493    
3494      try      try
3495      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3540  begin
3540        end;        end;
3541      end;      end;
3542    
3543      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3544    
3545      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
3546    
3547      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3548      if status = 'Fejl' then      if status = 'Fejl' then
3549      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3550         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3551         MainForm.Color := clRed;         MainForm.Color := clRed;
3552         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3553         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 3993  begin Line 3557  begin
3557           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3558         end;         end;
3559         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3560         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3561      end;      end;
3562    
3563  end;  end;
# Line 4017  begin Line 3581  begin
3581    else    else
3582      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3583  }  }
3584    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3585    
3586    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3587    CheckCode();    CheckCode();
# Line 4025  end; Line 3589  end;
3589    
3590  end;  end;
3591    
 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;  
3592    
3593  //  //
3594  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4066  begin
4066    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
4067  end;  end;
4068    
4069  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4070  begin  begin
4071      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4072      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
4073  end;  end;
4074    
4075  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4076  const  const
4077    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4078    
# Line 4556  begin Line 4081  begin
4081      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
4082  end;  end;
4083    
4084  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4085  begin  begin
4086      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4087      begin      begin
# Line 4565  begin Line 4090  begin
4090      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
4091  end;  end;
4092    
4093  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;  
4094    
4095  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4096  var  var
# Line 4588  var Line 4101  var
4101    I: Integer;    I: Integer;
4102    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4103    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4104    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4105    pakketyper : TStrings;    //pakketyper : TStrings;
4106      pakketyper : TDictionary<String, Integer>;
4107      tmpAntal : Integer;
4108    
4109     time, timeSamlet : TTimingHelper;
4110    
4111    
4112    antlin : Integer;    antlin : Integer;
4113    
4114    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4115    
4116    XmlFelter : TStrings;    //XmlFelter : TStrings;
4117      XmlFelter : TDictionary<String, Integer>;
4118    
4119   begin   begin
4120      XmlFelter := TStringList.Create;  
4121      pakketyper := TStringList.Create;  
4122        XmlFelter := TDictionary<String, Integer>.Create;
4123        pakketyper := TDictionary<String, Integer>.Create;
4124    
4125      linienr := 0;      linienr := 0;
4126      ListBox2.Clear;      ListBox2.Clear;
4127      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 4136  var
4136          StedKode := Sted;          StedKode := Sted;
4137        end;        end;
4138    
4139          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4140    
4141    
4142      if (Scanningtype = '6') then  
4143        if (Scanningtype = '7') then
4144         begin
4145          URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4146         end
4147        else if (Scanningtype = '6') then
4148       begin       begin
4149        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4150       end       end
4151      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4152       begin       begin
4153        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4154       end       end
4155      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4156       begin       begin
4157        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4158       end       end
4159      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4160       begin       begin
4161        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4162       end       end
4163      else      else
4164       begin       begin
# Line 4636  var Line 4166  var
4166       end;       end;
4167  // 20150310: slut  // 20150310: slut
4168    
4169        time := TTimingHelper.create();        //DEBUG
4170        timeSamlet := TTimingHelper.create();        //DEBUG
4171    
4172      try      try
4173      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4174  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4645  var Line 4178  var
4178        begin        begin
4179          // 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
4180          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4181    
4182    
4183    
4184        end;        end;
4185        on e:exception do        on e:exception do
4186        begin        begin
# Line 4655  var Line 4191  var
4191        end;        end;
4192      end;      end;
4193      try      try
4194          time.stop('HTTP Load');     //DEBUG
4195    
4196        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4197    
4198          time.stop('XML Load');     //DEBUG
4199    
4200    
4201    
4202    
4203    
4204    
4205        antlin := 0;        antlin := 0;
4206        antlinIdag := 0;        antlinIdag := 0;
# Line 4667  var Line 4211  var
4211            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4212              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4213              begin              begin
4214                 antlin := antlin + 1;                 Inc(antlin);
4215                 // 20150306: start                 // 20150306: start
4216                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4217                begin                begin
4218                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4219                   begin                   begin
4220                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4221                   end                   end
4222                   else                   else
4223                   begin                   begin
4224                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4225                   end;                   end;
4226                end;                end;
4227                 // 20150306: slut                 // 20150306: slut
4228              end;              end;
4229            end;            end;
4230            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4231                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4232                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4233                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4234                  end
4235                else                else
4236                  XmlFelter.values[Node.NodeName] := '1';                begin
4237                    XmlFelter.Add(Node.NodeName, 1);
4238                  end;
4239    
4240        end;        end;
4241        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4243  var
4243        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4244        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4245    
4246          time.stop('Antal Linier');//DEBUG
4247    
4248          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4249    
4250        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4251        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4252        begin        begin
# Line 4702  var Line 4255  var
4255        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4256    
4257        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4258    
4259    
4260        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4261            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4262            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4264  var
4264                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4265                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4266                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4267              end;              end
4268              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4269                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4270                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4271                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4272              end;              end
4273              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4274                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4275                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4276                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4277              end;              end
4278              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4279                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4280                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4281                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4282              end;              end
4283              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4284                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4285                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4286                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4287                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4288                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4289                    pakketyper.TryGetValue(pakketype, tmpAntal);
4290                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4291                  end
4292                else                else
4293                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4294              end;              end
4295              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4296                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4297                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4298                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4299                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4300                  begin                  begin
4301  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4302                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4303                    begin                    begin
4304                      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
4305                    end                    end
4306                    else                    else
4307                    begin                    begin
# Line 4753  var Line 4310  var
4310                    linienr := linienr + 1;                    linienr := linienr + 1;
4311                  end;                  end;
4312              end;              end;
4313    
4314    
4315              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4316              begin              begin
4317                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4327  var
4327              end;              end;
4328            end;            end;
4329        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4330    
4331          // Free up the list object  
4332          time.stop('Fyld Listbox2');//DEBUG
4333    
4334    
4335          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4336    
4337    
4338          for pakketype in pakketyper.Keys do
4339          begin
4340            pakketyper.TryGetValue(pakketype, tmpAntal);
4341            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4342          end;
4343    
4344            // Free up the dictionary object
4345        pakketyper.Free;        pakketyper.Free;
4346    
4347    
4348    
4349  //      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.');
4350        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4351        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4880  var Line 4451  var
4451        end;        end;
4452      end;      end;
4453    
4454        time.stop('Done');//DEBUG
4455        timeSamlet.stop('SamletTid');//DEBUG
4456    
4457    
4458  end;  end;
4459    
4460  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 4934  var Line 4509  var
4509     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4510     imorgenYmd : string;     imorgenYmd : string;
4511     logFilnavn : string;     logFilnavn : string;
4512      error : Integer;     //error : Integer;
4513    
4514  begin  begin
4515    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4601  begin
4601          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4602          S := buffer;          S := buffer;
4603          SetLength(A,0);          SetLength(A,0);
4604          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4605          if (length(A) < 2) then          if (length(A) < 2) then
4606          begin          begin
4607            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4608          end;          end;
4609            if (length(A) > 1) then            if (length(A) > 1) then
4610            begin            begin
# Line 5055  begin Line 4630  begin
4630          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4631          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4632          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4633          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4634        end;        end;
4635      end;      end;
4636    end    end
# Line 5064  begin Line 4639  begin
4639        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4640        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4641        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4642        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4643    end;    end;
4644  end;  end;
4645    
# Line 5103  begin Line 4678  begin
4678          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4679          S := buffer;          S := buffer;
4680          SetLength(A,0);          SetLength(A,0);
4681          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4682          if (length(A) < 3) then          if (length(A) < 3) then
4683          begin          begin
4684            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4685          end;          end;
4686          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4687          begin          begin
# Line 5135  begin Line 4710  begin
4710          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4711          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4712          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4713          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4714        end;        end;
4715      end;      end;
4716    end    end
# Line 5144  begin Line 4719  begin
4719        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4720        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4721        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4722        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4723    end;    end;
4724  end;  end;
4725    
# Line 5202  procedure TMainForm.VisAlarmSkaerm(strMe Line 4777  procedure TMainForm.VisAlarmSkaerm(strMe
4777  begin  begin
4778    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4779    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4780    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4781    MainForm.Color := clRed;    MainForm.Color := clRed;
4782    
4783    
4784    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4785    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4786    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4787    PakkeshopNulstil.Visible := true;  
4788      if (strMessage <> '') then
4789      begin
4790        ListBox1.Items.Insert(0, strMessage);
4791        KommentarST.Caption := strMessage;
4792      end;
4793    
4794      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4795    
4796  end;  end;
4797    
4798  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4852  begin
4852    result := svar;    result := svar;
4853  end;  end;
4854    
 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;  
4855    
4856  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4857  begin  begin
# Line 5301  begin Line 4865  begin
4865    end;    end;
4866  end;  end;
4867    
4868  function TMainForm.AdobeReaderExists: Boolean;  
4869  var  //Nedarvet fra IParentForm
4870    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4871  begin  begin
4872    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4873  end;  end;
4874    
4875  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4876  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;  
4877  begin  begin
4878      ListBox1.Items.Insert(0, msg);
4879      SkrivScanningLogFil(msg);
4880    end;
4881    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4882    
4883    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4884    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4885      printerTxt := 'Der er fravalgt printer i dette program';  begin
4886      ListBox1.Items.Insert(0,printerTxt);  
4887      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4888    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4889    begin    begin
4890      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4891      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4892      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4893    end    end
4894    else    else
4895    begin    begin
4896      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4897      try      PrinterstatusStaticText1.Color := clWhite;
4898        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;  
4899    end;    end;
4900  end;  end;
4901    
4902  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4903  var  function TMainForm.GetFormObject() : TForm;
4904    hSession, hfile, hRequest: hInternet;  begin
4905    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;  
   
4906  end;  end;
4907    
4908  // 20150310: start  //Nedarvet fra IParentForm
4909  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetXMLDocument() : TXMLDocument;
 var  
    R: TRect;  
    Rgn: HRGN;  
4910  begin  begin
4911     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;  
4912  end;  end;
4913  // 20150310: slut  
4914    
4915  end.  end.
4916    

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

  ViewVC Help
Powered by ViewVC 1.1.20