/[projects]/dao/DelphiScanner/Main.pas
ViewVC logotype

Diff of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Main.pas revision 2645 by torben, Thu Aug 20 20:12:11 2015 UTC dao/DelphiScanner/Main.pas revision 3095 by torben, Sun Aug 21 20:51:45 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet    ShellApi, ClipBrd, Buttons, wininet,
22      UITypes,
23      LabelData,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections,
30      TimingHelper
31    
32    ;    ;
33    
34  type  type
35    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
36      StregkodeST: TStaticText;      StregkodeST: TStaticText;
37      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
38      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
39      IdHTTP1: TIdHTTP;      IdHTTP1: TIdHTTP;
40      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
41      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
42      CheckBox1: 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 36  type Line 54  type
54      Lukprogrammet1: TMenuItem;      Lukprogrammet1: TMenuItem;
55      N2: TMenuItem;      N2: TMenuItem;
56      N3: TMenuItem;      N3: TMenuItem;
57      RadioButton1: TRadioButton;      radioStorPakke: TRadioButton;
58      RadioButton2: 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      CheckBox2: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
85      PrinterstatusStaticText1: TStaticText;      PrinterstatusStaticText1: TStaticText;
86      Timer1: TTimer;      Timer1: TTimer;
87      CheckBox3: 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 77  type Line 95  type
95      PanelValg4: TPanel;      PanelValg4: TPanel;
96      PanelValg5: TPanel;      PanelValg5: TPanel;
97      PanelValg6: TPanel;      PanelValg6: TPanel;
98        PanelValg7: TPanel;
99      Manualgenerel1: TMenuItem;      Manualgenerel1: TMenuItem;
100      StaticTextManglendePakker: TStaticText;      StaticTextManglendePakker: TStaticText;
101      PanelManglendePakker1: TPanel;      PanelManglendePakker1: TPanel;
# Line 85  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 112  type Line 127  type
127    procedure FormKeyPress(Sender: TObject; var Key: Char);    procedure FormKeyPress(Sender: TObject; var Key: Char);
128    procedure FormCreate(Sender: TObject);    procedure FormCreate(Sender: TObject);
129    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
130    procedure RadioButton1Click(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
131    procedure RadioButton2Click(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
132    procedure CheckBox1Click(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 139  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();
165    procedure InitDirektelevering();    procedure InitDirektelevering();
166    procedure InitPakkeshoplevering();    procedure InitPakkeshoplevering();
167    procedure InitReturFraPakkeshop();    procedure InitReturFraPakkeshop();
168      procedure InitIndleveringskode();
169    
170    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
171    procedure CheckBox2Click(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 CheckBox3Click(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 169  type Line 185  type
185    procedure PanelValg4Click(Sender: TObject);    procedure PanelValg4Click(Sender: TObject);
186    procedure PanelValg5Click(Sender: TObject);    procedure PanelValg5Click(Sender: TObject);
187    procedure PanelValg6Click(Sender: TObject);    procedure PanelValg6Click(Sender: TObject);
188      procedure PanelValg7Click(Sender: TObject);
189    
190    procedure NulstilAutomatiskValg();    procedure NulstilAutomatiskValg();
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  // 20150310: slut    procedure menuIndleveringClick(Sender: TObject);
197    
198    
199    
200      //Nedarvet fra IParentForm
201      procedure Msg( msg : string);
202      procedure LogMessage( msg : string);
203      procedure SetPrinterstatusText( txt: string; alert: boolean);
204      function GetFormObject() : TForm;
205      function GetXMLDocument() : TXMLDocument;
206    
207    
208    
209    private    private
210      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 183  type Line 212  type
212      SkrivLog : String;      SkrivLog : String;
213      Sted : String;      Sted : String;
214      StedNavn : String;      StedNavn : String;
215      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;  
216  // 29150330: start      Scanningtype,  Pakketype : String;
217      UrlEKLoverforselPakkeshop : String;  
218  // 20150330: slut  
219      UrlFindPakketype, UrlSendPrograminfo: String;      Url : String;
220      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;  
221      ScanTjekkode : String;      Farve : String;
222      ScanTjekkodeAutomatik : string;  
223      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;      Titel : String;
224      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;  
225      LabelType : integer;  
226      AlarmLyd : String;  
     ScannetOkLyd : String;  
     ScannetOkStorLyd : String;  
 // 20150317: start  
     ScannetOkTilTjekkodeLyd : String;  
 // 20150317: slut  
     PrinterNavn : String;  
     TjekPrinter : String;  
     XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
227      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
228      BladhusSted : Integer;      BladhusSted : Integer;
229      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 236  type Line 235  type
235      logTekst : string;      logTekst : string;
236      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
237      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
     TjekUrls : String;  
238    
239            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      Config : TConfiguration;
240    
241    
242        LabelPrint: TLabelPrint;
243    
244      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
245      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
246      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
247      procedure CheckCode();      procedure CheckCode();
248      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 250  type Line 251  type
251      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
252      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
253      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
254        procedure VisAlarmSkaerm(strMessage: string);
255    
256    
257    public    public
258      { Public declarations }      { Public declarations }
259    end;    end;
260    
261    
262  var  var
263    MainForm: TMainForm;    MainForm: TMainForm;
264    
# Line 268  var Line 272  var
272  implementation  implementation
273  {$R *.dfm}  {$R *.dfm}
274    
275  function TMainForm.TColorToHex(Color : TColor) : string;  
276  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
277    
278  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
279  begin  begin
280    
281  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
282        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
283    
284    
285    
286    
287      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
288  // 20150309: slut  
289    
290      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
291      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 329  begin Line 323  begin
323        PanelValg6.Font.Color := clWindowText;        PanelValg6.Font.Color := clWindowText;
324      end;      end;
325    
326      OpdaterListenButton01.Enabled := false;      PanelValg7.Color := clBtnFace;
327        if PanelValg7.Enabled = true then
328        begin
329          PanelValg7.Font.Color := clWindowText;
330        end;
331    
332        BtnOpdaterListen.Enabled := false;
333    
334      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
335      begin      begin
# Line 357  begin Line 357  begin
357        else if (Sted = 'BR') then        else if (Sted = 'BR') then
358          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
359        else if (Sted = 'BK') then        else if (Sted = 'BK') then
360          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
361          else if (Sted = 'TK') then
362            begin StedNavn := 'BK/Trykkompagniet: '; end
363        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
364          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
365        else if (Sted = '1') then        else if (Sted = '1') then
366          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
367        else if (Sted = '2') then        else if (Sted = '2') then
# Line 383  begin Line 385  begin
385    
386      StartScreen();      StartScreen();
387      MainForm.Caption := Titel;      MainForm.Caption := Titel;
388      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
389      MainForm.Farve := Farve;      MainForm.Farve := Farve;
390      MainForm.Titel := Titel;      MainForm.Titel := Titel;
391      MainForm.Url := Url;      MainForm.Url := Url;
# Line 393  begin Line 395  begin
395        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
396      end;      end;
397    
398      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
399        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
400      else      else
401        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
402    
403      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
404      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
405      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
406    
407      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
408      begin      begin
409        if (ScanTjekkode = '1') then        if (Config.ScanTjekkode = '1') then
410        begin        begin
411          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
412          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
413          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
414        end        end
415        else        else
416        begin        begin
417          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
418          CheckBox3.Enabled := true;         // False vil forhindre indtastning af tjekkode i nat x-press scanning          chkScanTjekkode.Enabled := true;         // False vil forhindre indtastning af tjekkode i nat x-press scanning
419          Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning          Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
420        end;        end;
421      end;      end;
422    
423      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
424      begin      begin
425        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
426        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
427      end;      end;
428    
# Line 443  begin Line 445  begin
445          end          end
446          else          else
447          begin          begin
448            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
449          end;          end;
450          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
451        end        end
452        else        else
453        begin        begin
454          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
455          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
456        end;        end;
457      end;      end;
458    
459    
460  end;  end;
461    
462  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 461  begin Line 464  begin
464    
465    if Altidprintepakkelabel1.Checked then    if Altidprintepakkelabel1.Checked then
466    begin    begin
467       CheckBox2.Checked := true;       chkAltidPrintLabel.Checked := true;
468    end    end
469    else    else
470    begin    begin
471       CheckBox2.Checked := false;       chkAltidPrintLabel.Checked := false;
472    end;    end;
473    
474  end;  end;
# Line 475  begin Line 478  begin
478    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
479  end;  end;
480    
481  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
482  begin  begin
483    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
484    begin    begin
485       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
486       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
487    end    end
488    else    else
489    begin    begin
490       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
491       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
492    end;    end;
493    
494  end;  end;
495    
496  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
497  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
498  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
499  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
500       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
501       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
502       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
503  end;  end;
504    
505    
506    
507    //InitForm kaldes før FormCreate
508  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
509  const  const
510    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
511  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
512    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
513    
514  begin  begin
515    
516    
517    // Initierer nogle variabler    // Initierer nogle variabler
518    BladhusSted := 00;    BladhusSted := 00;
519    Application.ShowHint := True;    Application.ShowHint := True;
520    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
521    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
522  // 20150306: start  
523    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
524  // 20150306: slut  
525  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
526    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
527    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
528    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
529    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
530    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
531    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
532    
533    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
534    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 552  begin Line 539  begin
539    
540  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
541    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
542    MainForm.ClientHeight := 700;    MainForm.ClientHeight := 820;
543    
544      Config := TConfiguration.Create();
545      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
546      Config.Sted := Sted;
547    
548    // Læser parametre fra ini filen    // Læser parametre fra ini filen
549    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
550    try    try
551    
552    
553      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
554      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
555      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
556      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
557      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      Scanningtype := 'A'; //hardcoded
558      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      Pakketype := '0';
559      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
560      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
561      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
562      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');  
     UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');  
 // 20150330: start  
     UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');  
 // 20150330: slut  
     UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');  
     UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');  
     UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');  
     UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');  
     LabelType := ReadInteger('Settings','LabelType',1);  
     FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');  
     TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');  
     FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');  
     TitelReturDAO := ReadString('Settings','TitelReturDAO','Returforsendelse fra DAO');  
     FarveReturBoghandler := ReadString('Settings','FarveReturBoghandler','F2F5A9');  
     TitelReturBoghandler := ReadString('Settings','TitelReturBoghandler','Returforsendelse fra boghandler');  
     FarveBudlevering := ReadString('Settings','FarveBudlevering','2E9AFE');  
     TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');  
     FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');  
     TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');  
     FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');  
     TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');  
     SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');  
     ScanTjekkode := ReadString('Settings','ScanTjekkode','0');  
     ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');  
     Scanningtype := ReadString('Settings','Scanningtype','A');  
     Pakketype := ReadString('Settings','Pakketype','0');  
     TestFunktionen := ReadString('Settings','TestFunktion','0');  
     AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');  
     ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');  
     ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');  
 // 20150317: start  
     ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');  
 // 20150317: slut  
     PrinterNavn := ReadString('Settings','PrinterNavn','');  
     TjekPrinter := ReadString('Settings','TjekPrinter','1');  
     TjekUrls := ReadString('Settings','TjekUrls','2');  
563    
564      if (SkrivLog = '1') then      if (SkrivLog = '1') then
565      begin      begin
566        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
567        try        try
568          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
569          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
570          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
571          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
572          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
573          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 622  begin Line 579  begin
579    
580      if Scanningtype = 'A' then      if Scanningtype = 'A' then
581      begin      begin
582        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
583        Scanningtype := '1';        Scanningtype := '1';
584        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
585        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
586      end;      end;
587    
     if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
588    
589      if SporgEfterBoghandler = '1' then  
590        if Config.SporgEfterBoghandler = '1' then
591      begin      begin
592        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
593        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
594      end      end
595      else      else
596      begin      begin
597        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
598        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
599      end;      end;
600    
601      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
602      begin      begin
603        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
604        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
605      end      end
606      else      else
607      begin      begin
608        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
609        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
610      end;      end;
611    
612      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
613      begin      begin
614        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
615        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
616        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
617      end;      end;
618    
# Line 749  begin Line 638  begin
638      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
639      // *************************** //      // *************************** //
640    
641    {$IfDef STED_BK}
642        SpecialVersionSted := 'BK';
643    {$EndIf}
644    {$IfDef STED_TK}
645        SpecialVersionSted := 'TK';// BK-Trykkompagniet
646    {$EndIf}
647    {$IfDef STED_DBK}
648        SpecialVersionSted := 'DBK';
649    {$EndIf}
650    {$IfDef STED_FD}
651        SpecialVersionSted := 'FD';
652    {$EndIf}
653    {$IfDef STED_NS}
654        SpecialVersionSted := 'NS';
655    {$EndIf}
656    
657      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
658      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
659      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 764  begin Line 669  begin
669      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
670      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
671    
 // 20150313: start  
672      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
673      begin      begin
674         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
675         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
676    
677          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
678          Sted := SpecialVersionSted;
679         // her skal vi også disable de knapper BK ikke kan bruge
680          PanelValg2.Enabled := false;
681          PanelValg2.Font.Color := clInactiveCaption;
682          PanelValg3.Enabled := false;
683          PanelValg3.Font.Color := clInactiveCaption;
684          //PanelValg6.Enabled := false;
685          //PanelValg6.Font.Color := clInactiveCaption;
686    
687         // her skal vi også disable de menupunkter FD ikke kan bruge
688          menuNatxpressReturDAO1.Enabled := false;
689          menuNatxpressReturfraKunde1.Enabled := false;
690    
691          //Returpakkerfrapakkeshop1.Enabled := false;
692      end;      end;
693    
694      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
695      begin      begin
696         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
697         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
698      end;  
 // 20150313: slut  
699    
     if SpecialVersionSted = 'BK' then  
     begin  
700        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
701        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
702       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 786  begin Line 704  begin
704        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
705        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
706        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
707        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
708        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
709       // her skal vi også disable de menupunkter BK ikke kan bruge  
710        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
711        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
712        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
713        if SpecialVersionScanningtype = 'A' then  
714        begin        //Returpakkerfrapakkeshop1.Enabled := false;
715           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
716      end;      end;
717    
718      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
719      begin      begin
720        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
721        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
722        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
723        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
724        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
725        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
726        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
727        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
728        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
729        PanelValg6.Enabled := false;  
730        PanelValg6.Font.Color := clInactiveCaption;       // her skal vi også disable de menupunkter BK ikke kan bruge
731       // her skal vi også disable de menupunkter DBK ikke kan bruge        menuNatxpressReturDAO1.Enabled := false;
732        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
733        Returpakkerfraboghandler1.Enabled := false;  
734  // 20150317: start        //Returpakkerfrapakkeshop1.Enabled := false;
735        Pakkeshoplevering1.Enabled := false;  
       Returpakkerfrapakkeshop1.Enabled := false;  
 // 20150317: slut  
736        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
737        begin        begin
738           Scanningtype := '1';           Scanningtype := '1';
# Line 832  begin Line 743  begin
743        end;        end;
744      end;      end;
745    
746        if SpecialVersionSted = 'DBK' then
747        begin
748          Sted := SpecialVersionSted;
749        end;
750    
751      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
752      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
753      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 851  begin Line 767  begin
767        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
768        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
769        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
770          PanelValg7.Enabled := false;
771          PanelValg7.Font.Color := clInactiveCaption;
772       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
773  // 20150317: start  
774        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
775  // 20150317: slut  
776        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
777        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
778        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
779        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
780        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
781        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
782        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
783        begin        begin
784          Scanningtype := '4';          Scanningtype := '4';
785          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
786          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
787          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
788        end        end
# Line 873  begin Line 791  begin
791          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
792          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
793          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
794          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
795          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
796          if Scanningtype = '1' then          if Scanningtype = '1' then
797          begin          begin
798            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
799            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
800            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
801          end;          end;
802          if Scanningtype = '2' then          if Scanningtype = '2' then
803          begin          begin
804            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
805            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
806            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
807          end;          end;
808          if Scanningtype = '3' then          if Scanningtype = '3' then
809          begin          begin
810            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
811            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
812            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
813          end;          end;
814          if Scanningtype = '4' then          if Scanningtype = '4' then
815          begin          begin
816            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
817            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
818            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
819          end;          end;
820          if Scanningtype = '5' then          if Scanningtype = '5' then
821          begin          begin
822            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
823            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
824            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
825          end;          end;
826          if Scanningtype = '6' then          if Scanningtype = '6' then
827          begin          begin
828            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
829            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
830            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
831          end;          end;
# Line 936  begin Line 854  begin
854          Application.Terminate;          Application.Terminate;
855      end;      end;
856    
857      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
858      begin      begin
859          TjekkerUrls();          TjekkerUrls();
860          if TjekUrls = '-' then  // så var der fejl i url - så vi stopper her          if Config.TjekUrls = '-' then  // så var der fejl i url - så vi stopper her
861          begin          begin
862             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
863             MainForm.Color := clRed;             MainForm.Color := clRed;
864             RutenummerST.Caption := '';             RutenummerST.Caption := '';
865             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
866             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
867             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
868             exit;             exit;
869          end;          end;
870      end      end
# Line 988  begin Line 906  begin
906    
907      if Pakketype = '1' then      if Pakketype = '1' then
908      begin      begin
909        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
910        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
911      end      end
912      else      else
913      begin      begin
914        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
915        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
916      end;      end;
917    
918      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
919      begin      begin
920        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
921        Testprinter1.Visible := true;        Testprinter1.Visible := true;
922        Testlyd1.Visible := true;        Testlyd1.Visible := true;
923        Testlyd2.Visible := true;        Testlyd2.Visible := true;
924      end      end
925      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
926      begin      begin
927        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
928        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1019  begin Line 937  begin
937        Testlyd2.Visible := false;        Testlyd2.Visible := false;
938      end;      end;
939    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
940    
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
941    
 // 20150317: start  
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
 // 20150317: slut  
942    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
943    
944      CheckPrintQue('Opstart');      LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
945        LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
946    
947    finally    finally
948      Free;      Free;
# Line 1057  begin Line 951  begin
951      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
952      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
953      begin      begin
954        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
955        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
956        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
957        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
958        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
959        Testprinter1.Visible := false;        Testprinter1.Visible := false;
960        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
961        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
962      end;      end;
963    
964      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1072  begin Line 966  begin
966          InitBladhus();          InitBladhus();
967        end;        end;
968    
969  // 20150310: start  
970      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
971      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
972    
# Line 1113  begin Line 1007  begin
1007      end;      end;
1008    
1009      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1010    
1011      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1012      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1013    
1014  end;  end;
1015    
# Line 1134  var Line 1027  var
1027    BoghandlerNavn : String;    BoghandlerNavn : String;
1028    Koreliste : String;    Koreliste : String;
1029    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1030    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1031    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1032    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1159  begin Line 1051  begin
1051      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1052      numberString := ClipboardData;      numberString := ClipboardData;
1053      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1054  // 20150311: start  
1055  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1056      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1057      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1058      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1174  begin Line 1066  begin
1066      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1067      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1068      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1069        or (NumberString = 'DAO PAKKESHOP')
1070        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1071            or (LowerCase(NumberString) = 'for stor daodirekte' )
1072      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1073  // 20150311: slut  
1074      begin      begin
1075        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1076        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1184  begin Line 1079  begin
1079      begin      begin
1080        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1081      end;      end;
1082    end;    end;  // Slut ctrl-v
1083    
1084    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1085    begin    begin
1086  // 20150306: start  
1087      if (Length(Trim(Stregkode)) = 0) then      // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1088        Stregkode := Trim(Stregkode);
1089    
1090        if (Length(Stregkode) = 0) then
1091      begin      begin
1092        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1093        List1msg := 'Der skal scannes en stregkode...';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
 // 20150316: start  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
1094        exit;        exit;
1095      end;      end;
 // 20150306: slut  
1096    
 // 20150311: start  
1097      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1098      begin      begin
1099         PakkeshopNulstil.Click();         btnNulstil.Click();
1100         exit;         exit;
1101      end;      end;
1102    
1103      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1104      begin      begin
1105         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1106  // 20150312: start  
 //       List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        List1msg := 'HUSK at klikke Nulstil før ny scanning...';  
 // 20150312: slut  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
 // 20150312: start  
        Stregkode := '';  
        StregkodeST.Caption := StregKode;  
 // 20150312: slut  
1107         exit;         exit;
1108      end;      end;
1109    
1110      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1111      begin      begin
1112         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1113         begin         begin
1114            InitLillePakke();            InitLillePakke();
1115         end         end
1116         else         else
1117         begin         begin
1118          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1119         end;         end;
1120         Stregkode := '';         Stregkode := '';
1121         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1257  begin Line 1124  begin
1124    
1125      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1126      begin      begin
1127         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1128         begin         begin
1129            InitStorPakke();            InitStorPakke();
1130         end         end
1131         else         else
1132         begin         begin
1133          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1134         end;         end;
1135         Stregkode := '';         Stregkode := '';
1136         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1137         exit;         exit;
1138      end;      end;
1139    
1140        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1141        begin
1142          if chkForstorTilDirekte.Enabled then
1143          begin
1144            chkForstorTilDirekte.Checked := true;
1145          end
1146          else
1147          begin
1148             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1149          end;
1150          Stregkode := '';
1151          StregkodeST.Caption := StregKode;
1152          exit;
1153        end;
1154    
1155    
1156      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1157      begin      begin
1158         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1159         begin         begin
1160           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1161           begin           begin
1162            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1163           end           end
1164           else           else
1165           begin           begin
1166            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1167           end;           end;
1168         end         end
1169         else         else
1170         begin         begin
1171          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1172         end;         end;
1173         Stregkode := '';         Stregkode := '';
1174         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1316  begin Line 1177  begin
1177    
1178      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1179      begin      begin
1180        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1181        begin        begin
1182           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1183           begin           begin
1184            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1185           end           end
1186           else           else
1187           begin           begin
1188            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1189           end;           end;
1190        end        end
1191        else        else
1192        begin        begin
1193          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1194        end;        end;
1195        Stregkode := '';        Stregkode := '';
1196        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1355  begin Line 1205  begin
1205         end         end
1206         else         else
1207         begin         begin
1208          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1209         end;         end;
1210         Stregkode := '';         Stregkode := '';
1211         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1212         exit;         exit;
1213      end;      end;
1214    
1215  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1216      if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then      if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then
 // 20150323: slut  
1217      begin      begin
1218         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1219         begin         begin
# Line 1384  begin Line 1221  begin
1221         end         end
1222         else         else
1223         begin         begin
1224          //ShowMessage('Ændring ikke tilladt');          VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1225         end;         end;
1226         Stregkode := '';         Stregkode := '';
1227         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1410  begin Line 1236  begin
1236         end         end
1237         else         else
1238         begin         begin
1239          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1240         end;         end;
1241         Stregkode := '';         Stregkode := '';
1242         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1436  begin Line 1251  begin
1251         end         end
1252         else         else
1253         begin         begin
1254          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1255         end;         end;
1256         Stregkode := '';         Stregkode := '';
1257         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1462  begin Line 1266  begin
1266         end         end
1267         else         else
1268         begin         begin
1269          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1270         end;         end;
1271         Stregkode := '';         Stregkode := '';
1272         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1488  begin Line 1281  begin
1281         end         end
1282         else         else
1283         begin         begin
1284          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1285         end;         end;
1286         Stregkode := '';         Stregkode := '';
1287         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1514  begin Line 1296  begin
1296         end         end
1297         else         else
1298         begin         begin
1299          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1300         end;         end;
1301         Stregkode := '';         Stregkode := '';
1302         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1303         exit;         exit;
1304      end;      end;
1305  // 20150311: slut  
1306    
1307      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1308      begin      begin
1309        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1310        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1311        try        try
1312          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1313          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1579  begin Line 1350  begin
1350        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1351      end;      end;
1352    
1353      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1354          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1355          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1356          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1357          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1358          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1359      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1360         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1361         List1msg := 'Pakketype ' + Pakketype + ' kan ikke scannes på dette scanningsted';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
 // 20150316: start  
        RuteNummerST.Caption := '';  
        BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
        KommentarST.Caption := List1msg;  
        PakkeshopNulstil.Visible := true;  
 // 20150311: start  
        StregKode := '';  
        StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1362         exit;         exit;
1363      end;      end;
1364    
1365      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1366      begin      begin
1367        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1368        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1615  begin Line 1374  begin
1374              end;              end;
1375            end            end
1376        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1377  (*  
       else if Pakketype = 'NatXpressReturDAO' then  
           begin  
             if Scanningtype <> '2' then  
             begin  
               Scanningtype := '2';  
               InitReturFraDao();  
             end;  
           end  
       else if Pakketype = 'NatXpressReturKunde' then  
           begin  
             if Scanningtype <> '3' then  
             begin  
               Scanningtype := '3';  
               InitReturFraKunde();  
             end;  
           end  
 *)  
1378        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1379            begin            begin
1380              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1649  begin Line 1391  begin
1391                InitPakkeshoplevering();                InitPakkeshoplevering();
1392              end;              end;
1393            end            end
1394        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
 (*  
       else if Pakketype = 'PakkeshopRetur' then  
1395            begin            begin
1396              if Scanningtype <> '6' then              if Scanningtype <> '6' then
1397              begin              begin
1398                Scanningtype := '6';               VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1399                InitReturFraPakkeshop();  
1400                 exit;
1401              end;              end;
1402            end            end
1403  *)  
1404    
1405        else        else
1406            begin   // Her skal komme en alarm og rød skærm            begin
1407               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1408               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1409               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1410               MainForm.Color := clRed;  
 // 20150316: start  
              RuteNummerST.Caption := '';  
              BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
              KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
 // 20150311: start  
              StregKode := '';  
              StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1411               exit;               exit;
1412            end;            end;
1413        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1414      end      end
1415      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1416      begin      begin
1417        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1418        List1msg := 'Pakkenummer ikke gyldigt (for kort)';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
 // 20150316: start  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
 // 20150312: start  
       StregKode := '';  
       StregkodeST.Caption := StregKode;  
 // 20150312: slut  
1419        exit;        exit;
1420      end;      end;
1421    
1422      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1423      begin      begin
1424        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1425        begin        begin
         PlaySound(PWideChar(AlarmLyd));  
         List1msg := 'Pakke findes som pakketype: ' + Pakketype;  
         ListBox1.Items.Insert(0,List1Msg);  
         MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
         KommentarST.Caption := List1msg;  
         PakkeshopNulstil.Visible := true;  
 // 20150312: start  
         StregKode := '';  
         StregkodeST.Caption := StregKode;  
 // 20150312: slut  
         exit;  
       end;  
     end;  
1426    
1427  // 20150311: start          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
 (*  
     if StregKode = 'Nulstil' then  
     begin  
        PakkeshopNulstil.Click();  
        exit;  
     end;  
1428    
1429      if PakkeshopNulstil.Visible then          exit;
1430      begin        end;
        PlaySound(PWideChar(AlarmLyd));  
        List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
        exit;  
     end;  
   
     if StregKode = 'Lille pakke' then  
     begin  
        InitLillePakke();  
        exit;  
     end;  
   
     if StregKode = 'Stor pakke' then  
     begin  
        InitStorPakke();  
        exit;  
     end;  
   
     if StregKode = 'Indtast kundenummer' then  
     begin  
        if (CheckBox1.State = cbChecked) then  
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
1431      end;      end;
1432    
     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then  
     begin  
        if (CheckBox3.State = cbChecked) then  
        begin  
         CheckBox3.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox3.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     end;  
 *)  
 // 20150311: slut  
1433    
1434    
1435      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1436      begin      begin
1437        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
1438        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1439        begin        begin
1440          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1441          begin          begin
1442              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1443              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1444          end;          end;
1445        end;        end;
1446      end;      end;
1447    
1448      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1449        begin        begin
1450          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1451             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1452             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1453             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1454             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1455             Stregkode := '';             Stregkode := '';
1456             InitScreen();             InitScreen();
1457        end        end
1458      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1459        begin        begin
1460          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1461             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1813  begin Line 1463  begin
1463             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1464             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1465             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1466             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1467             Stregkode := '';             Stregkode := '';
1468             InitScreen();             InitScreen();
1469        end        end
1470      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1471        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1472         begin         begin
1473            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1825  begin Line 1475  begin
1475              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1476              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1477              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1478  // 20150317: start  
1479              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1480  // 20150317: slut  
1481             end             end
1482            else            else
1483             begin             begin
1484                List1msg := 'Du skal scanne en stregkode';                VisAlarmSkaerm( 'Du skal scanne en stregkode' );
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
1485             end;             end;
1486            Stregkode := '';            Stregkode := '';
1487            InitScreen();            InitScreen();
# Line 1849  begin Line 1493  begin
1493             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1494             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1495             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1496             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1497                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1498             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1499                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1500             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1501           end           end
1502          else          else
1503           begin           begin
1504                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1505                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1506                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1507                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1508                KommentarST.Caption := List1msg;                  
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
 // 20150323: start  
1509                StregKode := '';                StregKode := '';
1510                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1511  // 20150323: slut  
1512                exit;                exit;
1513           end;           end;
1514          Stregkode := '';          Stregkode := '';
1515          InitScreen();          InitScreen();
1516       end;       end;
1517    
1518      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
1519      begin      begin
1520         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1521           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1522            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1523         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1524            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1525         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1526         try         try
# Line 1892  begin Line 1530  begin
1530            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1531            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1532            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1533               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1534               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1535              exit;              exit;
1536            end;            end;
1537            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1538            begin            begin
1539              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1540              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1916  begin Line 1550  begin
1550              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1551              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1552              begin              begin
1553                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1554                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1555                MainForm.Color := clRed;                MainForm.Color := clRed;
1556              end;              end;
1557           end;           end;
1558            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
1559            begin            begin
1560              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1561              if Storepakker1.Checked then              if menuStorePakker.Checked then
1562              begin              begin
1563                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1564              end              end
1565              else              else
1566              begin              begin
1567                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1568              end;              end;
1569              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1570            end            end
1571            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1572            begin            begin
1573              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1574              if Storepakker1.Checked then              if menuStorePakker.Checked then
1575              begin              begin
1576                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1577              end              end
1578              else              else
1579              begin              begin
1580                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1581              end;              end;
1582              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1583            end            end
1584            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1585            begin            begin
1586              List1msg := 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages';              VisAlarmSkaerm( 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages' );
             ListBox1.Items.Insert(0,List1Msg);  
             MainForm.Color := clRed;  
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1587            end            end
1588            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1589            begin            begin
1590            end            end
1591            else            else
1592            begin            begin
1593              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1594            end;            end;
1595           if not PakkeshopNulstil.Visible then  
1596             if not btnNulstil.Visible then
1597            begin            begin
1598  // 20150310: start  
1599  //            SletStregkodelinieFraListboks2(StregKode);              If (menuDaoDirekte1.Checked) then
 // 20150310: slut  
             If (Budlevering1.Checked) then  
1600              begin              begin
1601                if Storepakker1.Checked then                if menuStorePakker.Checked then
1602                begin                begin
1603                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1604                end                end
1605                else                else
1606                begin                begin
1607                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1608                end;                end;
1609                InitLillePakke();                InitLillePakke();
1610              end;              end;
1611            end;            end;
1612  // 20150310: start  
1613            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1614  // 20150310: slut  
1615            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1616            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1617            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2015  begin Line 1642  begin
1642    
1643    Key := #0;    Key := #0;
1644    
1645  end;  
1646    
1647    
1648    
1649    
1650    end; //End of OnKeyPress
1651    
1652    
1653    
1654  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1655  const  const
# Line 2024  var Line 1658  var
1658    WebSvar : String;    WebSvar : String;
1659    URLStr : String;    URLStr : String;
1660  begin  begin
1661    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1662    begin    begin
1663      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1664      try      try
1665        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1666        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 2039  begin Line 1673  begin
1673        ShowMessage(logTekst);        ShowMessage(logTekst);
1674        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1675        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1676        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1677        Application.Terminate;        Application.Terminate;
1678      end;      end;
1679      end;      end;
# Line 2052  end; Line 1686  end;
1686    
1687  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1688  var  var
 // 20150309: start  
 //  i:integer;  
1689    i : Integer;    i : Integer;
1690    wrkAntal : String;    wrkAntal : String;
1691    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1692  // 20150309: slut  
1693    
1694  begin  begin
1695      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
1696      begin      begin
1697        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1698          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1699          begin          begin
1700  // 20150309: start            wrkAntalSenere := 0;//initial Value
1701    
1702            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1703            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1704            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1705            begin            begin
1706              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1707              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1708  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1709  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1710  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1711              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1712            end            end
1713            else     // kun idag            else     // kun idag
1714            begin            begin
# Line 2101  begin Line 1734  begin
1734            begin            begin
1735              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1736            end;            end;
 // 20150309: slut  
1737    
 // 20150310: start  
1738            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1739            begin            begin
1740              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2181  begin Line 1812  begin
1812                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1813              end;              end;
1814            end;            end;
1815  // 20150310: slut  
1816            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1817          end;          end;
1818      end;      end;
# Line 2208  begin Line 1839  begin
1839  end;  end;
1840    
1841  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1842    
1843  begin  begin
1844    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1845    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1846    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1847    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1848    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1849    ListBox1.Visible := true;    ListBox1.Visible := true;
1850  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1851  // 20150317: start  
1852  (*    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  
1853    begin    begin
1854      IndlesScanningLogFil();      IndlesScanningLogFil();
1855    end;    end;
# Line 2272  begin Line 1861  begin
1861      01 :      01 :
1862            begin;      // NS            begin;      // NS
1863              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1864              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1865              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1866              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1867              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1868              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2284  begin Line 1873  begin
1873      02 :      02 :
1874            begin;    // BK            begin;    // BK
1875              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1876              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1877              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1878              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1879              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1880              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1881              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1882              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1883              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1884              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2299  begin Line 1888  begin
1888              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1889             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1890              begin              begin
1891                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1892              end              end
1893              else              else
1894              begin              begin
1895                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1896              end;              end;
1897              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1898              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1899              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1900              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1901              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2322  begin Line 1911  begin
1911            end;            end;
1912      04 :  begin;           // DBK      04 :  begin;           // DBK
1913              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1914              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1915              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1916              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1917              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1918              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1919              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1920              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1921              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1922            end;            end;
# Line 2343  var Line 1932  var
1932    URLStr : String;    URLStr : String;
1933    pakkestorrelse : String;    pakkestorrelse : String;
1934    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1935    
1936      PakkeshopLabel: TLabelData;
1937  begin  begin
1938    if RadioButton1.Checked then    if radioStorPakke.Checked then
1939    begin    begin
1940      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
1941    end;    end;
1942    if RadioButton2.Checked then    if radioLillePakke.Checked then
1943    begin    begin
1944      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1945    end;    end;
1946    if Pakkernormal1.Checked then  
1947    
1948      if menuNatXpress1.Checked then
1949    begin    begin
1950       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1951       begin       begin
1952         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1953       end;       end;
1954       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1955    end    end
1956    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
1957    begin    begin
1958       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1959    end    end
1960    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
1961    begin    begin
1962       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
1963    end    end
1964    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
1965    begin    begin
1966       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
1967    end    end
1968    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
1969    begin    begin
1970       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
1971    end    end
1972    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
1973    begin    begin
1974       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
1975      end
1976      else if menuIndlevering.Checked then
1977      begin
1978        URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
1979    end    end
1980    else    else
1981    begin    begin
1982      exit;      exit;
1983    end;    end;
1984    
1985      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
1986      begin
1987        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
1988      end;
1989    
1990    try    try
1991      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1992      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2405  begin Line 2008  begin
2008          end;          end;
2009      end;      end;
2010    end;    end;
2011    
2012    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2013    try    try
2014      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2015       begin       begin
2016        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2017        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2018        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2019        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2020        PrintNyLabel := False;        PrintNyLabel := False;
2021  // 20150310: start  
2022        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2023        begin        begin
 // 20150310: slut  
2024          try          try
2025            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2026          except on e:exception do          except on e:exception do
# Line 2427  begin Line 2030  begin
2030          begin          begin
2031            PrintNyLabel := True;            PrintNyLabel := True;
2032          end;          end;
 // 20150310: start  
2033        end;        end;
 // 20150310: slut  
2034       end       end
2035        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2036        begin
2037    
2038    
2039    
2040    
2041         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2042         if (Kommentar = 'Ok') then
2043         begin
2044           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2045           PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2046           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2047           Stregkode := PakkeshopLabel.Stregkode;
2048    
2049           LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2050           chkForstorTilDirekte.Checked := false;
2051    
2052         end;
2053    
2054    
2055        end
2056      else      else
2057       begin       begin
2058        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2438  begin Line 2060  begin
2060        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2061        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2062        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2063        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2064          begin          begin
2065          try          try
2066            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2463  begin Line 2085  begin
2085          PrintNyLabel := True;          PrintNyLabel := True;
2086        end;        end;
2087      end;      end;
2088    
2089    
2090      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2091      begin      begin
2092        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2093        begin        begin
2094            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2095            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2096        end;        end;
2097      end      end
2098      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2099      begin      begin
2100         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2101         begin        //PrintNyLabel := False;  //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
           // Det er ok at DBK scanner pakker til E     (Schenker)  
        end  
        else  
        begin  
           Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';  
           PrintNyLabel := False;  
        end;  
2102      end;      end;
2103    except on e:exception do    except on e:exception do
2104      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2500  begin Line 2117  begin
2117    //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
2118    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2119    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2120    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2121      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2122    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2123    if RadioButton1.Checked then    if radioStorPakke.Checked then
2124    begin    begin
2125      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2126    end;    end;
2127    if RadioButton2.Checked then    if radioLillePakke.Checked then
2128    begin    begin
2129      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2130    end;    end;
2131    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2132    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2133    begin    begin
2134      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2135    end;    end;
2136    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2137    begin    begin
2138      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2139    end;    end;
2140    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2141       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2142    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2143    begin    begin
2144      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2145    end;    end;
2146    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2147    begin    begin
2148       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2149        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2150        begin        begin
2151          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2152        end;        end;
2153        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2154        begin        begin
2155          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2156        end;        end;
2157    end;    end;
2158    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2159    begin    begin
2160      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2161    end;    end;
2162    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2163    begin    begin
2164      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2165      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2555  begin Line 2172  begin
2172        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2173      end;      end;
2174    end;    end;
2175      if menuIndlevering.Checked then
2176      begin
2177        List1Msg := Stregkode;
2178      end;
2179    
2180    
2181    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2182    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2183    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2184  end;  end;
2185    
2186  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2187  begin  begin
2188    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2189    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2576  pakkeForkertSted : Integer; Line 2199  pakkeForkertSted : Integer;
2199    kontrolKoreliste : string;    kontrolKoreliste : string;
2200    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2201  begin  begin
2202    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2203       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2204    
2205    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2206    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2590  begin Line 2213  begin
2213    end;    end;
2214    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2215    
2216  // 20150306: start  
2217  //  if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) then    if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2218    if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then  
 // 20150306: slut  
2219    begin    begin
2220        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2221        begin        begin
# Line 2615  begin Line 2237  begin
2237        end;        end;
2238    end    end
2239    else    else
2240    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2241    begin    begin
2242       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2243       begin       begin
2244          PrintNyLabel := false;          PrintNyLabel := false;
2245  // 20150306: start  
2246  //        PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
         PlaySound(PWideChar(AlarmLyd));  
2247          MainForm.Color := clRed;          MainForm.Color := clRed;
2248          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2249  // 20150306: slut  
2250       end       end
2251       else       else
2252       begin       begin
# Line 2635  begin Line 2256  begin
2256            PrintNyLabel := true;            PrintNyLabel := true;
2257            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2258            nyFarve := Farve;            nyFarve := Farve;
2259            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2260            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2261            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2262            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2263            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2264            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2265  // 20150213: start  
2266            if (PrinterNavn = 'Ingen') then            if (Config.PrinterNavn = 'Ingen') then
2267            begin            begin
2268               PrintNyLabel := false;               PrintNyLabel := false;
2269            end;            end;
2270  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2271            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2272            begin            begin
2273              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2274              MainForm.Color := clRed;              MainForm.Color := clRed;
2275              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2276            end;            end;
2277  // 20150306: slut  
2278         end;         end;
2279         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2280         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2674  begin Line 2293  begin
2293            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2294            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2295            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2296  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2297            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2298            begin            begin
2299              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2300              MainForm.Color := clRed;              MainForm.Color := clRed;
2301              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2302            end;            end;
2303  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2304         end;         end;
2305       end;       end;
2306    
2307    end;    end;
2308    
2309    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2310    begin    begin
2311      case BladhusSted of      case BladhusSted of
2312        00 :  begin;        00 :  begin;
# Line 2704  begin Line 2318  begin
2318               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2319  // 20150304: slut  // 20150304: slut
2320                begin                begin
2321                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2322                end;                end;
2323              end;              end;
2324        01 :  begin;        01 :  begin;
2325               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2326                    // 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
2327                    // 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')
2328                begin                begin
2329                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2330                end;                end;
2331              end;              end;
2332        02 :  begin;        02 :  begin;
2333                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
2334                begin                begin
2335                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2336                end;                end;
2337              end;              end;
2338        03 :  begin;        03 :  begin;
2339               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2340                    // 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
2341                    // 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')
2342               begin               begin
2343                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2344               end;               end;
2345              end;              end;
2346        04 :  begin;        04 :  begin;
2347                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
2348                begin                begin
2349                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2350                end;                end;
2351              end;              end;
2352        else        else
# Line 2741  begin Line 2355  begin
2355    end;    end;
2356    
2357  // 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
2358    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
2359    begin    begin
2360      exit;      exit;
2361    end;    end;
2362    
2363    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and CheckBox1.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
2364    begin    begin
2365    end    end
2366    else    else
2367    begin    begin
2368      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or CheckBox2.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then      if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2369      begin      begin
2370        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2371        if (CheckBox2.Checked) then        if (chkAltidPrintLabel.Checked) then
2372        begin        begin
2373          logTekst := logTekst + 'Alle ';          logTekst := logTekst + 'Alle ';
2374        end        end
# Line 2768  begin Line 2382  begin
2382        end;        end;
2383        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2384        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2385        with Printer do  
2386        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2387          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;  
2388      end;      end;
2389    end;    end;
2390    
2391  end;  end;
2392    
 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]);  
 // 20150304: start  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
 // 20150304: slut  
       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;  
2393    
2394    
2395  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2396  begin  begin
2397      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2398      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2399  end;  end;
2400    
2401  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2402  begin  begin
2403      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2404      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2405  end;  end;
2406    
2407    
2408  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2409  begin  begin
2410    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2411    begin    begin
2412       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2413    end    end
# Line 2864  begin Line 2418  begin
2418  end;  end;
2419    
2420    
2421  procedure TMainForm.CheckBox2Click(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2422  begin  begin
2423    if CheckBox2.Checked then    if chkAltidPrintLabel.Checked then
2424    begin    begin
2425       Altidprintepakkelabel1.Checked := true;       Altidprintepakkelabel1.Checked := true;
2426    end    end
# Line 2877  begin Line 2431  begin
2431    
2432  end;  end;
2433    
2434  procedure TMainForm.CheckBox3Click(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2435  begin  begin
2436    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2437    begin    begin
2438       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2439    end    end
# Line 2889  begin Line 2443  begin
2443    end;    end;
2444  end;  end;
2445    
2446  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2447  begin  begin
2448        Scanningtype := '5';        Scanningtype := '5';
2449        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2898  end; Line 2452  end;
2452    
2453  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2454  begin  begin
2455      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2456      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2457      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2458  // 20150317: start  
2459      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2460      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2461      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2462      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2463      begin      begin
2464        // 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)
2465        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2466        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2467        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2468      end;      end;
2469  // 20150317: slut  // 20150317: slut
2470  end;  end;
# Line 2925  begin Line 2479  begin
2479    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2480    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...');
2481    
2482          // Tjekker urls    try
2483          logTekst := 'Tjekker urls.';      // Tjekker urls
2484          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2485          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2486        SkrivScanningLogFil(logTekst);
2487    
         // 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;  
2488    
         // 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;  
2489    
2490          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2491          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2492          begin      begin
2493            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2494            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;  
2495    
2496          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2497          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2498          begin      begin
2499            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2500            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;  
2501    
2502          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2503          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2504          begin      begin
2505            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2506            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;  
2507    
2508          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2509          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2510          begin      begin
2511            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2512            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;  
2513    
2514          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2515          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2516          or (PanelValg4.Enabled = true) then      begin
2517          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2518            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;  
2519    
2520          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2521          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2522          begin      begin
2523            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2524            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;  
2525    
2526          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2527          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2528          begin      begin
2529            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2530            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;  
2531    
2532          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2533          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2534          begin      begin
2535            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2536            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;  
2537    
2538  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2539          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2540          if PanelValg5.Enabled = true then      begin
2541          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2542            if CheckUrl(UrlEKLoverforselPakkeshop) then      end;
           begin  
             logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;  
             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;  
 // 20150330: slut  
2543    
2544          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2545          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2546          begin      begin
2547            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2548            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2549          end      end;
2550          else  
2551          begin      // Tjekker UrlEKLoverforsel
2552              inc(urlFejl);   // Optæller antal fejl      if PanelValg1.Enabled = true then
2553              logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;      begin
2554              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2555              if TjekUrls = '1' then      end;
2556              begin  
2557                logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
2558              end;      // Tjekker UrlEKLoverforselPakkeshop
2559              SkrivScanningLogFil(logTekst);      if PanelValg5.Enabled = true then
2560              if TjekUrls = '1' then      begin
2561              begin        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2562                ShowMessage(logTekst);      end;
2563                UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
2564                Application.Terminate;  
2565                exit;      // Tjekker UrlFindPakketype
2566              end;      TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2567          end;  
2568        // Tjekker UrlSendPrograminfo
2569        TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2570    
         // Tjekker UrlSendPrograminfo  
         if CheckUrl(UrlSendPrograminfo) then  
         begin  
           logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;  
           SkrivScanningLogFil(logTekst);  
         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;  
2571    
         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;  
2572    
2573        logTekst := 'urls er ok';
2574        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2575        SkrivScanningLogFil(logTekst);
2576    
2577      Except
2578        Config.TjekUrls := '-';   // markerer at der var fejl
2579    
2580      end;
2581  end;  end;
2582    
2583  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2584  var  const
2585     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2586  begin  begin
2587     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2588     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2589     Result := SystemTimeToDateTime(SystemTime) ;    begin
2590        logTekst := UrlNavn + ' accepteret: ' + Url;
2591        SkrivScanningLogFil(logTekst);
2592      end
2593      else
2594      begin
2595        inc(urlFejl);   // Optæller antal fejl
2596        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2597        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2598        if Config.TjekUrls = '1' then
2599        begin
2600          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2601        end;
2602    
2603        SkrivScanningLogFil(logTekst);
2604    
2605        if Config.TjekUrls = '1' then
2606        begin
2607          ShowMessage(logTekst);
2608          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2609          Application.Terminate;
2610    
2611          raise Exception.Create('UrlFejl');
2612    
2613        end;
2614      end;
2615    
2616  end;  end;
2617    
2618    
2619    
2620  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2621  var  var
2622    SR: TSearchRec;    SR: TSearchRec;
# Line 3331  begin Line 2633  begin
2633      repeat      repeat
2634        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2635        begin        begin
2636    
2637          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2638          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2639          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2640          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2641          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2642          // (æ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 3370  begin Line 2673  begin
2673    end;    end;
2674  end;  end;
2675    
2676  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2677  begin  begin
2678    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2679    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2680    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2681    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2682    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2683    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3383  begin Line 2686  begin
2686    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2687    begin    begin
2688       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2689       UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut       Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2690       Application.Terminate;       Application.Terminate;
2691       exit;       exit;
2692    end;    end;
# Line 3392  begin Line 2695  begin
2695  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2696    if Farve <> '' then    if Farve <> '' then
2697    begin    begin
2698       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  
2699    end;    end;
2700    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2701    begin    begin
2702       InitLillePakke();       InitLillePakke();
2703    end;    end;
# Line 3412  begin Line 2705  begin
2705    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
2706  end;  end;
2707    
2708    
2709  procedure TMainForm.PanelValg1Click(Sender: TObject);  procedure TMainForm.PanelValg1Click(Sender: TObject);
2710  begin  begin
2711        Scanningtype := '1';        Scanningtype := '1';
# Line 3454  begin Line 2748  begin
2748        NulstilAutomatiskValg();        NulstilAutomatiskValg();
2749  end;  end;
2750    
2751    
2752    procedure TMainForm.PanelValg7Click(Sender: TObject);
2753    begin
2754          Scanningtype := '7';
2755          InitIndleveringskode();
2756          NulstilAutomatiskValg();
2757    
2758    end;
2759    
2760  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2761  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;  
 *)  
2762  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2763  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2764       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2765       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2766       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2767  // 20150311: slut  
2768    
2769    
2770  end;  end;
2771    
2772  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2773  begin  begin
2774        Scanningtype := '1';        Scanningtype := '1';
2775        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3493  var Line 2783  var
2783    BoghandlerNavn : String;    BoghandlerNavn : String;
2784    Koreliste : String;    Koreliste : String;
2785    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2786    SmsKode : String;    SmsKode : String;
2787    DBKbane : String;    DBKbane : String;
2788    Leveringssted : String;    Leveringssted : String;
2789    orgTjekUrls : String;    orgTjekUrls : String;
2790  begin  begin
2791    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2792    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2793    begin    begin
2794      TjekkerUrls();      TjekkerUrls();
2795    end;    end;
2796    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2797    begin    begin
2798      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2799      RuteNummer := '';      RuteNummer := '';
# Line 3513  begin Line 2802  begin
2802      Koreliste := '';      Koreliste := '';
2803      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2804      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2805      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2806      MainForm.Color := clRed;      MainForm.Color := clRed;
2807      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2808    end    end
2809    else    else
2810    begin    begin
2811      Falsk := False;      Falsk := False;
2812      Sand := True;  
2813      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2814      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2815      SmsKode := '999999';      SmsKode := '999999';
# Line 3529  begin Line 2818  begin
2818      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2819      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2820    end;    end;
2821    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2822    
2823  end;  end;
2824    
# Line 3540  var Line 2829  var
2829    BoghandlerNavn : String;    BoghandlerNavn : String;
2830    Koreliste : String;    Koreliste : String;
2831    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2832    SmsKode : String;    SmsKode : String;
2833    DBKbane : String;    DBKbane : String;
2834    Leveringssted : String;    Leveringssted : String;
# Line 3549  begin Line 2837  begin
2837    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2838    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2839    Falsk := False;    Falsk := False;
   Sand := True;  
2840    
2841    if (Printer.Printers.Count = 0) then  
2842      if (LabelPrint.GetPrinterCount() = 0) then
2843    begin    begin
2844      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2845    end    end
2846    else if PrinterNavn = 'Ingen' then    else if Config.PrinterNavn = 'Ingen' then
2847    begin    begin
2848      ShowMessage('Der er fravalgt printer i dette program.');      ShowMessage('Der er fravalgt printer i dette program.');
2849    end    end
# Line 3566  begin Line 2854  begin
2854      DBKbane := '999';      DBKbane := '999';
2855      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2856      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2857      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2858    end;    end;
2859    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2860  end;  end;
2861    
2862  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2863  begin  begin
2864    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2865    begin    begin
2866      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2867    end    end
2868    else    else
2869    begin    begin
# Line 3584  begin Line 2872  begin
2872    end;    end;
2873  end;  end;
2874    
2875  {  
  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;  
2876    
2877  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2878  const  const
# Line 3622  var Line 2881  var
2881   tekst, filversion : String;   tekst, filversion : String;
2882  begin  begin
2883    
2884    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2885    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';
2886    
2887    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3644  begin Line 2903  begin
2903          end          end
2904          else          else
2905          begin          begin
2906            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2907          end;          end;
2908      end      end
2909      else      else
2910      begin      begin
2911        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2912      end;      end;
2913    end;    end;
2914    
# Line 3658  begin Line 2917  begin
2917      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2918      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
2919      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2920      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
2921    end;    end;
2922    
2923    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2924    
2925  end;  end;
2926    
2927    
2928  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2929    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
2930  var  var
# Line 3717  begin Line 2977  begin
2977    
2978    if FileExists(fileName) then    if FileExists(fileName) then
2979    begin    begin
2980      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
2981      begin      begin
2982        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
2983        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3741  begin Line 3001  begin
3001    
3002    if FileExists(fileName) then    if FileExists(fileName) then
3003    begin    begin
3004      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3005      begin      begin
3006        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3007        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3008      end      end
3009      else      else
3010      begin      begin
3011        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3012      end;      end;
3013    end    end
3014    else    else
# Line 3757  begin Line 3017  begin
3017    end;    end;
3018  end;  end;
3019    
3020    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3021    begin
3022      Scanningtype := '7';
3023      NulstilAutomatiskValg();
3024      InitIndleveringskode();
3025    end;
3026    
3027  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3028  begin  begin
3029    
3030    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3031    begin    begin
3032       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3033    end    end
3034    else    else
3035    begin    begin
3036       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3037    end;    end;
3038    
3039    
3040  end;  end;
3041    
3042  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3043  begin  begin
3044        Scanningtype := '2';        Scanningtype := '2';
3045        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3046        InitReturFraDao();        InitReturFraDao();
3047  end;  end;
3048    
3049  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3050  begin  begin
3051        Scanningtype := '6';        Scanningtype := '6';
3052        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3788  end; Line 3055  end;
3055    
3056  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3057  begin  begin
3058        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3059        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3060        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3061        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3062        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3063        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3064        CheckBox1.Enabled := true;  
3065        CheckBox2.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3066        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3067        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3068        CheckBox2.Checked := false;        chkAltidPrintLabel.Checked := false;
3069        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3070        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3071        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3072        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3073        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3074        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3075        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3076        ListBox1.Visible := true;        ListBox1.Visible := true;
3077        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3078        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3079        InitLillePakke();        InitLillePakke();
3080        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3081    
3082          chkForstorTilDirekte.Checked := false;
3083          chkForstorTilDirekte.Enabled := false;
3084    
3085        if BladhusSted = 0 then        if BladhusSted = 0 then
3086        begin        begin
3087          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3820  end; Line 3091  end;
3091    
3092  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3093  begin  begin
3094        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3095        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3096        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3097        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3098        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3099        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3100        CheckBox1.Enabled := false;  
3101        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3102        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3103        CheckBox2.Checked := false;  
3104        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3105        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3106        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3107        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3108        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3109        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3110        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3111        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3112        ListBox1.Visible := true;        ListBox1.Visible := true;
3113        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3114        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3115        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3116    
3117          chkForstorTilDirekte.Checked := false;
3118          chkForstorTilDirekte.Enabled := false;
3119    
3120        InitLillePakke();        InitLillePakke();
3121  end;  end;
3122    
3123  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3124  begin  begin
3125        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3126        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3127        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3128        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3129        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3130        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3131        CheckBox1.Enabled := false;  
3132        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3133        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
       CheckBox2.Checked := false;  
3134        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3135        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3136        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3137        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3138        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3139        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3140        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3141        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3142        ListBox1.Visible := true;        ListBox1.Visible := true;
3143        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3144        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3145        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3146    
3147          chkForstorTilDirekte.Checked := false;
3148          chkForstorTilDirekte.Enabled := false;
3149    
3150        InitLillePakke();        InitLillePakke();
3151  end;  end;
3152    
3153  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3154  begin  begin
3155        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3156        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3157        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3158        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3159        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3160        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3161        CheckBox1.Enabled := false;  
3162        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3163        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3164        CheckBox2.Checked := false;  
3165        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3166        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3167        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3168        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3169        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3170        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3171        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3172        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3173        ListBox1.Visible := true;        ListBox1.Visible := true;
3174        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3175        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3176        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3177        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3178        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3179        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3180        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3181    
3182          chkForstorTilDirekte.Checked := false;
3183          chkForstorTilDirekte.Enabled := true;
3184    
3185        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3186        begin        begin
3187            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3910  end; Line 3192  end;
3192    
3193  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3194  begin  begin
3195        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3196        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3197        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3198        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3199        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3200        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3201        CheckBox1.Enabled := false;  
3202        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3203        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3204        CheckBox2.Checked := false;  
3205        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3206        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3207        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3208        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3209        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3210        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3211        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3212        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3213        ListBox1.Visible := true;        ListBox1.Visible := true;
3214        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3215        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3216        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3217  // 20150330: start  
3218  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3219        EKLoverforsel.Enabled := true;  
3220  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3221          chkForstorTilDirekte.Enabled := true;
3222    
3223        InitLillePakke();        InitLillePakke();
3224        IndlesScanningLogFil();        IndlesScanningLogFil();
3225        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3948  end; Line 3232  end;
3232    
3233  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3234  begin  begin
3235        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3236        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3237        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3238        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3239        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3240        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3241        CheckBox1.Enabled := false;  
3242        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3243        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3244        CheckBox2.Checked := false;  
3245        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3246        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3247        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3248        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3249        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3250        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3251        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3252        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3253        ListBox1.Visible := true;        ListBox1.Visible := true;
3254        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3255        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3256        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3257        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3258    
3259          chkForstorTilDirekte.Checked := false;
3260          chkForstorTilDirekte.Enabled := false;
3261    
3262    
3263        InitLillePakke();        InitLillePakke();
3264        IndlesScanningLogFil();        IndlesScanningLogFil();
3265        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3981  begin Line 3270  begin
3270        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3271  end;  end;
3272    
3273  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3274  begin  begin
3275        Scanningtype := '3';        Scanningtype := '3';
3276        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3277        InitReturFraKunde();        InitReturFraKunde();
3278  end;  end;
3279    
3280  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.InitIndleveringskode();
3281    begin
3282          menuIndlevering.Checked := true;
3283          menuAutomatiskTjekkodeStyring.Enabled := false;
3284    
3285          btnNulstil.Visible := false;
3286          InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3287          PanelValg7.Color := clGreen;
3288          PanelValg7.Font.Color := clWhite;
3289    
3290          chkAltidPrintLabel.Enabled := false;
3291          Altidprintepakkelabel1.Enabled := false;
3292    
3293          Altidprintepakkelabel1.Checked := false;
3294          Sprgefterboghandlernummer1.Checked := false;
3295          Sprgefterboghandlernummer1.Enabled := false;
3296          chkSporgEfterKunde.Checked := false;
3297    
3298    
3299    
3300          menuSmaaPakker.Enabled := false;
3301          menuStorePakker.Enabled := false;
3302          radioStorPakke.Enabled := false;
3303          radioLillePakke.Enabled := false;
3304          ListBox1.Visible := true;
3305          ListBox1.Items.Clear();
3306    
3307          BtnDownloadKontrolfil.Enabled := false;
3308          BtnOpdaterListen.Enabled := true;
3309          BtnEKLoverforsel.Enabled := false;
3310    
3311          chkForstorTilDirekte.Checked := false;
3312          chkForstorTilDirekte.Enabled := false;
3313    
3314    
3315          InitLillePakke();
3316          IndlesScanningLogFil();
3317          if BladhusSted = 0 then
3318          begin
3319            IndlesManglendeScanninger();
3320          end;
3321          IdFTP1.Passive := true;
3322          IdFTP1.PassiveUseControlHost := true;
3323    end;
3324    
3325    
3326    procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3327  begin  begin
3328    InitStorPakke();    InitStorPakke();
3329  end;  end;
3330    
3331  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3332  begin  begin
3333    InitLillePakke();    InitLillePakke();
3334  end;  end;
3335    
3336  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3337  begin  begin
3338    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3339    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
 // 20150310: start  
3340  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3341  end;  end;
3342    
3343  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3344  begin  begin
3345    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3346    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3347  // 20150310: start  // 20150310: start
3348  //  Stregkode := '';  //  Stregkode := '';
3349  // 20150310: slut  // 20150310: slut
3350  end;  end;
3351    
 /// <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]]);  
3352    
     // 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;  
3353    
3354  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3355  begin  begin
# Line 4094  end; Line 3362  end;
3362    
3363  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3364  begin  begin
3365     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3366     begin     begin
3367       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3368     end     end
3369     else     else
3370     begin     begin
# Line 4106  end; Line 3374  end;
3374    
3375  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3376  begin  begin
 // 20150317: start  
3377    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3378    begin    begin
3379       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3380       begin       begin
3381         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3382       end       end
3383       else       else
3384       begin       begin
# Line 4119  begin Line 3386  begin
3386       end;       end;
3387       exit;       exit;
3388    end;    end;
 // 20150317: slut  
3389    
3390    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3391       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3392       begin       begin
3393         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3394       end       end
3395       else       else
3396       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3397         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3398       end;       end;
3399    if Storepakker1.Checked then    if menuStorePakker.Checked then
3400       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3401       begin       begin
3402         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3403       end       end
3404       else       else
3405       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3406         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3407       end;       end;
3408  end;  end;
3409    
3410    
3411  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3412  begin  begin
3413        Scanningtype := '4';        Scanningtype := '4';
3414        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 4160  begin; Line 3420  begin;
3420    CheckCode();    CheckCode();
3421  end;  end;
3422    
3423  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3424  var  var
3425    WebSvar : String;    WebSvar : String;
3426    URLStr : String;    URLStr : String;
# Line 4170  var Line 3430  var
3430    status, kommentar : String;    status, kommentar : String;
3431    
3432  begin  begin
3433      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3434    
3435      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');
3436      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3437      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3438      StedKode := Sted;      StedKode := Sted;
3439      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3440  // 20150330: start  
3441      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3442      begin      begin
3443        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3444      end;      end;
3445  // 20150330: slut  
3446    
3447      try      try
3448      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4233  begin Line 3493  begin
3493        end;        end;
3494      end;      end;
3495    
3496      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3497    
3498      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
3499    
3500      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3501      if status = 'Fejl' then      if status = 'Fejl' then
3502      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3503         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3504         MainForm.Color := clRed;         MainForm.Color := clRed;
3505         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3506         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 4250  begin Line 3510  begin
3510           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3511         end;         end;
3512         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3513         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3514      end;      end;
3515    
3516  end;  end;
# Line 4274  begin Line 3534  begin
3534    else    else
3535      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3536  }  }
3537    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3538    
3539    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3540    CheckCode();    CheckCode();
# Line 4282  end; Line 3542  end;
3542    
3543  end;  end;
3544    
 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;  
3545    
3546  //  //
3547  // Bladhus ***  // Bladhus ***
# Line 4798  begin Line 4019  begin
4019    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
4020  end;  end;
4021    
4022  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4023  begin  begin
4024      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4025      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
4026  end;  end;
4027    
4028  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4029  const  const
4030    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4031    
# Line 4813  begin Line 4034  begin
4034      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
4035  end;  end;
4036    
4037  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4038  begin  begin
4039      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4040      begin      begin
# Line 4822  begin Line 4043  begin
4043      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
4044  end;  end;
4045    
4046  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;  
4047    
4048  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4049  var  var
# Line 4845  var Line 4054  var
4054    I: Integer;    I: Integer;
4055    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4056    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4057    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4058    pakketyper : TStrings;    //pakketyper : TStrings;
4059      pakketyper : TDictionary<String, Integer>;
4060      tmpAntal : Integer;
4061    
4062     time, timeSamlet : TTimingHelper;
4063    
4064    
4065    antlin : Integer;    antlin : Integer;
4066  // 20150306: start  
4067    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4068  // 20150306: slut  
4069    XmlFelter : TStrings;    //XmlFelter : TStrings;
4070      XmlFelter : TDictionary<String, Integer>;
4071    
4072   begin   begin
4073      XmlFelter := TStringList.Create;  
4074      pakketyper := TStringList.Create;  
4075        XmlFelter := TDictionary<String, Integer>.Create;
4076        pakketyper := TDictionary<String, Integer>.Create;
4077    
4078      linienr := 0;      linienr := 0;
4079      ListBox2.Clear;      ListBox2.Clear;
4080      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 4870  var Line 4089  var
4089          StedKode := Sted;          StedKode := Sted;
4090        end;        end;
4091    
4092  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4093  (*  
4094      if Returpakkerfrapakkeshop1.Checked then  
4095       begin  
4096        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);      if (Scanningtype = '7') then
      end  
     else if Pakkeshoplevering1.Checked then  
4097       begin       begin
4098        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4099       end       end
4100      else if Pakkernormal1.Checked then      else if (Scanningtype = '6') then
4101       begin       begin
4102        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
      end  
     else  
      begin  
       URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer  
      end;  
 *)  
     if (Scanningtype = '6') then  
      begin  
       URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);  
4103       end       end
4104      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4105       begin       begin
4106        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4107       end       end
4108      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4109       begin       begin
4110        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4111       end       end
4112      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4113       begin       begin
4114        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4115       end       end
4116      else      else
4117       begin       begin
# Line 4911  var Line 4119  var
4119       end;       end;
4120  // 20150310: slut  // 20150310: slut
4121    
4122        time := TTimingHelper.create();        //DEBUG
4123        timeSamlet := TTimingHelper.create();        //DEBUG
4124    
4125      try      try
4126      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4127  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4920  var Line 4131  var
4131        begin        begin
4132          // 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
4133          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4134    
4135    
4136    
4137        end;        end;
4138        on e:exception do        on e:exception do
4139        begin        begin
# Line 4930  var Line 4144  var
4144        end;        end;
4145      end;      end;
4146      try      try
4147          time.stop('HTTP Load');     //DEBUG
4148    
4149        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4150    
4151  // 20150206: start        time.stop('XML Load');     //DEBUG
4152    
4153    
4154    
4155    
4156    
4157    
4158        antlin := 0;        antlin := 0;
4159        antlinIdag := 0;        antlinIdag := 0;
4160        antlinSenere := 0;        antlinSenere := 0;
4161  // 20150306: slut  
       antalFelterFundet := 0;  
4162        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4163            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4164            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4165              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4166              begin              begin
4167                 antlin := antlin + 1;                 Inc(antlin);
4168                 // 20150306: start                 // 20150306: start
4169                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4170                begin                begin
4171                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4172                   begin                   begin
4173                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4174                   end                   end
4175                   else                   else
4176                   begin                   begin
4177                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4178                   end;                   end;
4179                end;                end;
4180                 // 20150306: slut                 // 20150306: slut
4181              end;              end;
4182            end;            end;
4183            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4184                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4185                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4186                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4187                  end
4188                else                else
4189                  XmlFelter.values[Node.NodeName] := '1';                begin
4190                    XmlFelter.Add(Node.NodeName, 1);
4191                  end;
4192    
4193        end;        end;
4194        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4195        antalFelterFundet := 0;        antalFelterFundet := 0;
4196        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4197        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4198  // 20150206: start  
4199  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';        time.stop('Antal Linier');//DEBUG
4200    
4201          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4202    
4203        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4204        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4205        begin        begin
4206          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4207        end;        end;
4208        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4209  // 20150306: slut  
4210        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4211    
4212    
4213        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4214            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4215            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4986  var Line 4217  var
4217                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4218                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4219                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4220              end;              end
4221              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4222                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4223                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4224                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4225              end;              end
4226              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4227                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4228                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4229                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4230              end;              end
4231              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4232                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4233                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4234                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4235              end;              end
4236              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4237                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4238                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4239                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4240                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4241                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4242                    pakketyper.TryGetValue(pakketype, tmpAntal);
4243                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4244                  end
4245                else                else
4246                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4247              end;              end
4248              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4249                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4250                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4251                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4252                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4253                  begin                  begin
4254  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4255                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4256                    begin                    begin
4257                      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
4258                    end                    end
4259                    else                    else
4260                    begin                    begin
4261                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4262                    end;                    end;
4263  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4264                  end;                  end;
4265              end;              end;
4266    
4267    
4268              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4269              begin              begin
4270                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 5046  var Line 4280  var
4280              end;              end;
4281            end;            end;
4282        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4283    
4284          // Free up the list object  
4285          time.stop('Fyld Listbox2');//DEBUG
4286    
4287    
4288          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4289    
4290    
4291          for pakketype in pakketyper.Keys do
4292          begin
4293            pakketyper.TryGetValue(pakketype, tmpAntal);
4294            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4295          end;
4296    
4297            // Free up the dictionary object
4298        pakketyper.Free;        pakketyper.Free;
4299  // 20150306: start  
4300    
4301    
4302  //      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.');
4303        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4304        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5062  var Line 4307  var
4307        end;        end;
4308        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4309        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4310        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4311        begin        begin
4312          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5072  var Line 4315  var
4315        begin        begin
4316          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4317        end;        end;
 // 20150309: slut  
4318    
 // 20150310: start  
4319        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4320        begin        begin
4321          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5153  var Line 4394  var
4394            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4395          end;          end;
4396        end;        end;
 // 20150310: slut  
4397    
4398      except on e:exception do      except on e:exception do
4399        begin        begin
# Line 5164  var Line 4404  var
4404        end;        end;
4405      end;      end;
4406    
4407        time.stop('Done');//DEBUG
4408        timeSamlet.stop('SamletTid');//DEBUG
4409    
4410    
4411  end;  end;
4412    
4413  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 5215  end; Line 4459  end;
4459  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4460  var  var
4461     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4462     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4463     imorgenYmd : string;     imorgenYmd : string;
4464     logFilnavn : string;     logFilnavn : string;
4465      error : Integer;     //error : Integer;
4466    
4467  begin  begin
4468    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5312  begin Line 4554  begin
4554          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4555          S := buffer;          S := buffer;
4556          SetLength(A,0);          SetLength(A,0);
4557          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4558          if (length(A) < 2) then          if (length(A) < 2) then
4559          begin          begin
4560            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4561          end;          end;
4562            if (length(A) > 1) then            if (length(A) > 1) then
4563            begin            begin
# Line 5341  begin Line 4583  begin
4583          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4584          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4585          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4586          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4587        end;        end;
4588      end;      end;
4589    end    end
# Line 5350  begin Line 4592  begin
4592        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4593        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4594        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4595        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4596    end;    end;
4597  end;  end;
4598    
# Line 5389  begin Line 4631  begin
4631          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4632          S := buffer;          S := buffer;
4633          SetLength(A,0);          SetLength(A,0);
4634          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4635          if (length(A) < 3) then          if (length(A) < 3) then
4636          begin          begin
4637            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4638          end;          end;
4639          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4640          begin          begin
# Line 5421  begin Line 4663  begin
4663          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4664          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4665          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4666          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4667        end;        end;
4668      end;      end;
4669    end    end
# Line 5430  begin Line 4672  begin
4672        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4673        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4674        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4675        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4676    end;    end;
4677  end;  end;
4678    
# Line 5484  begin Line 4726  begin
4726    result := svar;    result := svar;
4727  end;  end;
4728    
4729    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4730    begin
4731      //ShowMessage('Ændring ikke tilladt');
4732      // Her skal komme en 'rød skærm' alarm
4733      PlaySound(PWideChar(Config.AlarmLyd));
4734      MainForm.Color := clRed;
4735    
4736    
4737      RuteNummerST.Caption := '';
4738      BoghandlerNavnST.Caption := '';
4739      btnNulstil.Visible := true;
4740    
4741      if (strMessage <> '') then
4742      begin
4743        ListBox1.Items.Insert(0, strMessage);
4744        KommentarST.Caption := strMessage;
4745      end;
4746    
4747      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4748    
4749    end;
4750    
4751  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4752  var  var
4753     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5504  end; Line 4768  end;
4768  function TMainForm.getProddag() : String;  function TMainForm.getProddag() : String;
4769  begin  begin
4770  //  ShowMessage(LongDayNames[DayOfWeek(getProddato())]);  //  ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4771    result := LongDayNames[DayOfWeek(getProddato())];    result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4772    //result := 'lørdag';     // MENS VI TESTER  kan vi fremtvinge lørdag situation her    //result := 'lørdag';     // MENS VI TESTER  kan vi fremtvinge lørdag situation her
4773  end;  end;
4774    
# Line 5541  begin Line 4805  begin
4805    result := svar;    result := svar;
4806  end;  end;
4807    
 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;  
4808    
4809  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4810  begin  begin
4811    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
4812    begin    begin
4813       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
4814    end    end
4815    else    else
4816    begin    begin
4817       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
4818    end;    end;
4819  end;  end;
4820    
4821  function TMainForm.AdobeReaderExists: Boolean;  
4822  var  //Nedarvet fra IParentForm
4823    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4824  begin  begin
4825    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4826  end;  end;
4827    
4828  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4829  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;  
4830  begin  begin
4831      ListBox1.Items.Insert(0, msg);
4832      SkrivScanningLogFil(msg);
4833    end;
4834    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4835    
4836    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4837    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4838      printerTxt := 'Der er fravalgt printer i dette program';  begin
4839      ListBox1.Items.Insert(0,printerTxt);  
4840      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4841    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4842    begin    begin
4843      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4844      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4845      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4846    end    end
4847    else    else
4848    begin    begin
4849      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4850      try      PrinterstatusStaticText1.Color := clWhite;
4851        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;  
4852    end;    end;
4853  end;  end;
4854    
4855  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4856  var  function TMainForm.GetFormObject() : TForm;
4857    hSession, hfile, hRequest: hInternet;  begin
4858    dwindex,dwcodelen :dword;    Result := self;
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
4859  end;  end;
4860    
4861  // 20150310: start  //Nedarvet fra IParentForm
4862  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetXMLDocument() : TXMLDocument;
 var  
    R: TRect;  
    Rgn: HRGN;  
4863  begin  begin
4864     with Control do    Result := XMLDocument1
    begin  
      R := ClientRect;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;  
      rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;  
      Perform(EM_GETRECT, 0, lParam(@r)) ;  
      InflateRect(r, - 4, - 4) ;  
      Perform(EM_SETRECTNP, 0, lParam(@r)) ;  
      SetWindowRgn(Handle, rgn, True) ;  
      Invalidate;  
    end;  
4865  end;  end;
4866  // 20150310: slut  
4867    
4868  end.  end.
4869    

Legend:
Removed from v.2645  
changed lines
  Added in v.3095

  ViewVC Help
Powered by ViewVC 1.1.20