/[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 3077 by torben, Thu Jul 28 21:25:58 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      PakkeshopLabels,
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    
206    
 // 20150310: slut  
207    
208    private    private
209      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 211  type
211      SkrivLog : String;      SkrivLog : String;
212      Sted : String;      Sted : String;
213      StedNavn : String;      StedNavn : String;
214      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
215  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
216                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
217    
218      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
219  // 20150330: slut  
220      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
221      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
222      ScanTjekkode : String;      ScanTjekkode : String;
223      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
224      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
225      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
226      LabelType : integer;            FarveIndlevering : String;
227    
228        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
229              TitelIndlevering : String;
230    
231      AlarmLyd : String;      AlarmLyd : String;
232      ScannetOkLyd : String;      ScannetOkLyd : String;
233      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
234  // 20150317: start  
235      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
236  // 20150317: slut  
237      PrinterNavn : String;      PrinterNavn : String;
238      TjekPrinter : String;      TjekPrinter : String;
239      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;  
240      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
241      BladhusSted : Integer;      BladhusSted : Integer;
242      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 247  type Line 249  type
249      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
250      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
251      TjekUrls : String;      TjekUrls : String;
252        Config : TConfiguration;
253    
254    
255            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      LabelPrint: TLabelPrint;
256    
257      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 = '');
258      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
259      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 = '');
260      procedure CheckCode();      procedure CheckCode();
261      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 261  type Line 265  type
265      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
266      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
267      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
268        function InjectURL(Url : String) : String;
269    
270    public    public
271      { Public declarations }      { Public declarations }
272    end;    end;
273    
274    
275  var  var
276    MainForm: TMainForm;    MainForm: TMainForm;
277    
# Line 279  var Line 285  var
285  implementation  implementation
286  {$R *.dfm}  {$R *.dfm}
287    
288  function TMainForm.TColorToHex(Color : TColor) : string;  
289  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;  
290    
291  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
292  begin  begin
293    
294  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
295        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
296    
297    
298    
299    
300      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
301  // 20150309: slut  
302    
303      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
304      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 342  begin
342        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
343      end;      end;
344    
345      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
346    
347      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
348      begin      begin
# Line 374  begin Line 370  begin
370        else if (Sted = 'BR') then        else if (Sted = 'BR') then
371          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
372        else if (Sted = 'BK') then        else if (Sted = 'BK') then
373          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
374          else if (Sted = 'TK') then
375            begin StedNavn := 'BK/Trykkompagniet: '; end
376        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
377          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
378        else if (Sted = '1') then        else if (Sted = '1') then
379          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
380        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 398  begin
398    
399      StartScreen();      StartScreen();
400      MainForm.Caption := Titel;      MainForm.Caption := Titel;
401      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
402      MainForm.Farve := Farve;      MainForm.Farve := Farve;
403      MainForm.Titel := Titel;      MainForm.Titel := Titel;
404      MainForm.Url := Url;      MainForm.Url := Url;
# Line 410  begin Line 408  begin
408        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
409      end;      end;
410    
411      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
412        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
413      else      else
414        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 435  begin Line 433  begin
433        end;        end;
434      end;      end;
435    
436      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
437      begin      begin
438        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
439        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 458  begin
458          end          end
459          else          else
460          begin          begin
461            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
462          end;          end;
463          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
464        end        end
465        else        else
466        begin        begin
467          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
468          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
469        end;        end;
470      end;      end;
471    
472    
473  end;  end;
474    
475  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 492  begin Line 491  begin
491    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
492  end;  end;
493    
494  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
495  begin  begin
496    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
497    begin    begin
498       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
499       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 507  begin Line 506  begin
506    
507  end;  end;
508    
509  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
510  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;  
 *)  
511  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
512  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
513       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
514       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
515       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
516  end;  end;
517    
518    function TMainForm.InjectURL(Url : String) : String;
519    begin
520    
521      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
522      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
523      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
524    
525      Result := Url;
526    end;
527    
528    //InitForm kaldes før FormCreate
529  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
530  const  const
531    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
532  var  var
   printerInd : integer;  
533    gemScanningtype : String;    gemScanningtype : String;
534    
535  begin  begin
536    
537    
538    // Initierer nogle variabler    // Initierer nogle variabler
539    BladhusSted := 00;    BladhusSted := 00;
540    Application.ShowHint := True;    Application.ShowHint := True;
541    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
542    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
543    
544    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
545    
546    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
547    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
548    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
549    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
550    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
551    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
552    
553    
554    // 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 560  begin
560    
561  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
562    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
563    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 820;
564    
565      Config := TConfiguration.Create();
566      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
567      Config.Sted := Sted;
568    
569    // Læser parametre fra ini filen    // Læser parametre fra ini filen
570    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
571    try    try
572    
573    
574      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
575      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
576      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
577    
578      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
579        UrlFindPakketype := InjectURL(UrlFindPakketype);
580    
581      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
582        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
583    
584      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
585        UrlNormal := InjectURL(UrlNormal);
586    
587      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
588        UrlReturDAO := InjectURL(UrlReturDAO);
589    
590      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
591        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
592    
593      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
594        UrlBudlevering := InjectURL(UrlBudlevering);
595    
596      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
597        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
598    
599      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
600        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
601    
602      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
603        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
604    
605      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
606        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
607    
608      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
609        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
610    
611      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
612        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
613    
614      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
615      LabelType := ReadInteger('Settings','LabelType',1);      UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
616    
617        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
618        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
619    
620        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
621        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
622    
623        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
624        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
625    
626    
627    
628      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
629      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
630      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 625  begin Line 661  begin
661    
662      if (SkrivLog = '1') then      if (SkrivLog = '1') then
663      begin      begin
664        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);
665        try        try
666          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
667          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
668          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
669          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
670          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
671          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 641  begin Line 677  begin
677    
678      if Scanningtype = 'A' then      if Scanningtype = 'A' then
679      begin      begin
680        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
681        Scanningtype := '1';        Scanningtype := '1';
682        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
683        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
684      end;      end;
685    
686      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;  
687    
688      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
689      begin      begin
# Line 741  begin Line 709  begin
709    
710      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
711      begin      begin
712        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
713        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
714        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
715      end;      end;
# Line 768  begin Line 736  begin
736      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
737      // *************************** //      // *************************** //
738    
739    {$IfDef STED_BK}
740        SpecialVersionSted := 'BK';
741    {$EndIf}
742    {$IfDef STED_TK}
743        SpecialVersionSted := 'TK';// BK-Trykkompagniet
744    {$EndIf}
745    {$IfDef STED_DBK}
746        SpecialVersionSted := 'DBK';
747    {$EndIf}
748    {$IfDef STED_FD}
749        SpecialVersionSted := 'FD';
750    {$EndIf}
751    {$IfDef STED_NS}
752        SpecialVersionSted := 'NS';
753    {$EndIf}
754    
755      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
756      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
757      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 767  begin
767      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
768      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
769    
 // 20150313: start  
770      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
771      begin      begin
772         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
773         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
774    
775          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
776          Sted := SpecialVersionSted;
777         // her skal vi også disable de knapper BK ikke kan bruge
778          PanelValg2.Enabled := false;
779          PanelValg2.Font.Color := clInactiveCaption;
780          PanelValg3.Enabled := false;
781          PanelValg3.Font.Color := clInactiveCaption;
782          //PanelValg6.Enabled := false;
783          //PanelValg6.Font.Color := clInactiveCaption;
784    
785         // her skal vi også disable de menupunkter FD ikke kan bruge
786          menuNatxpressReturDAO1.Enabled := false;
787          menuNatxpressReturfraKunde1.Enabled := false;
788    
789          //Returpakkerfrapakkeshop1.Enabled := false;
790      end;      end;
791    
792      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
793      begin      begin
794         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
795         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
796      end;  
 // 20150313: slut  
797    
     if SpecialVersionSted = 'BK' then  
     begin  
798        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
799        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
800       // 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 802  begin
802        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
803        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
804        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
805        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
806        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
807       // her skal vi også disable de menupunkter BK ikke kan bruge  
808        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
809        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
810        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
811        if SpecialVersionScanningtype = 'A' then  
812        begin        //Returpakkerfrapakkeshop1.Enabled := false;
813           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
814      end;      end;
815    
816      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
817      begin      begin
818        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
819        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
820        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
821        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
822        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
823        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
824        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
825        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
826        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
827        PanelValg6.Enabled := false;  
828        PanelValg6.Font.Color := clInactiveCaption;       // her skal vi også disable de menupunkter BK ikke kan bruge
829       // her skal vi også disable de menupunkter DBK ikke kan bruge        menuNatxpressReturDAO1.Enabled := false;
830        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
       Returpakkerfraboghandler1.Enabled := false;  
831    
832        Pakkeshoplevering1.Enabled := false;        //Returpakkerfrapakkeshop1.Enabled := false;
       Returpakkerfrapakkeshop1.Enabled := false;  
833    
834        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
835        begin        begin
# Line 851  begin Line 841  begin
841        end;        end;
842      end;      end;
843    
844        if SpecialVersionSted = 'DBK' then
845        begin
846          Sted := SpecialVersionSted;
847        end;
848    
849      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
850      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
851      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 870  begin Line 865  begin
865        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
866        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
867        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
868          PanelValg7.Enabled := false;
869          PanelValg7.Font.Color := clInactiveCaption;
870       // 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
871    
872        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
873    
874        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
875        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
876        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
877        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
878        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
879        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
880        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
881        begin        begin
882          Scanningtype := '4';          Scanningtype := '4';
883          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
884          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
885          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
886        end        end
# Line 892  begin Line 889  begin
889          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
890          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
891          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
892          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
893          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
894          if Scanningtype = '1' then          if Scanningtype = '1' then
895          begin          begin
896            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
897            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
898            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
899          end;          end;
900          if Scanningtype = '2' then          if Scanningtype = '2' then
901          begin          begin
902            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
903            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
904            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
905          end;          end;
906          if Scanningtype = '3' then          if Scanningtype = '3' then
907          begin          begin
908            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
909            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
910            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
911          end;          end;
912          if Scanningtype = '4' then          if Scanningtype = '4' then
913          begin          begin
914            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
915            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
916            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
917          end;          end;
918          if Scanningtype = '5' then          if Scanningtype = '5' then
919          begin          begin
920            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
921            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
922            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
923          end;          end;
924          if Scanningtype = '6' then          if Scanningtype = '6' then
925          begin          begin
926            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
927            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
928            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
929          end;          end;
# Line 965  begin Line 962  begin
962             RutenummerST.Caption := '';             RutenummerST.Caption := '';
963             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
964             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
965             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
966             exit;             exit;
967          end;          end;
968      end      end
# Line 1007  begin Line 1004  begin
1004    
1005      if Pakketype = '1' then      if Pakketype = '1' then
1006      begin      begin
1007        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
1008        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
1009      end      end
1010      else      else
1011      begin      begin
1012        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
1013        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
1014      end;      end;
1015    
# Line 1060  begin Line 1057  begin
1057      end;      end;
1058    
1059    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1060    
1061      CheckPrintQue('Opstart');  
1062        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1063        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1064    
1065    finally    finally
1066      Free;      Free;
# Line 1076  begin Line 1069  begin
1069      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
1070      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
1071      begin      begin
1072        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
1073        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
1074        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
1075        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
1076        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
1077        Testprinter1.Visible := false;        Testprinter1.Visible := false;
1078        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
1079        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
1080      end;      end;
1081    
1082      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1134  begin Line 1127  begin
1127      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1128    
1129      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1130      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1131    
1132  end;  end;
1133    
# Line 1191  begin Line 1184  begin
1184      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1185      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1186      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1187        or (NumberString = 'DAO PAKKESHOP')
1188        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1189            or (LowerCase(NumberString) = 'for stor daodirekte' )
1190      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1191    
1192      begin      begin
# Line 1201  begin Line 1197  begin
1197      begin      begin
1198        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1199      end;      end;
1200    end;    end;  // Slut ctrl-v
1201    
1202    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1203    begin    begin
1204      if (Length(Trim(Stregkode)) = 0) then  
1205        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1206        Stregkode := Trim(Stregkode);
1207    
1208        if (Length(Stregkode) = 0) then
1209      begin      begin
1210        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1211    
# Line 1214  begin Line 1214  begin
1214    
1215      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1216      begin      begin
1217         PakkeshopNulstil.Click();         btnNulstil.Click();
1218         exit;         exit;
1219      end;      end;
1220    
1221      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1222      begin      begin
1223        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1224    
# Line 1255  begin Line 1255  begin
1255         exit;         exit;
1256      end;      end;
1257    
1258        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1259        begin
1260          if chkForstorTilDirekte.Enabled then
1261          begin
1262            chkForstorTilDirekte.Checked := true;
1263          end
1264          else
1265          begin
1266             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1267          end;
1268          Stregkode := '';
1269          StregkodeST.Caption := StregKode;
1270          exit;
1271        end;
1272    
1273    
1274      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1275      begin      begin
1276         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1452  begin Line 1468  begin
1468        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1469      end;      end;
1470    
1471      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1472          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1473          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1474          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1475          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1476          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1477      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1478          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1479    
1480         exit;         exit;
1481      end;      end;
1482    
1483      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1484      begin      begin
1485        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1486        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1509  begin
1509                InitPakkeshoplevering();                InitPakkeshoplevering();
1510              end;              end;
1511            end            end
1512        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1513              begin
1514                if Scanningtype <> '6' then
1515                begin
1516                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1517    
1518                 exit;
1519                end;
1520              end
1521    
1522    
1523        else        else
1524            begin            begin
1525            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1526              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1527                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1528    
1529               exit;               exit;
1530            end;            end;
1531        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1532      end      end
1533      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1534      begin      begin
1535        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1536    
1537        exit;        exit;
1538      end;      end;
1539    
1540      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1541      begin      begin
1542        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1543        begin        begin
# Line 1524  begin Line 1550  begin
1550    
1551    
1552    
1553      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1554      begin      begin
1555        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1556        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1563  begin
1563        end;        end;
1564      end;      end;
1565    
1566      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1567        begin        begin
1568          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1569             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1570             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1571             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1572             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1573             Stregkode := '';             Stregkode := '';
1574             InitScreen();             InitScreen();
1575        end        end
1576      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1577        begin        begin
1578          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1579             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1581  begin
1581             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1582             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1583             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1584             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1585             Stregkode := '';             Stregkode := '';
1586             InitScreen();             InitScreen();
1587        end        end
1588      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1589        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1590         begin         begin
1591            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1585  begin Line 1611  begin
1611             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1612             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1613             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1614             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1615                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1616             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1617                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1618             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1619           end           end
1620          else          else
1621           begin           begin
1622                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1623                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1624                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1625                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1626                                    
1627                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1633  begin
1633          InitScreen();          InitScreen();
1634       end;       end;
1635    
1636      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
1637      begin      begin
1638         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1639           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1640            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1641         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1642            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1643         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1644         try         try
# Line 1621  begin Line 1648  begin
1648            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1649            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1650            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1651               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1652               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1653              exit;              exit;
1654            end;            end;
1655            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1656            begin            begin
1657              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1658              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1646  begin Line 1669  begin
1669              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1670              begin              begin
1671                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1672                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1673                MainForm.Color := clRed;                MainForm.Color := clRed;
1674              end;              end;
1675           end;           end;
1676            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
1677            begin            begin
1678              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1679              if Storepakker1.Checked then              if menuStorePakker.Checked then
1680              begin              begin
1681                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1682              end              end
# Line 1661  begin Line 1684  begin
1684              begin              begin
1685                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1686              end;              end;
1687              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1688            end            end
1689            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1690            begin            begin
1691              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1692              if Storepakker1.Checked then              if menuStorePakker.Checked then
1693              begin              begin
1694                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1695              end              end
# Line 1674  begin Line 1697  begin
1697              begin              begin
1698                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1699              end;              end;
1700              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1701            end            end
1702            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1703            begin            begin
# Line 1685  begin Line 1708  begin
1708            end            end
1709            else            else
1710            begin            begin
1711              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1712            end;            end;
1713           if not PakkeshopNulstil.Visible then  
1714             if not btnNulstil.Visible then
1715            begin            begin
1716    
1717              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1718              begin              begin
1719                if Storepakker1.Checked then                if menuStorePakker.Checked then
1720                begin                begin
1721                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(ScannetOkStorLyd));
1722                end                end
# Line 1738  begin Line 1760  begin
1760    
1761    Key := #0;    Key := #0;
1762    
1763    
1764    
1765    
1766    
1767    
1768  end; //End of OnKeyPress  end; //End of OnKeyPress
1769    
1770    
1771    
1772  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1773  const  const
1774    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1781  var Line 1810  var
1810    
1811    
1812  begin  begin
1813      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
1814      begin      begin
1815        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1816          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1817          begin          begin
1818              wrkAntalSenere := 0;//initial Value
1819    
1820            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1821            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1822            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1823            begin            begin
1824              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1825              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1826  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1827  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1828  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1829              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1830            end            end
1831            else     // kun idag            else     // kun idag
1832            begin            begin
# Line 1900  begin Line 1930  begin
1930                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1931              end;              end;
1932            end;            end;
1933  // 20150310: slut  
1934            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1935          end;          end;
1936      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1960  procedure TMainForm.InitBladhus();
1960    
1961  begin  begin
1962    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1963    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1964    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1965    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1966    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1967    ListBox1.Visible := true;    ListBox1.Visible := true;
1968  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1969  // 20150317: start  
1970  (*    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  
1971    begin    begin
1972      IndlesScanningLogFil();      IndlesScanningLogFil();
1973    end;    end;
# Line 1989  begin Line 1979  begin
1979      01 :      01 :
1980            begin;      // NS            begin;      // NS
1981              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1982              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1983              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1984              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1985              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1986              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2001  begin Line 1991  begin
1991      02 :      02 :
1992            begin;    // BK            begin;    // BK
1993              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1994              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1995              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1996              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1997              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1998              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1999              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2000              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2001              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2002              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 2006  begin
2006              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2007             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2008              begin              begin
2009                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2010              end              end
2011              else              else
2012              begin              begin
2013                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2014              end;              end;
2015              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2016              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2017              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2018              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2019              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2039  begin Line 2029  begin
2029            end;            end;
2030      04 :  begin;           // DBK      04 :  begin;           // DBK
2031              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2032              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
2033              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
2034              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2035              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2036              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2037              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2038              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2039              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2040            end;            end;
# Line 2060  var Line 2050  var
2050    URLStr : String;    URLStr : String;
2051    pakkestorrelse : String;    pakkestorrelse : String;
2052    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2053    
2054      PakkeshopLabel: TPakkeshopLabel;
2055  begin  begin
2056    if radioStorPakke.Checked then    if radioStorPakke.Checked then
2057    begin    begin
# Line 2069  begin Line 2061  begin
2061    begin    begin
2062      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2063    end;    end;
2064    if Pakkernormal1.Checked then  
2065    
2066      if menuNatXpress1.Checked then
2067    begin    begin
2068       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
2069       begin       begin
# Line 2077  begin Line 2071  begin
2071       end;       end;
2072       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2073    end    end
2074    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
2075    begin    begin
2076       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2077    end    end
2078    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2079    begin    begin
2080       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2081    end    end
2082    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2083    begin    begin
2084       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2085    end    end
2086    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2087    begin    begin
2088       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2089    end    end
2090    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2091    begin    begin
2092       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2093    end    end
2094      else if menuIndlevering.Checked then
2095      begin
2096        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2097      end
2098    else    else
2099    begin    begin
2100      exit;      exit;
2101    end;    end;
2102    
2103      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2104      begin
2105        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2106      end;
2107    
2108    try    try
2109      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2110      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2126  begin
2126          end;          end;
2127      end;      end;
2128    end;    end;
2129    
2130    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2131    try    try
2132      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2133       begin       begin
2134        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2135        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2137  begin
2137        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2138        PrintNyLabel := False;        PrintNyLabel := False;
2139    
2140        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2141        begin        begin
2142          try          try
2143            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2143  begin Line 2148  begin
2148          begin          begin
2149            PrintNyLabel := True;            PrintNyLabel := True;
2150          end;          end;
 // 20150310: start  
2151        end;        end;
 // 20150310: slut  
2152       end       end
2153        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2154        begin
2155    
2156    
2157    
2158    
2159         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2160         if (Kommentar = 'Ok') then
2161         begin
2162           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2163           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2164           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2165           Stregkode := PakkeshopLabel.Stregkode;
2166    
2167           LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2168           chkForstorTilDirekte.Checked := false;
2169    
2170         end;
2171    
2172    
2173        end
2174      else      else
2175       begin       begin
2176        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2178  begin
2178        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2179        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2180        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2181        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2182          begin          begin
2183          try          try
2184            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2203  begin
2203          PrintNyLabel := True;          PrintNyLabel := True;
2204        end;        end;
2205      end;      end;
2206    
2207    
2208      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2209      begin      begin
2210        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2211        begin        begin
2212            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2213            PrintNyLabel := False;            PrintNyLabel := False;
2214        end;        end;
2215      end      end
2216      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2217      begin      begin
2218         if (Leveringssted = 'E') and (Sted = 'DBK') then         if (Leveringssted = 'E') and (Sted = 'DBK') then
2219         begin         begin
# Line 2195  begin Line 2221  begin
2221         end         end
2222         else         else
2223         begin         begin
2224            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2225            PrintNyLabel := False;            PrintNyLabel := False;
2226         end;         end;
2227      end;      end;
# Line 2216  begin Line 2242  begin
2242    //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
2243    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2244    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2245    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2246      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2247    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2248    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2254  begin
2254      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2255    end;    end;
2256    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2257    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2258    begin    begin
2259      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2260    end;    end;
2261    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2262    begin    begin
2263      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2264    end;    end;
2265    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2266       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2267    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2268    begin    begin
2269      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2270    end;    end;
2271    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2272    begin    begin
2273       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2274        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2280  begin
2280          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2281        end;        end;
2282    end;    end;
2283    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2284    begin    begin
2285      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2286    end;    end;
2287    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2288    begin    begin
2289      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2290      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2297  begin
2297        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2298      end;      end;
2299    end;    end;
2300      if menuIndlevering.Checked then
2301      begin
2302        List1Msg := Stregkode;
2303      end;
2304    
2305    
2306    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2307    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2308    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2309  end;  end;
2310    
2311  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2312  begin  begin
2313    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2314    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2324  pakkeForkertSted : Integer;
2324    kontrolKoreliste : string;    kontrolKoreliste : string;
2325    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2326  begin  begin
2327    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2328       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2329    
2330    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2331    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2362  begin
2362        end;        end;
2363    end    end
2364    else    else
2365    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2366    begin    begin
2367       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2368       begin       begin
# Line 2338  begin Line 2370  begin
2370    
2371          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2372          MainForm.Color := clRed;          MainForm.Color := clRed;
2373          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2374    
2375       end       end
2376       else       else
# Line 2349  begin Line 2381  begin
2381            PrintNyLabel := true;            PrintNyLabel := true;
2382            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2383            nyFarve := Farve;            nyFarve := Farve;
2384            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2385            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2386            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2387            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2365  begin Line 2397  begin
2397            begin            begin
2398              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2399              MainForm.Color := clRed;              MainForm.Color := clRed;
2400              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2401            end;            end;
2402    
2403         end;         end;
# Line 2391  begin Line 2423  begin
2423            begin            begin
2424              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2425              MainForm.Color := clRed;              MainForm.Color := clRed;
2426              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2427            end;            end;
2428    
2429         end;         end;
# Line 2399  begin Line 2431  begin
2431    
2432    end;    end;
2433    
2434    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2435    begin    begin
2436      case BladhusSted of      case BladhusSted of
2437        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2443  begin
2443               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2444  // 20150304: slut  // 20150304: slut
2445                begin                begin
2446                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2447                end;                end;
2448              end;              end;
2449        01 :  begin;        01 :  begin;
2450               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2451                    // 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
2452                    // 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')
2453                begin                begin
2454                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2455                end;                end;
2456              end;              end;
2457        02 :  begin;        02 :  begin;
2458                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
2459                begin                begin
2460                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2461                end;                end;
2462              end;              end;
2463        03 :  begin;        03 :  begin;
2464               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2465                    // 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
2466                    // 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')
2467               begin               begin
2468                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2469               end;               end;
2470              end;              end;
2471        04 :  begin;        04 :  begin;
2472                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
2473                begin                begin
2474                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2475                end;                end;
2476              end;              end;
2477        else        else
# Line 2448  begin Line 2480  begin
2480    end;    end;
2481    
2482  // 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
2483    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
2484    begin    begin
2485      exit;      exit;
2486    end;    end;
2487    
2488    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
2489    begin    begin
2490    end    end
2491    else    else
# Line 2475  begin Line 2507  begin
2507        end;        end;
2508        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2509        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2510        with Printer do  
2511        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2512          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;  
2513      end;      end;
2514    end;    end;
2515    
2516  end;  end;
2517    
 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;  
2518    
2519    
2520  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2521  begin  begin
2522      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2523      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2524  end;  end;
2525    
2526  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2527  begin  begin
2528      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2529      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2530  end;  end;
2531    
# Line 2596  begin Line 2568  begin
2568    end;    end;
2569  end;  end;
2570    
2571  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2572  begin  begin
2573        Scanningtype := '5';        Scanningtype := '5';
2574        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2577  end;
2577    
2578  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2579  begin  begin
2580      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2581      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2582      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2583    
# Line 2617  begin Line 2589  begin
2589        // 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)
2590        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2591        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2592        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2593      end;      end;
2594  // 20150317: slut  // 20150317: slut
2595  end;  end;
# Line 2632  begin Line 2604  begin
2604    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2605    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...');
2606    
2607          // Tjekker urls    try
2608          logTekst := 'Tjekker urls.';      // Tjekker urls
2609          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2610          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2611        SkrivScanningLogFil(logTekst);
2612    
         // 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;  
2613    
         // 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;  
2614    
2615          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2616          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2617          begin      begin
2618            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2619            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;  
2620    
2621          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2622          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2623          begin      begin
2624            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2625            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;  
2626    
2627          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2628          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2629          begin      begin
2630            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2631            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;  
2632    
2633          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2634          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2635          begin      begin
2636            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2637            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;  
2638    
2639          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2640          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2641          or (PanelValg4.Enabled = true) then      begin
2642          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2643            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;  
2644    
2645          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2646          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2647          begin      begin
2648            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2649            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;  
2650    
2651          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2652          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2653          begin      begin
2654            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2655            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;  
2656    
2657          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2658          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2659          begin      begin
2660            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2661            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;  
2662    
2663        // Tjekker UrlPakkeshopManglendeReturScanninger
2664        if PanelValg6.Enabled = true then
2665        begin
2666          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2667        end;
2668    
2669          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2670          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2671          begin      begin
2672            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2673            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2674              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;  
2675    
2676        // Tjekker UrlEKLoverforsel
2677        if PanelValg1.Enabled = true then
2678        begin
2679          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2680        end;
2681    
         // 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;  
2682    
2683          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2684          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2685          begin      begin
2686            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2687            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;  
2688    
         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;  
2689    
2690        // Tjekker UrlFindPakketype
2691        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2692    
2693        // Tjekker UrlSendPrograminfo
2694        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2695    
2696    
2697    
2698        logTekst := 'urls er ok';
2699        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2700        SkrivScanningLogFil(logTekst);
2701    
2702      Except
2703        TjekUrls := '-';   // markerer at der var fejl
2704    
2705      end;
2706  end;  end;
2707    
2708  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2709  var  const
2710     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2711  begin  begin
2712     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2713     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2714     Result := SystemTimeToDateTime(SystemTime) ;    begin
2715        logTekst := UrlNavn + ' accepteret: ' + Url;
2716        SkrivScanningLogFil(logTekst);
2717      end
2718      else
2719      begin
2720        inc(urlFejl);   // Optæller antal fejl
2721        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2722        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2723        if TjekUrls = '1' then
2724        begin
2725          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2726        end;
2727    
2728        SkrivScanningLogFil(logTekst);
2729    
2730        if TjekUrls = '1' then
2731        begin
2732          ShowMessage(logTekst);
2733          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2734          Application.Terminate;
2735    
2736          raise Exception.Create('UrlFejl');
2737    
2738        end;
2739      end;
2740    
2741  end;  end;
2742    
2743    
2744    
2745  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2746  var  var
2747    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2758  begin
2758      repeat      repeat
2759        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2760        begin        begin
2761    
2762          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2763          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2764          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2765          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2766          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2767          // (æ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 2798  begin
2798    end;    end;
2799  end;  end;
2800    
2801  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2802  begin  begin
2803    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2804    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2805    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2806    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2807    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2808    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3099  begin Line 2820  begin
2820  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2821    if Farve <> '' then    if Farve <> '' then
2822    begin    begin
2823       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  
2824    end;    end;
2825    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2826    begin    begin
2827       InitLillePakke();       InitLillePakke();
2828    end;    end;
# Line 3173  end; Line 2884  end;
2884    
2885  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2886  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;  
 *)  
2887  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2888  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2889       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2890       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2891       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2892  // 20150311: slut  
2893    
2894    
2895  end;  end;
2896    
2897  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2898  begin  begin
2899        Scanningtype := '1';        Scanningtype := '1';
2900        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3231  begin Line 2929  begin
2929      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2930      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2931      MainForm.Color := clRed;      MainForm.Color := clRed;
2932      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2933    end    end
2934    else    else
2935    begin    begin
# Line 3266  begin Line 2964  begin
2964    Falsk := False;    Falsk := False;
2965    
2966    
2967    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2968    begin    begin
2969      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2970    end    end
# Line 3281  begin Line 2979  begin
2979      DBKbane := '999';      DBKbane := '999';
2980      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2981      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2982      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2983    end;    end;
2984    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2985  end;  end;
# Line 3290  procedure TMainForm.Timer1Timer(Sender: Line 2988  procedure TMainForm.Timer1Timer(Sender:
2988  begin  begin
2989    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2990    begin    begin
2991      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2992    end    end
2993    else    else
2994    begin    begin
# Line 3299  begin Line 2997  begin
2997    end;    end;
2998  end;  end;
2999    
3000  {  
  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;  
3001    
3002  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3003  const  const
# Line 3337  var Line 3006  var
3006   tekst, filversion : String;   tekst, filversion : String;
3007  begin  begin
3008    
3009    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
3010    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';
3011    
3012    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 3028  begin
3028          end          end
3029          else          else
3030          begin          begin
3031            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3032          end;          end;
3033      end      end
3034      else      else
3035      begin      begin
3036        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3037      end;      end;
3038    end;    end;
3039    
# Line 3380  begin Line 3049  begin
3049    
3050  end;  end;
3051    
3052    
3053  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3054    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3055  var  var
# Line 3432  begin Line 3102  begin
3102    
3103    if FileExists(fileName) then    if FileExists(fileName) then
3104    begin    begin
3105      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3106      begin      begin
3107        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3108        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3126  begin
3126    
3127    if FileExists(fileName) then    if FileExists(fileName) then
3128    begin    begin
3129      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3130      begin      begin
3131        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3132        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3133      end      end
3134      else      else
3135      begin      begin
3136        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3137      end;      end;
3138    end    end
3139    else    else
# Line 3472  begin Line 3142  begin
3142    end;    end;
3143  end;  end;
3144    
3145    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3146    begin
3147      Scanningtype := '7';
3148      NulstilAutomatiskValg();
3149      InitIndleveringskode();
3150    end;
3151    
3152  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3153  begin  begin
3154    
# Line 3487  begin Line 3164  begin
3164    
3165  end;  end;
3166    
3167  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3168  begin  begin
3169        Scanningtype := '2';        Scanningtype := '2';
3170        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3171        InitReturFraDao();        InitReturFraDao();
3172  end;  end;
3173    
3174  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3175  begin  begin
3176        Scanningtype := '6';        Scanningtype := '6';
3177        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3180  end;
3180    
3181  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3182  begin  begin
3183        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3184        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3185        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3186        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3187        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3188        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
# Line 3517  begin Line 3194  begin
3194        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3195        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3196        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3197        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3198        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3199        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3200        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3201        ListBox1.Visible := true;        ListBox1.Visible := true;
3202        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3203        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3204        InitLillePakke();        InitLillePakke();
3205        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3206    
3207          chkForstorTilDirekte.Checked := false;
3208          chkForstorTilDirekte.Enabled := false;
3209    
3210        if BladhusSted = 0 then        if BladhusSted = 0 then
3211        begin        begin
3212          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3535  end; Line 3216  end;
3216    
3217  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3218  begin  begin
3219        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3220        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3221        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3222        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3223        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3224        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
# Line 3549  begin Line 3230  begin
3230        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3231        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3232        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3233        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3234        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3235        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3236        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3237        ListBox1.Visible := true;        ListBox1.Visible := true;
3238        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3239        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3240        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3241    
3242          chkForstorTilDirekte.Checked := false;
3243          chkForstorTilDirekte.Enabled := false;
3244    
3245        InitLillePakke();        InitLillePakke();
3246  end;  end;
3247    
3248  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3249  begin  begin
3250        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3251        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3252        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3253        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3254        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3255        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
# Line 3575  begin Line 3260  begin
3260        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3261        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3262        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3263        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3264        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3265        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3266        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3267        ListBox1.Visible := true;        ListBox1.Visible := true;
3268        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3269        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3270        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3271    
3272          chkForstorTilDirekte.Checked := false;
3273          chkForstorTilDirekte.Enabled := false;
3274    
3275        InitLillePakke();        InitLillePakke();
3276  end;  end;
3277    
3278  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3279  begin  begin
3280        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3281        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3282        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3283        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3284        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3285        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
# Line 3602  begin Line 3291  begin
3291        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3292        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3293        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3294        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3295        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3296        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3297        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3298        ListBox1.Visible := true;        ListBox1.Visible := true;
3299        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3300        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3301        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3302        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3303        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3304        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3305        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3306    
3307          chkForstorTilDirekte.Checked := false;
3308          chkForstorTilDirekte.Enabled := true;
3309    
3310        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3311        begin        begin
3312            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3624  end; Line 3317  end;
3317    
3318  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3319  begin  begin
3320        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3321        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3322        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3323        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3324        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3325        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
# Line 3638  begin Line 3331  begin
3331        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3332        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3333        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3334        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3335        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3336        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3337        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3338        ListBox1.Visible := true;        ListBox1.Visible := true;
3339        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3340        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3341        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3342    
3343        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3344    
3345          chkForstorTilDirekte.Checked := false;
3346          chkForstorTilDirekte.Enabled := true;
3347    
3348        InitLillePakke();        InitLillePakke();
3349        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3661  end; Line 3357  end;
3357    
3358  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3359  begin  begin
3360        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3361        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3362        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3363        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3364        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3365        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
# Line 3675  begin Line 3371  begin
3371        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3372        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3373        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3374        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3375        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3376        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3377        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3378        ListBox1.Visible := true;        ListBox1.Visible := true;
3379        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3380        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3381        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3382        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3383    
3384          chkForstorTilDirekte.Checked := false;
3385          chkForstorTilDirekte.Enabled := false;
3386    
3387    
3388        InitLillePakke();        InitLillePakke();
3389        IndlesScanningLogFil();        IndlesScanningLogFil();
3390        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3694  begin Line 3395  begin
3395        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3396  end;  end;
3397    
3398  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3399  begin  begin
3400        Scanningtype := '3';        Scanningtype := '3';
3401        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3404  end;
3404    
3405  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3406  begin  begin
3407        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3408        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3409        PakkeshopNulstil.Visible := false;  
3410          btnNulstil.Visible := false;
3411        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3412        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3413        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
# Line 3720  begin Line 3422  begin
3422    
3423    
3424    
3425        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3426        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3427        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3428        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3429        ListBox1.Visible := true;        ListBox1.Visible := true;
3430        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3431    
3432        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3433        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3434        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3435    
3436          chkForstorTilDirekte.Checked := false;
3437          chkForstorTilDirekte.Enabled := false;
3438    
3439    
3440        InitLillePakke();        InitLillePakke();
3441        IndlesScanningLogFil();        IndlesScanningLogFil();
3442        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3741  begin Line 3448  begin
3448  end;  end;
3449    
3450    
3451  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3452  begin  begin
3453    InitStorPakke();    InitStorPakke();
3454  end;  end;
3455    
3456  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3457  begin  begin
3458    InitLillePakke();    InitLillePakke();
3459  end;  end;
# Line 3754  end; Line 3461  end;
3461  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3462  begin  begin
3463    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3464    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3465  //  Stregkode := '';  //  Stregkode := '';
3466  end;  end;
3467    
3468  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3469  begin  begin
3470    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3471    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3472  // 20150310: start  // 20150310: start
3473  //  Stregkode := '';  //  Stregkode := '';
3474  // 20150310: slut  // 20150310: slut
3475  end;  end;
3476    
 /// <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]]);  
3477    
     // 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;  
3478    
3479  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3480  begin  begin
# Line 3870  begin Line 3512  begin
3512       exit;       exit;
3513    end;    end;
3514    
3515    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3516       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
3517       begin       begin
3518         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(ScannetOkLyd));
# Line 3879  begin Line 3521  begin
3521       begin       begin
3522         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3523       end;       end;
3524    if Storepakker1.Checked then    if menuStorePakker.Checked then
3525       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
3526       begin       begin
3527         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(ScannetOkStorLyd));
# Line 3891  begin Line 3533  begin
3533  end;  end;
3534    
3535    
3536  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3537  begin  begin
3538        Scanningtype := '4';        Scanningtype := '4';
3539        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3545  begin;
3545    CheckCode();    CheckCode();
3546  end;  end;
3547    
3548  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3549  var  var
3550    WebSvar : String;    WebSvar : String;
3551    URLStr : String;    URLStr : String;
# Line 3913  var Line 3555  var
3555    status, kommentar : String;    status, kommentar : String;
3556    
3557  begin  begin
3558      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3559    
3560      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');
3561      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3562      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3563      StedKode := Sted;      StedKode := Sted;
3564      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3565  // 20150330: start  
3566      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3567      begin      begin
3568        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3569      end;      end;
3570  // 20150330: slut  
3571    
3572      try      try
3573      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3618  begin
3618        end;        end;
3619      end;      end;
3620    
3621      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3622    
3623      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
3624    
# Line 3993  begin Line 3635  begin
3635           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3636         end;         end;
3637         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3638         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3639      end;      end;
3640    
3641  end;  end;
# Line 4017  begin Line 3659  begin
3659    else    else
3660      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3661  }  }
3662    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3663    
3664    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3665    CheckCode();    CheckCode();
# Line 4025  end; Line 3667  end;
3667    
3668  end;  end;
3669    
 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;  
3670    
3671  //  //
3672  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4144  begin
4144    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
4145  end;  end;
4146    
4147  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4148  begin  begin
4149      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4150      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
4151  end;  end;
4152    
4153  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4154  const  const
4155    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4156    
# Line 4556  begin Line 4159  begin
4159      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
4160  end;  end;
4161    
4162  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4163  begin  begin
4164      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4165      begin      begin
# Line 4565  begin Line 4168  begin
4168      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
4169  end;  end;
4170    
4171  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;  
4172    
4173  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4174  var  var
# Line 4588  var Line 4179  var
4179    I: Integer;    I: Integer;
4180    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4181    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4182    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4183    pakketyper : TStrings;    //pakketyper : TStrings;
4184      pakketyper : TDictionary<String, Integer>;
4185      tmpAntal : Integer;
4186    
4187     time, timeSamlet : TTimingHelper;
4188    
4189    
4190    antlin : Integer;    antlin : Integer;
4191    
4192    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4193    
4194    XmlFelter : TStrings;    //XmlFelter : TStrings;
4195      XmlFelter : TDictionary<String, Integer>;
4196    
4197   begin   begin
4198      XmlFelter := TStringList.Create;  
4199      pakketyper := TStringList.Create;  
4200        XmlFelter := TDictionary<String, Integer>.Create;
4201        pakketyper := TDictionary<String, Integer>.Create;
4202    
4203      linienr := 0;      linienr := 0;
4204      ListBox2.Clear;      ListBox2.Clear;
4205      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 4214  var
4214          StedKode := Sted;          StedKode := Sted;
4215        end;        end;
4216    
4217          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4218    
4219      if (Scanningtype = '6') then  
4220    
4221        if (Scanningtype = '7') then
4222       begin       begin
4223        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4224         end
4225        else if (Scanningtype = '6') then
4226         begin
4227          URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4228       end       end
4229      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4230       begin       begin
4231        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4232       end       end
4233      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4234       begin       begin
# Line 4636  var Line 4244  var
4244       end;       end;
4245  // 20150310: slut  // 20150310: slut
4246    
4247        time := TTimingHelper.create();        //DEBUG
4248        timeSamlet := TTimingHelper.create();        //DEBUG
4249    
4250      try      try
4251      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4252  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4645  var Line 4256  var
4256        begin        begin
4257          // 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
4258          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4259    
4260    
4261    
4262        end;        end;
4263        on e:exception do        on e:exception do
4264        begin        begin
# Line 4655  var Line 4269  var
4269        end;        end;
4270      end;      end;
4271      try      try
4272          time.stop('HTTP Load');     //DEBUG
4273    
4274        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4275    
4276          time.stop('XML Load');     //DEBUG
4277    
4278    
4279    
4280    
4281    
4282    
4283        antlin := 0;        antlin := 0;
4284        antlinIdag := 0;        antlinIdag := 0;
# Line 4667  var Line 4289  var
4289            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4290              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4291              begin              begin
4292                 antlin := antlin + 1;                 Inc(antlin);
4293                 // 20150306: start                 // 20150306: start
4294                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4295                begin                begin
4296                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4297                   begin                   begin
4298                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4299                   end                   end
4300                   else                   else
4301                   begin                   begin
4302                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4303                   end;                   end;
4304                end;                end;
4305                 // 20150306: slut                 // 20150306: slut
4306              end;              end;
4307            end;            end;
4308            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4309                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4310                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4311                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4312                  end
4313                else                else
4314                  XmlFelter.values[Node.NodeName] := '1';                begin
4315                    XmlFelter.Add(Node.NodeName, 1);
4316                  end;
4317    
4318        end;        end;
4319        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4321  var
4321        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4322        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4323    
4324          time.stop('Antal Linier');//DEBUG
4325    
4326          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4327    
4328        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4329        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4330        begin        begin
# Line 4702  var Line 4333  var
4333        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4334    
4335        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4336    
4337    
4338        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4339            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4340            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4342  var
4342                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4343                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4344                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4345              end;              end
4346              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4347                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4348                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4349                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4350              end;              end
4351              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4352                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4353                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4354                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4355              end;              end
4356              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4357                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4358                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4359                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4360              end;              end
4361              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4362                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4363                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4364                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4365                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4366                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4367                    pakketyper.TryGetValue(pakketype, tmpAntal);
4368                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4369                  end
4370                else                else
4371                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4372              end;              end
4373              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4374                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4375                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4376                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4377                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4378                  begin                  begin
4379  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4380                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4381                    begin                    begin
4382                      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
4383                    end                    end
4384                    else                    else
4385                    begin                    begin
# Line 4753  var Line 4388  var
4388                    linienr := linienr + 1;                    linienr := linienr + 1;
4389                  end;                  end;
4390              end;              end;
4391    
4392    
4393              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4394              begin              begin
4395                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4405  var
4405              end;              end;
4406            end;            end;
4407        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4408    
4409          // Free up the list object  
4410          time.stop('Fyld Listbox2');//DEBUG
4411    
4412    
4413          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4414    
4415    
4416          for pakketype in pakketyper.Keys do
4417          begin
4418            pakketyper.TryGetValue(pakketype, tmpAntal);
4419            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4420          end;
4421    
4422            // Free up the dictionary object
4423        pakketyper.Free;        pakketyper.Free;
4424    
4425    
4426    
4427  //      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.');
4428        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4429        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4880  var Line 4529  var
4529        end;        end;
4530      end;      end;
4531    
4532        time.stop('Done');//DEBUG
4533        timeSamlet.stop('SamletTid');//DEBUG
4534    
4535    
4536  end;  end;
4537    
4538  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 4934  var Line 4587  var
4587     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4588     imorgenYmd : string;     imorgenYmd : string;
4589     logFilnavn : string;     logFilnavn : string;
4590      error : Integer;     //error : Integer;
4591    
4592  begin  begin
4593    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4679  begin
4679          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4680          S := buffer;          S := buffer;
4681          SetLength(A,0);          SetLength(A,0);
4682          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4683          if (length(A) < 2) then          if (length(A) < 2) then
4684          begin          begin
4685            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4686          end;          end;
4687            if (length(A) > 1) then            if (length(A) > 1) then
4688            begin            begin
# Line 5103  begin Line 4756  begin
4756          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4757          S := buffer;          S := buffer;
4758          SetLength(A,0);          SetLength(A,0);
4759          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4760          if (length(A) < 3) then          if (length(A) < 3) then
4761          begin          begin
4762            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4763          end;          end;
4764          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4765          begin          begin
# Line 5203  begin Line 4856  begin
4856    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4857    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4858    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4859    MainForm.Color := clRed;    MainForm.Color := clRed;
4860    
4861    
4862    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4863    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4864    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4865    PakkeshopNulstil.Visible := true;  
4866      if (strMessage <> '') then
4867      begin
4868        ListBox1.Items.Insert(0, strMessage);
4869        KommentarST.Caption := strMessage;
4870      end;
4871    
4872      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4873    
4874  end;  end;
4875    
4876  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4930  begin
4930    result := svar;    result := svar;
4931  end;  end;
4932    
 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;  
4933    
4934  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4935  begin  begin
# Line 5301  begin Line 4943  begin
4943    end;    end;
4944  end;  end;
4945    
4946  function TMainForm.AdobeReaderExists: Boolean;  
4947  var  //Nedarvet fra IParentForm
4948    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4949  begin  begin
4950    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4951  end;  end;
4952    
4953  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4954  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;  
4955  begin  begin
4956      ListBox1.Items.Insert(0, msg);
4957      SkrivScanningLogFil(msg);
4958    end;
4959    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4960    
4961    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4962    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4963      printerTxt := 'Der er fravalgt printer i dette program';  begin
4964      ListBox1.Items.Insert(0,printerTxt);  
4965      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4966    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4967    begin    begin
4968      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4969      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4970      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4971    end    end
4972    else    else
4973    begin    begin
4974      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4975      try      PrinterstatusStaticText1.Color := clWhite;
4976        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;  
4977    end;    end;
4978  end;  end;
4979    
4980  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4981  var  function TMainForm.GetFormObject() : TForm;
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   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;  
   
 end;  
   
 // 20150310: start  
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
4982  begin  begin
4983     with Control do    Result := self;
    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;  
4984  end;  end;
 // 20150310: slut  
4985    
4986  end.  end.
4987    

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

  ViewVC Help
Powered by ViewVC 1.1.20