/[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 3128 by torben, Thu Oct 20 06:02:09 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        procedure chkEmballageRepareretClick(Sender: TObject);
207        procedure chkUdenforSpecifikationClick(Sender: TObject);
208    
209    
210    
211    private    private
212      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 183  type Line 214  type
214      SkrivLog : String;      SkrivLog : String;
215      Sted : String;      Sted : String;
216      StedNavn : String;      StedNavn : String;
217      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;  
218  // 29150330: start      Scanningtype,  Pakketype : String;
219      UrlEKLoverforselPakkeshop : String;  
220  // 20150330: slut  
221      UrlFindPakketype, UrlSendPrograminfo: String;      Url : String;
222      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;  
223      ScanTjekkode : String;      Farve : String;
224      ScanTjekkodeAutomatik : string;  
225      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;      Titel : String;
226      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;  
227      LabelType : integer;  
228      AlarmLyd : String;  
     ScannetOkLyd : String;  
     ScannetOkStorLyd : String;  
 // 20150317: start  
     ScannetOkTilTjekkodeLyd : String;  
 // 20150317: slut  
     PrinterNavn : String;  
     TjekPrinter : String;  
     XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
229      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
230      BladhusSted : Integer;      BladhusSted : Integer;
231      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 236  type Line 237  type
237      logTekst : string;      logTekst : string;
238      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
239      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
     TjekUrls : String;  
240    
241            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      Config : TConfiguration;
242    
243    
244        LabelPrint: TLabelPrint;
245    
246      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
247      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
248      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
249      procedure CheckCode();      procedure CheckCode();
250      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanningerAntal();
251        procedure IndlesManglendeScanningerListe();
252      procedure IndlesRuteskiftFil(var filnavn : string);      procedure IndlesRuteskiftFil(var filnavn : string);
253      procedure IndlesKontrolFil(var filnavn : string);      procedure IndlesKontrolFil(var filnavn : string);
254      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
255      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
256      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
257        procedure VisAlarmSkaerm(strMessage: string);
258    
259    
260    public    public
261      { Public declarations }      { Public declarations }
262    end;    end;
263    
264    
265  var  var
266    MainForm: TMainForm;    MainForm: TMainForm;
267    
# Line 268  var Line 275  var
275  implementation  implementation
276  {$R *.dfm}  {$R *.dfm}
277    
278  function TMainForm.TColorToHex(Color : TColor) : string;  
279  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
280    
281  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
282  begin  begin
283    
284  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
285        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
286    
287    
288    
289    
290      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
291  // 20150309: slut  
292    
293      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
294      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 329  begin Line 326  begin
326        PanelValg6.Font.Color := clWindowText;        PanelValg6.Font.Color := clWindowText;
327      end;      end;
328    
329      OpdaterListenButton01.Enabled := false;      PanelValg7.Color := clBtnFace;
330        if PanelValg7.Enabled = true then
331        begin
332          PanelValg7.Font.Color := clWindowText;
333        end;
334    
335        BtnOpdaterListen.Enabled := false;
336    
337      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
338      begin      begin
# Line 357  begin Line 360  begin
360        else if (Sted = 'BR') then        else if (Sted = 'BR') then
361          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
362        else if (Sted = 'BK') then        else if (Sted = 'BK') then
363          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
364          else if (Sted = 'TK') then
365            begin StedNavn := 'BK/Trykkompagniet: '; end
366        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
367          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
368        else if (Sted = '1') then        else if (Sted = '1') then
369          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
370        else if (Sted = '2') then        else if (Sted = '2') then
# Line 383  begin Line 388  begin
388    
389      StartScreen();      StartScreen();
390      MainForm.Caption := Titel;      MainForm.Caption := Titel;
391      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
392      MainForm.Farve := Farve;      MainForm.Farve := Farve;
393      MainForm.Titel := Titel;      MainForm.Titel := Titel;
394      MainForm.Url := Url;      MainForm.Url := Url;
# Line 393  begin Line 398  begin
398        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
399      end;      end;
400    
401      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
402        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
403      else      else
404        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
405    
406      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
407      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
408      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
409    
410      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
411      begin      begin
412        if (ScanTjekkode = '1') then        if (Config.ScanTjekkode = '1') then
413        begin        begin
414          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
415          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
416          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
417        end        end
418        else        else
419        begin        begin
420          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
421          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
422          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
423        end;        end;
424      end;      end;
425    
426      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
427      begin      begin
428        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
429        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
430      end;      end;
431    
# Line 443  begin Line 448  begin
448          end          end
449          else          else
450          begin          begin
451            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
452          end;          end;
453          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
454        end        end
455        else        else
456        begin        begin
457          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
458          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
459        end;        end;
460      end;      end;
461    
462    
463  end;  end;
464    
465  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 461  begin Line 467  begin
467    
468    if Altidprintepakkelabel1.Checked then    if Altidprintepakkelabel1.Checked then
469    begin    begin
470       CheckBox2.Checked := true;       chkAltidPrintLabel.Checked := true;
471    end    end
472    else    else
473    begin    begin
474       CheckBox2.Checked := false;       chkAltidPrintLabel.Checked := false;
475    end;    end;
476    
477  end;  end;
# Line 475  begin Line 481  begin
481    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
482  end;  end;
483    
484  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
485  begin  begin
486    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
487    begin    begin
488       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
489       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
490    end    end
491    else    else
492    begin    begin
493       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
494       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
495    end;    end;
496    
497  end;  end;
498    
499  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
500  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
501  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
502  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
503       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
504       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
505       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
506  end;  end;
507    
508    
509    
510    //InitForm kaldes før FormCreate
511  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
512  const  const
513    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
514  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
515    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
516    
517  begin  begin
518    
519    
520    // Initierer nogle variabler    // Initierer nogle variabler
521    BladhusSted := 00;    BladhusSted := 00;
522    Application.ShowHint := True;    Application.ShowHint := True;
523    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
524    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
525  // 20150306: start  
526    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
527  // 20150306: slut  
528  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
529    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
530    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
531    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
532    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
533    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
534    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
535    
536    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
537    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 552  begin Line 542  begin
542    
543  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
544    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
545    MainForm.ClientHeight := 700;    MainForm.ClientHeight := 920;
546    
547      Config := TConfiguration.Create();
548      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
549      Config.Sted := Sted;
550    
551    // Læser parametre fra ini filen    // Læser parametre fra ini filen
552    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
553    try    try
554    
555    
556      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
557      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
558      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
559      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
560      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      Scanningtype := 'A'; //hardcoded
561      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      Pakketype := '0';
562      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
563      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
564      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
565      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');  
     UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');  
 // 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');  
566    
567      if (SkrivLog = '1') then      if (SkrivLog = '1') then
568      begin      begin
569        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
570        try        try
571          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
572          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
573          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
574          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
575          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
576          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 622  begin Line 582  begin
582    
583      if Scanningtype = 'A' then      if Scanningtype = 'A' then
584      begin      begin
585        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
586        Scanningtype := '1';        Scanningtype := '1';
587        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
588        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
589      end;      end;
590    
     if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
591    
592      if SporgEfterBoghandler = '1' then  
593        if Config.SporgEfterBoghandler = '1' then
594      begin      begin
595        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
596        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
597      end      end
598      else      else
599      begin      begin
600        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
601        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
602      end;      end;
603    
604      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
605      begin      begin
606        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
607        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
608      end      end
609      else      else
610      begin      begin
611        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
612        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
613      end;      end;
614    
615      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
616      begin      begin
617        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
618        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
619        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
620      end;      end;
621    
# Line 749  begin Line 641  begin
641      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
642      // *************************** //      // *************************** //
643    
644    {$IfDef STED_BK}
645        SpecialVersionSted := 'BK';
646    {$EndIf}
647    {$IfDef STED_TK}
648        SpecialVersionSted := 'TK';// BK-Trykkompagniet
649    {$EndIf}
650    {$IfDef STED_DBK}
651        SpecialVersionSted := 'DBK';
652    {$EndIf}
653    {$IfDef STED_FD}
654        SpecialVersionSted := 'FD';
655    {$EndIf}
656    {$IfDef STED_NS}
657        SpecialVersionSted := 'NS';
658    {$EndIf}
659    
660      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
661      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
662      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 764  begin Line 672  begin
672      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
673      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
674    
 // 20150313: start  
675      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
676      begin      begin
677         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
678         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
679    
680          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
681          Sted := SpecialVersionSted;
682         // her skal vi også disable de knapper BK ikke kan bruge
683          PanelValg2.Enabled := false;
684          PanelValg2.Font.Color := clInactiveCaption;
685          PanelValg3.Enabled := false;
686          PanelValg3.Font.Color := clInactiveCaption;
687          //PanelValg6.Enabled := false;
688          //PanelValg6.Font.Color := clInactiveCaption;
689    
690         // her skal vi også disable de menupunkter FD ikke kan bruge
691          menuNatxpressReturDAO1.Enabled := false;
692          menuNatxpressReturfraKunde1.Enabled := false;
693    
694          //Returpakkerfrapakkeshop1.Enabled := false;
695      end;      end;
696    
697      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
698      begin      begin
699         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
700         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
701      end;  
 // 20150313: slut  
702    
     if SpecialVersionSted = 'BK' then  
     begin  
703        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
704        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
705       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 786  begin Line 707  begin
707        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
708        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
709        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
710        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
711        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
712       // her skal vi også disable de menupunkter BK ikke kan bruge  
713        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
714        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
715        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
716        if SpecialVersionScanningtype = 'A' then  
717        begin        //Returpakkerfrapakkeshop1.Enabled := false;
718           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
719      end;      end;
720    
721      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
722      begin      begin
723        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
724        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
725        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
726        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
727        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
728        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
729        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
730        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
731        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
732        PanelValg6.Enabled := false;  
733        PanelValg6.Font.Color := clInactiveCaption;       // her skal vi også disable de menupunkter BK ikke kan bruge
734       // her skal vi også disable de menupunkter DBK ikke kan bruge        menuNatxpressReturDAO1.Enabled := false;
735        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
736        Returpakkerfraboghandler1.Enabled := false;  
737  // 20150317: start        //Returpakkerfrapakkeshop1.Enabled := false;
738        Pakkeshoplevering1.Enabled := false;  
       Returpakkerfrapakkeshop1.Enabled := false;  
 // 20150317: slut  
739        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
740        begin        begin
741           Scanningtype := '1';           Scanningtype := '1';
# Line 832  begin Line 746  begin
746        end;        end;
747      end;      end;
748    
749        if SpecialVersionSted = 'DBK' then
750        begin
751          Sted := SpecialVersionSted;
752        end;
753    
754      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
755      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
756      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 851  begin Line 770  begin
770        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
771        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
772        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
773          PanelValg7.Enabled := false;
774          PanelValg7.Font.Color := clInactiveCaption;
775       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
776  // 20150317: start  
777        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
778  // 20150317: slut  
779        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
780        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
781        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
782        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
783        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
784        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
785        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
786        begin        begin
787          Scanningtype := '4';          Scanningtype := '4';
788          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
789          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
790          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
791        end        end
# Line 873  begin Line 794  begin
794          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
795          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
796          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
797          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
798          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
799          if Scanningtype = '1' then          if Scanningtype = '1' then
800          begin          begin
801            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
802            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
803            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
804          end;          end;
805          if Scanningtype = '2' then          if Scanningtype = '2' then
806          begin          begin
807            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
808            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
809            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
810          end;          end;
811          if Scanningtype = '3' then          if Scanningtype = '3' then
812          begin          begin
813            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
814            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
815            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
816          end;          end;
817          if Scanningtype = '4' then          if Scanningtype = '4' then
818          begin          begin
819            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
820            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
821            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
822          end;          end;
823          if Scanningtype = '5' then          if Scanningtype = '5' then
824          begin          begin
825            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
826            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
827            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
828          end;          end;
829          if Scanningtype = '6' then          if Scanningtype = '6' then
830          begin          begin
831            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
832            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
833            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
834          end;          end;
# Line 936  begin Line 857  begin
857          Application.Terminate;          Application.Terminate;
858      end;      end;
859    
860      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
861      begin      begin
862          TjekkerUrls();          TjekkerUrls();
863          if TjekUrls = '-' then  // så var der fejl i url - så vi stopper her          if Config.TjekUrls = '-' then  // så var der fejl i url - så vi stopper her
864          begin          begin
865             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
866             MainForm.Color := clRed;             MainForm.Color := clRed;
867             RutenummerST.Caption := '';             RutenummerST.Caption := '';
868             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
869             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
870             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
871             exit;             exit;
872          end;          end;
873      end      end
# Line 988  begin Line 909  begin
909    
910      if Pakketype = '1' then      if Pakketype = '1' then
911      begin      begin
912        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
913        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
914      end      end
915      else      else
916      begin      begin
917        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
918        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
919      end;      end;
920    
921      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
922      begin      begin
923        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
924        Testprinter1.Visible := true;        Testprinter1.Visible := true;
925        Testlyd1.Visible := true;        Testlyd1.Visible := true;
926        Testlyd2.Visible := true;        Testlyd2.Visible := true;
927      end      end
928      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
929      begin      begin
930        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
931        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1019  begin Line 940  begin
940        Testlyd2.Visible := false;        Testlyd2.Visible := false;
941      end;      end;
942    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
943    
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
944    
 // 20150317: start  
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
 // 20150317: slut  
945    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
946    
947      CheckPrintQue('Opstart');      LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
948        LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
949    
950    finally    finally
951      Free;      Free;
# Line 1057  begin Line 954  begin
954      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
955      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
956      begin      begin
957        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
958        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
959        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
960        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
961        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
962        Testprinter1.Visible := false;        Testprinter1.Visible := false;
963        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
964        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
965      end;      end;
966    
967      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1072  begin Line 969  begin
969          InitBladhus();          InitBladhus();
970        end;        end;
971    
972  // 20150310: start  
973      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
974      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
975    
976      if PanelValg6.Enabled then      IndlesManglendeScanningerAntal();
     begin  
        Scanningtype := '6';  
        IndlesManglendeScanninger();  
     end;  
   
     if PanelValg5.Enabled then  
     begin  
        Scanningtype := '5';  
        IndlesManglendeScanninger();  
     end;  
   
     if PanelValg4.Enabled then  
     begin  
        Scanningtype := '4';  
        IndlesManglendeScanninger();  
     end;  
   
     if PanelValg3.Enabled then  
     begin  
        Scanningtype := '3';  
        IndlesManglendeScanninger();  
     end;  
977    
978      if PanelValg2.Enabled then  //    if PanelValg6.Enabled then
979      begin  //    begin
980         Scanningtype := '2';  //       Scanningtype := '6';
981         IndlesManglendeScanninger();  //       IndlesManglendeScanningerAntal();
982      end;  //    end;
983    //
984      if PanelValg1.Enabled then  //    if PanelValg5.Enabled then
985      begin  //    begin
986         Scanningtype := '1';  //       Scanningtype := '5';
987         IndlesManglendeScanninger();  //       IndlesManglendeScanningerAntal();
988      end;  //    end;
989    //
990    //    if PanelValg4.Enabled then
991    //    begin
992    //       Scanningtype := '4';
993    //       IndlesManglendeScanningerAntal();
994    //    end;
995    //
996    //    if PanelValg3.Enabled then
997    //    begin
998    //       Scanningtype := '3';
999    //       IndlesManglendeScanningerAntal();
1000    //    end;
1001    //
1002    //    if PanelValg2.Enabled then
1003    //    begin
1004    //       Scanningtype := '2';
1005    //       IndlesManglendeScanningerAntal();
1006    //    end;
1007    //
1008    //    if PanelValg1.Enabled then
1009    //    begin
1010    //       Scanningtype := '1';
1011    //       IndlesManglendeScanningerAntal();
1012    //    end;
1013    
1014      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1015    
1016      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1017      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1018    
1019  end;  end;
1020    
# Line 1134  var Line 1032  var
1032    BoghandlerNavn : String;    BoghandlerNavn : String;
1033    Koreliste : String;    Koreliste : String;
1034    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1035    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1036    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1037    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1159  begin Line 1056  begin
1056      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1057      numberString := ClipboardData;      numberString := ClipboardData;
1058      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1059  // 20150311: start  
1060  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1061      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1062      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1063      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1174  begin Line 1071  begin
1071      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1072      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1073      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1074        or (NumberString = 'DAO PAKKESHOP')
1075        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1076            or (LowerCase(NumberString) = 'for stor daodirekte' )
1077      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1078  // 20150311: slut  
1079      begin      begin
1080        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1081        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1184  begin Line 1084  begin
1084      begin      begin
1085        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1086      end;      end;
1087    end;    end;  // Slut ctrl-v
1088    
1089    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1090    begin    begin
1091  // 20150306: start  
1092      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
1093        Stregkode := Trim(Stregkode);
1094    
1095        if (Length(Stregkode) = 0) then
1096      begin      begin
1097        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1098        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;  
1099        exit;        exit;
1100      end;      end;
 // 20150306: slut  
1101    
 // 20150311: start  
1102      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1103      begin      begin
1104         PakkeshopNulstil.Click();         btnNulstil.Click();
1105         exit;         exit;
1106      end;      end;
1107    
1108      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1109      begin      begin
1110         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1111  // 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  
1112         exit;         exit;
1113      end;      end;
1114    
1115      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1116      begin      begin
1117         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1118         begin         begin
1119            InitLillePakke();            InitLillePakke();
1120         end         end
1121         else         else
1122         begin         begin
1123          //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;  
1124         end;         end;
1125         Stregkode := '';         Stregkode := '';
1126         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1257  begin Line 1129  begin
1129    
1130      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1131      begin      begin
1132         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1133         begin         begin
1134            InitStorPakke();            InitStorPakke();
1135         end         end
1136         else         else
1137         begin         begin
1138          //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;  
1139         end;         end;
1140         Stregkode := '';         Stregkode := '';
1141         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1142         exit;         exit;
1143      end;      end;
1144    
1145        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1146        begin
1147          if chkForstorTilDirekte.Enabled then
1148          begin
1149            chkForstorTilDirekte.Checked := true;
1150          end
1151          else
1152          begin
1153             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1154          end;
1155          Stregkode := '';
1156          StregkodeST.Caption := StregKode;
1157          exit;
1158        end;
1159    
1160    
1161      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1162      begin      begin
1163         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1164         begin         begin
1165           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1166           begin           begin
1167            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1168           end           end
1169           else           else
1170           begin           begin
1171            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1172           end;           end;
1173         end         end
1174         else         else
1175         begin         begin
1176          //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;  
1177         end;         end;
1178         Stregkode := '';         Stregkode := '';
1179         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1316  begin Line 1182  begin
1182    
1183      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
1184      begin      begin
1185        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1186        begin        begin
1187           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1188           begin           begin
1189            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1190           end           end
1191           else           else
1192           begin           begin
1193            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1194           end;           end;
1195        end        end
1196        else        else
1197        begin        begin
1198          //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;  
1199        end;        end;
1200        Stregkode := '';        Stregkode := '';
1201        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1355  begin Line 1210  begin
1210         end         end
1211         else         else
1212         begin         begin
1213          //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;  
1214         end;         end;
1215         Stregkode := '';         Stregkode := '';
1216         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1217         exit;         exit;
1218      end;      end;
1219    
1220  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1221      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  
1222      begin      begin
1223         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1224         begin         begin
# Line 1384  begin Line 1226  begin
1226         end         end
1227         else         else
1228         begin         begin
1229          //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;  
1230         end;         end;
1231         Stregkode := '';         Stregkode := '';
1232         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1410  begin Line 1241  begin
1241         end         end
1242         else         else
1243         begin         begin
1244          //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;  
1245         end;         end;
1246         Stregkode := '';         Stregkode := '';
1247         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1436  begin Line 1256  begin
1256         end         end
1257         else         else
1258         begin         begin
1259          //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;  
1260         end;         end;
1261         Stregkode := '';         Stregkode := '';
1262         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1462  begin Line 1271  begin
1271         end         end
1272         else         else
1273         begin         begin
1274          //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;  
1275         end;         end;
1276         Stregkode := '';         Stregkode := '';
1277         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1488  begin Line 1286  begin
1286         end         end
1287         else         else
1288         begin         begin
1289          //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;  
1290         end;         end;
1291         Stregkode := '';         Stregkode := '';
1292         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1514  begin Line 1301  begin
1301         end         end
1302         else         else
1303         begin         begin
1304          //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;  
1305         end;         end;
1306         Stregkode := '';         Stregkode := '';
1307         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1308         exit;         exit;
1309      end;      end;
1310  // 20150311: slut  
1311    
1312      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1313      begin      begin
1314        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1315        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1316        try        try
1317          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1318          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1579  begin Line 1355  begin
1355        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1356      end;      end;
1357    
1358      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1359          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1360          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1361          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1362          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1363          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1364      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1365         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1366         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  
1367         exit;         exit;
1368      end;      end;
1369    
1370      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1371      begin      begin
1372        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1373        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1615  begin Line 1379  begin
1379              end;              end;
1380            end            end
1381        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1382  (*  
       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  
 *)  
1383        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1384            begin            begin
1385              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1649  begin Line 1396  begin
1396                InitPakkeshoplevering();                InitPakkeshoplevering();
1397              end;              end;
1398            end            end
1399        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
 (*  
       else if Pakketype = 'PakkeshopRetur' then  
1400            begin            begin
1401              if Scanningtype <> '6' then              if Scanningtype <> '6' then
1402              begin              begin
1403                Scanningtype := '6';               VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1404                InitReturFraPakkeshop();  
1405                 exit;
1406              end;              end;
1407            end            end
1408  *)  
1409    
1410        else        else
1411            begin   // Her skal komme en alarm og rød skærm            begin
1412               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1413               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1414               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1415               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  
1416               exit;               exit;
1417            end;            end;
1418        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1419      end      end
1420      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1421      begin      begin
1422        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1423        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  
1424        exit;        exit;
1425      end;      end;
1426    
1427      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1428      begin      begin
1429        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1430        begin        begin
1431          PlaySound(PWideChar(AlarmLyd));  
1432          List1msg := 'Pakke findes som pakketype: ' + Pakketype;          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
1433          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  
1434          exit;          exit;
1435        end;        end;
1436      end;      end;
1437    
1438  // 20150311: start      // EmballageRepareret skal bare sætte reklamationkoden,
1439  (*      // og så ellers fortsætte med scanning som normalt
1440      if StregKode = 'Nulstil' then      if (chkEmballageRepareret.Checked = True) then
1441      begin      begin
1442         PakkeshopNulstil.Click();        URLStr := Format(Config.UrlEmballageRepareret,[Sted,Stregkode]);
1443         exit;        WebSvar := IdHTTP1.Get(URLStr);
     end;  
1444    
1445      if PakkeshopNulstil.Visible then        chkEmballageRepareret.Checked := False;
     begin  
        PlaySound(PWideChar(AlarmLyd));  
        List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
        exit;  
1446      end;      end;
1447    
1448      if StregKode = 'Lille pakke' then      if (chkUdenforSpecifikation.Checked = True) then
1449      begin      begin
1450         InitLillePakke();        URLStr := Format(Config.URLUdenforSpecifikation,[Sted,Stregkode]);
1451         exit;        //InputBox( '1', '1', URLStr);
     end;  
1452    
1453      if StregKode = 'Stor pakke' then        WebSvar := IdHTTP1.Get(URLStr);
1454      begin        //InputBox( '2', '2', WebSvar );
        InitStorPakke();  
        exit;  
     end;  
1455    
1456      if StregKode = 'Indtast kundenummer' then        chkUdenforSpecifikation.Checked := False;
1457      begin        LabelPrint.PrintLabel(Stregkode);
        if (CheckBox1.State = cbChecked) then  
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     end;  
1458    
1459      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then        StregkodeST.Caption := '';
1460      begin        Stregkode := '';
1461         if (CheckBox3.State = cbChecked) then  
1462         begin        RuteNummerST.Caption := '';
1463          CheckBox3.State := cbUnchecked;        BoghandlerNavnST.Caption := '';
1464         end        KommentarST.Caption := 'Retur til leverandør';
1465         else  
1466         begin  
1467          CheckBox3.State := cbChecked;  
1468         end;  
1469         Stregkode := '';        exit;   //leave procedure
        exit;  
1470      end;      end;
 *)  
 // 20150311: slut  
1471    
1472    
1473      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then  
1474    
1475        if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1476      begin      begin
1477        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
1478        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1479        begin        begin
1480          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1481          begin          begin
1482              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1483              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1484          end;          end;
1485        end;        end;
1486      end;      end;
1487    
1488      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1489        begin        begin
1490          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1491             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1492             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1493             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1494             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1495             Stregkode := '';             Stregkode := '';
1496             InitScreen();             InitScreen();
1497        end        end
1498      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1499        begin        begin
1500          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1501             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1813  begin Line 1503  begin
1503             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1504             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1505             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1506             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1507             Stregkode := '';             Stregkode := '';
1508             InitScreen();             InitScreen();
1509        end        end
1510      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1511        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1512         begin         begin
1513            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1825  begin Line 1515  begin
1515              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1516              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1517              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1518  // 20150317: start  
1519              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1520  // 20150317: slut  
1521             end             end
1522            else            else
1523             begin             begin
1524                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;  
1525             end;             end;
1526            Stregkode := '';            Stregkode := '';
1527            InitScreen();            InitScreen();
# Line 1849  begin Line 1533  begin
1533             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1534             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1535             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1536             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1537                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1538             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1539                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1540             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1541           end           end
1542          else          else
1543           begin           begin
1544                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1545                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1546                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1547                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1548                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  
1549                StregKode := '';                StregKode := '';
1550                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1551  // 20150323: slut  
1552                exit;                exit;
1553           end;           end;
1554          Stregkode := '';          Stregkode := '';
1555          InitScreen();          InitScreen();
1556       end;       end;
1557    
1558      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1559      begin      begin
1560         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1561           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1562            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1563         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1564            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1565         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1566         try         try
# Line 1892  begin Line 1570  begin
1570            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1571            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1572            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1573               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1574               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1575              exit;              exit;
1576            end;            end;
1577            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1578            begin            begin
1579              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1580              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1916  begin Line 1590  begin
1590              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1591              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1592              begin              begin
1593                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1594                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1595                MainForm.Color := clRed;                MainForm.Color := clRed;
1596              end;              end;
1597           end;           end;
1598            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( menuNatXpress1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1599            begin            begin
1600              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1601              if Storepakker1.Checked then              if menuStorePakker.Checked then
1602              begin              begin
1603                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1604              end              end
1605              else              else
1606              begin              begin
1607                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1608              end;              end;
1609              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1610            end            end
1611            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1612            begin            begin
1613              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1614              if Storepakker1.Checked then              if menuStorePakker.Checked then
1615              begin              begin
1616                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1617              end              end
1618              else              else
1619              begin              begin
1620                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1621              end;              end;
1622              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1623            end            end
1624            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1625            begin            begin
1626              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;  
1627            end            end
1628            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1629            begin            begin
1630            end            end
1631            else            else
1632            begin            begin
1633              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1634            end;            end;
1635           if not PakkeshopNulstil.Visible then  
1636             if not btnNulstil.Visible then
1637            begin            begin
1638  // 20150310: start  
1639  //            SletStregkodelinieFraListboks2(StregKode);              If (menuDaoDirekte1.Checked) then
 // 20150310: slut  
             If (Budlevering1.Checked) then  
1640              begin              begin
1641                if Storepakker1.Checked then                if menuStorePakker.Checked then
1642                begin                begin
1643                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1644                end                end
1645                else                else
1646                begin                begin
1647                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1648                end;                end;
1649                InitLillePakke();                InitLillePakke();
1650              end;              end;
1651            end;            end;
1652  // 20150310: start  
1653            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1654  // 20150310: slut  
1655            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1656            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1657            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2015  begin Line 1682  begin
1682    
1683    Key := #0;    Key := #0;
1684    
1685  end;  
1686    
1687    
1688    
1689    
1690    end; //End of OnKeyPress
1691    
1692    
1693    
1694  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1695  const  const
# Line 2024  var Line 1698  var
1698    WebSvar : String;    WebSvar : String;
1699    URLStr : String;    URLStr : String;
1700  begin  begin
1701    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1702    begin    begin
1703      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1704      try      try
1705        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1706        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 2039  begin Line 1713  begin
1713        ShowMessage(logTekst);        ShowMessage(logTekst);
1714        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1715        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1716        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1717        Application.Terminate;        Application.Terminate;
1718      end;      end;
1719      end;      end;
# Line 2052  end; Line 1726  end;
1726    
1727  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1728  var  var
 // 20150309: start  
 //  i:integer;  
1729    i : Integer;    i : Integer;
1730    wrkAntal : String;    wrkAntal : String;
1731    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1732  // 20150309: slut  
1733    
1734  begin  begin
1735      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.Checked or menuIndlevering.Checked then
1736      begin      begin
1737        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1738          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1739          begin          begin
1740  // 20150309: start            wrkAntalSenere := 0;//initial Value
1741    
1742            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1743            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1744            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1745            begin            begin
1746              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1747              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1748  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1749  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1750  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1751              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1752            end            end
1753            else     // kun idag            else     // kun idag
1754            begin            begin
# Line 2101  begin Line 1774  begin
1774            begin            begin
1775              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1776            end;            end;
 // 20150309: slut  
1777    
 // 20150310: start  
1778            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1779            begin            begin
1780              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2181  begin Line 1852  begin
1852                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1853              end;              end;
1854            end;            end;
1855  // 20150310: slut  
1856            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1857          end;          end;
1858      end;      end;
# Line 2208  begin Line 1879  begin
1879  end;  end;
1880    
1881  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1882    
1883  begin  begin
1884    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1885    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1886    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1887    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1888    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1889    ListBox1.Visible := true;    ListBox1.Visible := true;
1890  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1891  // 20150317: start  
1892  (*    if menuDaoDirekte1.Checked then
   if TestFunktionen = '1' then  
     begin  
       Testforbindelsen1.Visible := true;  
       Testprinter1.Visible := true;  
       Testlyd1.Visible := true;  
       Testlyd2.Visible := true;  
     end  
   else if TestFunktionen = '2' then  
     begin  
       Testforbindelsen1.Enabled := false;  
       Testprinter1.Enabled := false;  
       Testlyd1.Enabled := false;  
       Testlyd2.Enabled := false;  
     end  
   else  
     begin  
       Testforbindelsen1.Visible := false;  
       Testprinter1.Visible := false;  
       Testlyd1.Visible := false;  
       Testlyd2.Visible := false;  
     end;  
   Testprinter1.Visible := false;  
   AlarmLyd := 'Sounds\Alarm.wav';  
   if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   ScannetOkLyd := 'Sounds\Ok.wav';  
   if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   ScannetOkStorLyd := 'Sounds\Ok_stor.wav';  
   if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
 *)  
 // 20150317: slut  
   if Budlevering1.Checked then  
1893    begin    begin
1894      IndlesScanningLogFil();      IndlesScanningLogFil();
1895    end;    end;
# Line 2272  begin Line 1901  begin
1901      01 :      01 :
1902            begin;      // NS            begin;      // NS
1903              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1904              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1905              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1906              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1907              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1908              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
1909              BladhusKontrolfil_lokal := 'RuteKontrol.txt';              BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1910              DownloadBladhusKontrolfil();              DownloadBladhusKontrolfil();
1911              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1912            end;            end;
1913      02 :      02 :
1914            begin;    // BK            begin;    // BK
1915              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1916              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1917              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1918              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1919              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1920              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1921              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1922              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1923              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1924              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1925            end;            end;
1926      03 :      03 :
1927            begin;          // FD            begin;          // FD
1928              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1929             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1930              begin              begin
1931                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1932              end              end
1933              else              else
1934              begin              begin
1935                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1936              end;              end;
1937              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1938              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1939              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1940              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1941              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2318  begin Line 1947  begin
1947              BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';              BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
1948              BladhusKontrolfil_lokal := 'RuteKontrol.txt';              BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1949              DownloadBladhusKontrolfil();              DownloadBladhusKontrolfil();
1950              IndlesManglendeScanninger();              IndlesManglendeScanningerAntal();
1951            end;            end;
1952      04 :  begin;           // DBK      04 :  begin;           // DBK
1953              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1954              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1955              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1956              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1957              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1958              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1959              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1960              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1961              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1962            end;            end;
# Line 2343  var Line 1972  var
1972    URLStr : String;    URLStr : String;
1973    pakkestorrelse : String;    pakkestorrelse : String;
1974    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1975    
1976      PakkeshopLabel: TLabelData;
1977  begin  begin
1978    if RadioButton1.Checked then    if radioStorPakke.Checked then
1979    begin    begin
1980      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
1981    end;    end;
1982    if RadioButton2.Checked then    if radioLillePakke.Checked then
1983    begin    begin
1984      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1985    end;    end;
1986    if Pakkernormal1.Checked then  
1987    
1988      if menuNatXpress1.Checked then
1989    begin    begin
1990       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1991       begin       begin
1992         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1993       end;       end;
1994       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1995      end
1996      else if menuNatxpressReturDAO1.Checked then
1997      begin
1998         URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1999    end    end
2000    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2001    begin    begin
2002       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2003    end    end
2004    else if Returpakkerfraboghandler1.Checked then    else if menuDaoDirekte1.Checked then
2005    begin    begin
2006       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2007    end    end
2008    else if Budlevering1.Checked then    else if menuPakkeshop1.Checked then
2009    begin    begin
2010       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2011    end    end
2012    else if Pakkeshoplevering1.Checked then    else if menuPakkeshopRetur1.Checked then
2013    begin    begin
2014       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
2015    end    end
2016    else if Returpakkerfrapakkeshop1.Checked then    else if menuIndlevering.Checked then
2017    begin    begin
2018       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);      URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
2019    end    end
2020    else    else
2021    begin    begin
2022      exit;      exit;
2023    end;    end;
2024    
2025      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2026      begin
2027        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2028      end;
2029    
2030    try    try
2031      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2032      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2405  begin Line 2048  begin
2048          end;          end;
2049      end;      end;
2050    end;    end;
2051    
2052    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2053    try    try
2054      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2055       begin       begin
2056        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2057        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2058        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2059        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2060        PrintNyLabel := False;        PrintNyLabel := False;
2061  // 20150310: start  
2062        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2063        begin        begin
 // 20150310: slut  
2064          try          try
2065            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2066          except on e:exception do          except on e:exception do
# Line 2427  begin Line 2070  begin
2070          begin          begin
2071            PrintNyLabel := True;            PrintNyLabel := True;
2072          end;          end;
 // 20150310: start  
2073        end;        end;
 // 20150310: slut  
2074       end       end
2075        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2076        begin
2077    
2078    
2079    
2080    
2081         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2082         if (Kommentar = 'Ok') then
2083         begin
2084           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2085           PakkeshopLabel := TLabelData.Create( XMLDocument1 ); //Opret struct og parse xml doc
2086           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2087           Stregkode := PakkeshopLabel.Stregkode;
2088    
2089           LabelPrint.PrintLabel(PakkeshopLabel.Stregkode);
2090    
2091    //       LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2092    //       chkForstorTilDirekte.Checked := false;
2093    
2094         end;
2095    
2096    
2097        end
2098      else      else
2099       begin       begin
2100        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2438  begin Line 2102  begin
2102        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2103        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2104        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2105        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2106          begin          begin
2107          try          try
2108            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2463  begin Line 2127  begin
2127          PrintNyLabel := True;          PrintNyLabel := True;
2128        end;        end;
2129      end;      end;
2130    
2131    
2132      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2133      begin      begin
2134        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2135        begin        begin
2136            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2137            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2138        end;        end;
2139      end      end
2140      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2141      begin      begin
2142         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2143         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;  
2144      end;      end;
2145    except on e:exception do    except on e:exception do
2146      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2500  begin Line 2159  begin
2159    //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
2160    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2161    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2162    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2163      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2164    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2165    if RadioButton1.Checked then    if radioStorPakke.Checked then
2166    begin    begin
2167      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2168    end;    end;
2169    if RadioButton2.Checked then    if radioLillePakke.Checked then
2170    begin    begin
2171      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2172    end;    end;
2173    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2174    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2175    begin    begin
2176      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2177    end;    end;
2178    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2179    begin    begin
2180      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2181    end;    end;
2182    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2183       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2184    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2185    begin    begin
2186      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2187    end;    end;
2188    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2189    begin    begin
2190       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2191        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2192        begin        begin
2193          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2194        end;        end;
2195        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2196        begin        begin
2197          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2198        end;        end;
2199    end;    end;
2200    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2201    begin    begin
2202      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2203    end;    end;
2204    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2205    begin    begin
2206      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2207      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2555  begin Line 2214  begin
2214        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2215      end;      end;
2216    end;    end;
2217      if menuIndlevering.Checked then
2218      begin
2219        List1Msg := Stregkode;
2220      end;
2221    
2222    
2223    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2224    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2225    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2226  end;  end;
2227    
2228  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2229  begin  begin
2230    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2231    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2576  pakkeForkertSted : Integer; Line 2241  pakkeForkertSted : Integer;
2241    kontrolKoreliste : string;    kontrolKoreliste : string;
2242    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2243  begin  begin
2244    if Budlevering1.Checked then  //  if (PrintNyLabel = True OR chkAltidPrintLabel.Checked = True) then
2245       RuteNummerST.Color := HexToTColor(Farve);  //  begin
2246    //    LabelPrint.PrintLabel( Stregkode );
2247    //  end;
2248    //
2249    //  exit;
2250    
2251      if menuDaoDirekte1.Checked then
2252         RuteNummerST.Color := TUtils.HexToTColor(Farve);
2253    
2254    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2255    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2590  begin Line 2262  begin
2262    end;    end;
2263    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2264    
2265  // 20150306: start  
2266  //  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
2267    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  
2268    begin    begin
2269        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2270        begin        begin
# Line 2615  begin Line 2286  begin
2286        end;        end;
2287    end    end
2288    else    else
2289    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2290    begin    begin
2291       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2292       begin       begin
2293          PrintNyLabel := false;          PrintNyLabel := false;
2294  // 20150306: start  
2295  //        PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
         PlaySound(PWideChar(AlarmLyd));  
2296          MainForm.Color := clRed;          MainForm.Color := clRed;
2297          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2298  // 20150306: slut  
2299       end       end
2300       else       else
2301       begin       begin
# Line 2635  begin Line 2305  begin
2305            PrintNyLabel := true;            PrintNyLabel := true;
2306            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2307            nyFarve := Farve;            nyFarve := Farve;
2308            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2309            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2310            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2311            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2312            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2313            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2314  // 20150213: start  
2315            if (PrinterNavn = 'Ingen') then  //          if (Config.PrinterNavn = 'Ingen') then
2316            begin  //          begin
2317               PrintNyLabel := false;  //             PrintNyLabel := false;
2318            end;  //          end;
2319  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2320            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
2321            begin            begin
2322              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2323              MainForm.Color := clRed;              MainForm.Color := clRed;
2324              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2325            end;            end;
2326  // 20150306: slut  
2327         end;         end;
2328         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2329         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2674  begin Line 2342  begin
2342            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2343            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2344            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2345  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2346            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
2347            begin            begin
2348              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2349              MainForm.Color := clRed;              MainForm.Color := clRed;
2350              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2351            end;            end;
2352  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2353         end;         end;
2354       end;       end;
2355    
2356    end;    end;
2357    
2358    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2359    begin    begin
2360      case BladhusSted of      case BladhusSted of
2361        00 :  begin;        00 :  begin;
# Line 2704  begin Line 2367  begin
2367               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2368  // 20150304: slut  // 20150304: slut
2369                begin                begin
2370                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2371                    LabelPrint.PrintLabel( Stregkode );
2372                end;                end;
2373              end;              end;
2374        01 :  begin;        01 :  begin;
2375               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2376                    // 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
2377                    // 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')
2378                begin                begin
2379                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2380                    LabelPrint.PrintLabel( Stregkode );
2381                end;                end;
2382              end;              end;
2383        02 :  begin;        02 :  begin;
2384                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
2385                begin                begin
2386                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2387                    LabelPrint.PrintLabel( Stregkode );
2388                end;                end;
2389              end;              end;
2390        03 :  begin;        03 :  begin;
2391               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2392                    // 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
2393                    // 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')
2394               begin               begin
2395                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2396                    LabelPrint.PrintLabel( Stregkode );
2397               end;               end;
2398              end;              end;
2399        04 :  begin;        04 :  begin;
2400                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
2401                begin                begin
2402                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  //LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2403                    LabelPrint.PrintLabel( Stregkode );
2404                end;                end;
2405              end;              end;
2406        else        else
# Line 2741  begin Line 2409  begin
2409    end;    end;
2410    
2411  // 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
2412    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
2413    begin    begin
2414      exit;      exit;
2415    end;    end;
2416    
2417    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
2418    begin    begin
2419    end    end
2420    else    else
2421    begin    begin
2422      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
2423      begin      begin
2424        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2425        if (CheckBox2.Checked) then        if (chkAltidPrintLabel.Checked) then
2426        begin        begin
2427          logTekst := logTekst + 'Alle ';          logTekst := logTekst + 'Alle ';
2428        end        end
# Line 2768  begin Line 2436  begin
2436        end;        end;
2437        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2438        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2439        with Printer do  
2440        begin        //LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2441          BeginDoc;        LabelPrint.PrintLabel( Stregkode );
2442          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;  
2443      end;      end;
2444    end;    end;
2445    
2446  end;  end;
2447    
 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;  
2448    
2449    
2450  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2451  begin  begin
2452      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2453      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2454  end;  end;
2455    
2456  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2457  begin  begin
2458      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2459      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2460  end;  end;
2461    
2462    
2463  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2464  begin  begin
2465    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2466    begin    begin
2467       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2468    end    end
# Line 2864  begin Line 2473  begin
2473  end;  end;
2474    
2475    
2476  procedure TMainForm.CheckBox2Click(Sender: TObject);  procedure TMainForm.chkUdenforSpecifikationClick(Sender: TObject);
2477    begin
2478      if (chkUdenforSpecifikation.Checked = true) then
2479      begin
2480        chkEmballageRepareret.Checked := false;
2481      end;
2482    end;
2483    
2484    procedure TMainForm.chkEmballageRepareretClick(Sender: TObject);
2485    begin
2486      if (chkEmballageRepareret.Checked = true) then
2487      begin
2488        chkUdenforSpecifikation.Checked := false;
2489      end;
2490    end;
2491    
2492    procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2493  begin  begin
2494    if CheckBox2.Checked then    if chkAltidPrintLabel.Checked then
2495    begin    begin
2496       Altidprintepakkelabel1.Checked := true;       Altidprintepakkelabel1.Checked := true;
2497    end    end
# Line 2877  begin Line 2502  begin
2502    
2503  end;  end;
2504    
2505  procedure TMainForm.CheckBox3Click(Sender: TObject);  
2506    
2507    procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2508  begin  begin
2509    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2510    begin    begin
2511       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2512    end    end
# Line 2889  begin Line 2516  begin
2516    end;    end;
2517  end;  end;
2518    
2519  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2520  begin  begin
2521        Scanningtype := '5';        Scanningtype := '5';
2522        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2898  end; Line 2525  end;
2525    
2526  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2527  begin  begin
2528      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2529      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2530      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2531  // 20150317: start  
2532      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2533      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2534      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2535      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2536      begin      begin
2537        // 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)
2538        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2539        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2540        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2541      end;      end;
2542  // 20150317: slut  // 20150317: slut
2543  end;  end;
# Line 2925  begin Line 2552  begin
2552    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2553    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...');
2554    
2555          // Tjekker urls    try
2556          logTekst := 'Tjekker urls.';      // Tjekker urls
2557          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2558          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2559        SkrivScanningLogFil(logTekst);
2560    
         // 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;  
2561    
         // 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;  
2562    
2563          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2564          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2565          begin      begin
2566            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2567            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;  
2568    
2569          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2570          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2571          begin      begin
2572            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2573            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;  
2574    
2575          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2576          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2577          begin      begin
2578            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2579            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;  
2580    
2581          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2582          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2583          begin      begin
2584            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2585            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;  
2586    
2587          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2588          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2589          or (PanelValg4.Enabled = true) then      begin
2590          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2591            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;  
2592    
2593          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2594          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2595          begin      begin
2596            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2597            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;  
2598    
2599          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2600          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2601          begin      begin
2602            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2603            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;  
2604    
2605          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2606          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2607          begin      begin
2608            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2609            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;  
2610    
2611  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2612          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2613          if PanelValg5.Enabled = true then      begin
2614          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2615            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  
2616    
2617          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2618          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2619          begin      begin
2620            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2621            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2622          end      end;
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2623    
2624          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforsel
2625          if CheckUrl(UrlSendPrograminfo) then      if PanelValg1.Enabled = true then
2626          begin      begin
2627            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2628            SkrivScanningLogFil(logTekst);      end;
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2629    
         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;  
2630    
2631        // Tjekker UrlEKLoverforselPakkeshop
2632        if PanelValg5.Enabled = true then
2633        begin
2634          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2635        end;
2636    
2637    
2638        // Tjekker UrlFindPakketype
2639        TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2640    
2641        // Tjekker UrlSendPrograminfo
2642        TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2643    
2644    
2645    
2646        logTekst := 'urls er ok';
2647        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2648        SkrivScanningLogFil(logTekst);
2649    
2650      Except
2651        Config.TjekUrls := '-';   // markerer at der var fejl
2652    
2653      end;
2654  end;  end;
2655    
2656  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2657  var  const
2658     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2659  begin  begin
2660     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2661     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2662     Result := SystemTimeToDateTime(SystemTime) ;    begin
2663        logTekst := UrlNavn + ' accepteret: ' + Url;
2664        SkrivScanningLogFil(logTekst);
2665      end
2666      else
2667      begin
2668        inc(urlFejl);   // Optæller antal fejl
2669        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2670        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2671        if Config.TjekUrls = '1' then
2672        begin
2673          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2674        end;
2675    
2676        SkrivScanningLogFil(logTekst);
2677    
2678        if Config.TjekUrls = '1' then
2679        begin
2680          ShowMessage(logTekst);
2681          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2682          Application.Terminate;
2683    
2684          raise Exception.Create('UrlFejl');
2685    
2686        end;
2687      end;
2688    
2689  end;  end;
2690    
2691    
2692    
2693  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2694  var  var
2695    SR: TSearchRec;    SR: TSearchRec;
# Line 3331  begin Line 2706  begin
2706      repeat      repeat
2707        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2708        begin        begin
2709    
2710          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2711          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2712          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2713          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2714          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2715          // (æ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 2746  begin
2746    end;    end;
2747  end;  end;
2748    
2749  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2750  begin  begin
2751    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2752    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2753    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2754    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2755    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2756    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3383  begin Line 2759  begin
2759    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2760    begin    begin
2761       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2762       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
2763       Application.Terminate;       Application.Terminate;
2764       exit;       exit;
2765    end;    end;
# Line 3392  begin Line 2768  begin
2768  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2769    if Farve <> '' then    if Farve <> '' then
2770    begin    begin
2771       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  
2772    end;    end;
2773    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2774    begin    begin
2775       InitLillePakke();       InitLillePakke();
2776    end;    end;
# Line 3412  begin Line 2778  begin
2778    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
2779  end;  end;
2780    
2781    
2782  procedure TMainForm.PanelValg1Click(Sender: TObject);  procedure TMainForm.PanelValg1Click(Sender: TObject);
2783  begin  begin
2784        Scanningtype := '1';        Scanningtype := '1';
# Line 3454  begin Line 2821  begin
2821        NulstilAutomatiskValg();        NulstilAutomatiskValg();
2822  end;  end;
2823    
2824    
2825    procedure TMainForm.PanelValg7Click(Sender: TObject);
2826    begin
2827          Scanningtype := '7';
2828          InitIndleveringskode();
2829          NulstilAutomatiskValg();
2830    
2831    end;
2832    
2833  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2834  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;  
 *)  
2835  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2836  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2837       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2838       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2839       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2840  // 20150311: slut  
2841    
2842    
2843  end;  end;
2844    
2845  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2846  begin  begin
2847        Scanningtype := '1';        Scanningtype := '1';
2848        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3493  var Line 2856  var
2856    BoghandlerNavn : String;    BoghandlerNavn : String;
2857    Koreliste : String;    Koreliste : String;
2858    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2859    SmsKode : String;    SmsKode : String;
2860    DBKbane : String;    DBKbane : String;
2861    Leveringssted : String;    Leveringssted : String;
2862    orgTjekUrls : String;    orgTjekUrls : String;
2863  begin  begin
2864    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2865    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2866    begin    begin
2867      TjekkerUrls();      TjekkerUrls();
2868    end;    end;
2869    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2870    begin    begin
2871      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2872      RuteNummer := '';      RuteNummer := '';
# Line 3513  begin Line 2875  begin
2875      Koreliste := '';      Koreliste := '';
2876      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2877      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2878      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2879      MainForm.Color := clRed;      MainForm.Color := clRed;
2880      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2881    end    end
2882    else    else
2883    begin    begin
2884      Falsk := False;      Falsk := False;
2885      Sand := True;  
2886      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2887      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2888      SmsKode := '999999';      SmsKode := '999999';
2889      DBKbane := '999';      DBKbane := '999';
2890      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2891    
2892    
2893      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2894      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2895    end;    end;
2896    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2897    
2898  end;  end;
2899    
# Line 3539  var Line 2903  var
2903    Kommentar : String;    Kommentar : String;
2904    BoghandlerNavn : String;    BoghandlerNavn : String;
2905    Koreliste : String;    Koreliste : String;
2906    Falsk : Boolean;  //  Falsk : Boolean;
2907    Sand : Boolean;  //  SmsKode : String;
2908    SmsKode : String;  //  DBKbane : String;
2909    DBKbane : String;  //  Leveringssted : String;
   Leveringssted : String;  
2910  begin  begin
2911    RuteNummer := 'Rutenr';    RuteNummer := 'Rutenr';
2912    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2913    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2914    Falsk := False;  //  Falsk := False;
2915    Sand := True;  
2916    
2917    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2918    begin    begin
2919      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2920    end    end
2921    else if PrinterNavn = 'Ingen' then  //  else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2922    begin  //  begin
2923      ShowMessage('Der er fravalgt printer i dette program.');  //    ShowMessage('Der er fravalgt printer i dette program.');
2924    end  //  end
2925    else    else
2926    begin    begin
2927      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2928      SmsKode := '999999';  //    SmsKode := '999999';
2929      DBKbane := '999';  //    DBKbane := '999';
2930      Leveringssted := 'XXX';  //    Leveringssted := 'XXX';
2931      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);  //    PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2932      CheckPrintQue('Test');  
2933        LabelPrint.PrintTestLabel();
2934    
2935        LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2936    
2937    end;    end;
2938    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2939  end;  end;
2940    
2941  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2942  begin  begin
2943    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2944    begin    begin
2945      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2946    end    end
2947    else    else
2948    begin    begin
# Line 3584  begin Line 2951  begin
2951    end;    end;
2952  end;  end;
2953    
2954  {  
  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;  
2955    
2956  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2957  const  const
# Line 3622  var Line 2960  var
2960   tekst, filversion : String;   tekst, filversion : String;
2961  begin  begin
2962    
2963    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2964    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';
2965    
2966    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3644  begin Line 2982  begin
2982          end          end
2983          else          else
2984          begin          begin
2985            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2986          end;          end;
2987      end      end
2988      else      else
2989      begin      begin
2990        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2991      end;      end;
2992    end;    end;
2993    
# Line 3658  begin Line 2996  begin
2996      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2997      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
2998      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2999      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
3000    end;    end;
3001    
3002    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3003    
3004  end;  end;
3005    
3006    
3007  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3008    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3009  var  var
# Line 3717  begin Line 3056  begin
3056    
3057    if FileExists(fileName) then    if FileExists(fileName) then
3058    begin    begin
3059      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3060      begin      begin
3061        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3062        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3741  begin Line 3080  begin
3080    
3081    if FileExists(fileName) then    if FileExists(fileName) then
3082    begin    begin
3083      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3084      begin      begin
3085        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3086        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3087      end      end
3088      else      else
3089      begin      begin
3090        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3091      end;      end;
3092    end    end
3093    else    else
# Line 3757  begin Line 3096  begin
3096    end;    end;
3097  end;  end;
3098    
3099    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3100    begin
3101      Scanningtype := '7';
3102      NulstilAutomatiskValg();
3103      InitIndleveringskode();
3104    end;
3105    
3106  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3107  begin  begin
3108    
3109    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3110    begin    begin
3111       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3112    end    end
3113    else    else
3114    begin    begin
3115       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3116    end;    end;
3117    
3118    
3119  end;  end;
3120    
3121  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3122  begin  begin
3123        Scanningtype := '2';        Scanningtype := '2';
3124        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3125        InitReturFraDao();        InitReturFraDao();
3126  end;  end;
3127    
3128  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3129  begin  begin
3130        Scanningtype := '6';        Scanningtype := '6';
3131        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3788  end; Line 3134  end;
3134    
3135  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3136  begin  begin
3137        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3138        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3139        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3140        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3141        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3142        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3143        CheckBox1.Enabled := true;  
3144        CheckBox2.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3145        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3146        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3147        CheckBox2.Checked := false;        chkAltidPrintLabel.Checked := false;
3148        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3149        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3150        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3151        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3152        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3153        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3154        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3155        ListBox1.Visible := true;        ListBox1.Visible := true;
3156        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3157        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3158        InitLillePakke();        InitLillePakke();
3159        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3160    
3161          chkForstorTilDirekte.Checked := false;
3162          chkForstorTilDirekte.Enabled := false;
3163    
3164        if BladhusSted = 0 then        if BladhusSted = 0 then
3165        begin        begin
3166          IndlesScanningLogFil();          IndlesScanningLogFil();
3167          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3168        end;        end;
3169  end;  end;
3170    
3171  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3172  begin  begin
3173        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3174        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3175        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3176        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3177        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3178        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3179        CheckBox1.Enabled := false;  
3180        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3181        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3182        CheckBox2.Checked := false;  
3183        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3184        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3185        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3186        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3187        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3188        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3189        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3190        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3191        ListBox1.Visible := true;        ListBox1.Visible := true;
3192        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3193        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3194        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3195    
3196          chkForstorTilDirekte.Checked := false;
3197          chkForstorTilDirekte.Enabled := false;
3198    
3199        InitLillePakke();        InitLillePakke();
3200  end;  end;
3201    
3202  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3203  begin  begin
3204        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3205        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3206        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3207        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3208        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3209        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3210        CheckBox1.Enabled := false;  
3211        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3212        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
       CheckBox2.Checked := false;  
3213        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3214        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3215        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3216        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3217        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3218        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3219        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3220        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3221        ListBox1.Visible := true;        ListBox1.Visible := true;
3222        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3223        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3224        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3225    
3226          chkForstorTilDirekte.Checked := false;
3227          chkForstorTilDirekte.Enabled := false;
3228    
3229        InitLillePakke();        InitLillePakke();
3230  end;  end;
3231    
3232  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3233  begin  begin
3234        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3235        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3236        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3237        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3238        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3239        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3240        CheckBox1.Enabled := false;  
3241        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3242        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3243        CheckBox2.Checked := false;  
3244        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3245        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3246        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3247        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3248        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3249        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3250        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3251        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3252        ListBox1.Visible := true;        ListBox1.Visible := true;
3253        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3254        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3255        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3256        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3257        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3258        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3259        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3260    
3261          chkForstorTilDirekte.Checked := false;
3262          chkForstorTilDirekte.Enabled := true;
3263    
3264        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3265        begin        begin
3266            IndlesScanningLogFil();            IndlesScanningLogFil();
3267            IndlesManglendeScanninger();            IndlesManglendeScanningerAntal();
3268        end;        end;
3269    
3270  end;  end;
3271    
3272  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3273  begin  begin
3274        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3275        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3276        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3277        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3278        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3279        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3280        CheckBox1.Enabled := false;  
3281        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3282        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3283        CheckBox2.Checked := false;  
3284        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3285        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3286        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3287        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3288        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3289        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3290        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3291        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3292        ListBox1.Visible := true;        ListBox1.Visible := true;
3293        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3294        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3295        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3296  // 20150330: start  
3297  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3298        EKLoverforsel.Enabled := true;  
3299  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3300          chkForstorTilDirekte.Enabled := true;
3301    
3302        InitLillePakke();        InitLillePakke();
3303        IndlesScanningLogFil();        IndlesScanningLogFil();
3304        if BladhusSted = 0 then        if BladhusSted = 0 then
3305        begin        begin
3306          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3307        end;        end;
3308        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3309        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
# Line 3948  end; Line 3311  end;
3311    
3312  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3313  begin  begin
3314        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3315        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3316        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3317        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3318        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3319        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3320        CheckBox1.Enabled := false;  
3321        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3322        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3323        CheckBox2.Checked := false;  
3324        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3325        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3326        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3327        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3328        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3329        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3330        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3331        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3332        ListBox1.Visible := true;        ListBox1.Visible := true;
3333        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3334        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3335        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3336        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3337    
3338          chkForstorTilDirekte.Checked := false;
3339          chkForstorTilDirekte.Enabled := false;
3340    
3341    
3342        InitLillePakke();        InitLillePakke();
3343        IndlesScanningLogFil();        IndlesScanningLogFil();
3344        if BladhusSted = 0 then        if BladhusSted = 0 then
3345        begin        begin
3346          IndlesManglendeScanninger();          IndlesManglendeScanningerAntal();
3347        end;        end;
3348        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3349        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3350  end;  end;
3351    
3352  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3353  begin  begin
3354        Scanningtype := '3';        Scanningtype := '3';
3355        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3356        InitReturFraKunde();        InitReturFraKunde();
3357  end;  end;
3358    
3359  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.InitIndleveringskode();
3360    begin
3361          menuIndlevering.Checked := true;
3362          menuAutomatiskTjekkodeStyring.Enabled := false;
3363    
3364          btnNulstil.Visible := false;
3365          InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3366          PanelValg7.Color := clGreen;
3367          PanelValg7.Font.Color := clWhite;
3368    
3369          chkAltidPrintLabel.Enabled := false;
3370          Altidprintepakkelabel1.Enabled := false;
3371    
3372          Altidprintepakkelabel1.Checked := false;
3373          Sprgefterboghandlernummer1.Checked := false;
3374          Sprgefterboghandlernummer1.Enabled := false;
3375          chkSporgEfterKunde.Checked := false;
3376    
3377    
3378    
3379          menuSmaaPakker.Enabled := false;
3380          menuStorePakker.Enabled := false;
3381          radioStorPakke.Enabled := false;
3382          radioLillePakke.Enabled := false;
3383          ListBox1.Visible := true;
3384          ListBox1.Items.Clear();
3385    
3386          BtnDownloadKontrolfil.Enabled := false;
3387          BtnOpdaterListen.Enabled := true;
3388          BtnEKLoverforsel.Enabled := false;
3389    
3390          chkForstorTilDirekte.Checked := false;
3391          chkForstorTilDirekte.Enabled := false;
3392    
3393    
3394          InitLillePakke();
3395          IndlesScanningLogFil();
3396          if BladhusSted = 0 then
3397          begin
3398            IndlesManglendeScanningerAntal();
3399          end;
3400          IdFTP1.Passive := true;
3401          IdFTP1.PassiveUseControlHost := true;
3402    end;
3403    
3404    
3405    procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3406  begin  begin
3407    InitStorPakke();    InitStorPakke();
3408  end;  end;
3409    
3410  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3411  begin  begin
3412    InitLillePakke();    InitLillePakke();
3413  end;  end;
3414    
3415  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3416  begin  begin
3417    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3418    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
 // 20150310: start  
3419  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3420  end;  end;
3421    
3422  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3423  begin  begin
3424    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3425    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3426  // 20150310: start  // 20150310: start
3427  //  Stregkode := '';  //  Stregkode := '';
3428  // 20150310: slut  // 20150310: slut
3429  end;  end;
3430    
 /// <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]]);  
3431    
     // 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;  
3432    
3433  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3434  begin  begin
# Line 4094  end; Line 3441  end;
3441    
3442  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3443  begin  begin
3444     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3445     begin     begin
3446       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3447     end     end
3448     else     else
3449     begin     begin
# Line 4106  end; Line 3453  end;
3453    
3454  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3455  begin  begin
 // 20150317: start  
3456    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3457    begin    begin
3458       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3459       begin       begin
3460         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3461       end       end
3462       else       else
3463       begin       begin
# Line 4119  begin Line 3465  begin
3465       end;       end;
3466       exit;       exit;
3467    end;    end;
 // 20150317: slut  
3468    
3469    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3470       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3471       begin       begin
3472         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3473       end       end
3474       else       else
3475       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3476         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3477       end;       end;
3478    if Storepakker1.Checked then    if menuStorePakker.Checked then
3479       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3480       begin       begin
3481         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3482       end       end
3483       else       else
3484       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3485         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3486       end;       end;
3487  end;  end;
3488    
3489    
3490  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3491  begin  begin
3492        Scanningtype := '4';        Scanningtype := '4';
3493        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 4160  begin; Line 3499  begin;
3499    CheckCode();    CheckCode();
3500  end;  end;
3501    
3502  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3503  var  var
3504    WebSvar : String;    WebSvar : String;
3505    URLStr : String;    URLStr : String;
# Line 4170  var Line 3509  var
3509    status, kommentar : String;    status, kommentar : String;
3510    
3511  begin  begin
3512      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3513    
3514      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');
3515      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3516      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3517      StedKode := Sted;      StedKode := Sted;
3518      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3519  // 20150330: start  
3520      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3521      begin      begin
3522        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3523      end;      end;
3524  // 20150330: slut  
3525    
3526      try      try
3527      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4233  begin Line 3572  begin
3572        end;        end;
3573      end;      end;
3574    
3575      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3576    
3577      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
3578    
3579      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3580      if status = 'Fejl' then      if status = 'Fejl' then
3581      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3582         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3583         MainForm.Color := clRed;         MainForm.Color := clRed;
3584         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3585         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 4250  begin Line 3589  begin
3589           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3590         end;         end;
3591         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3592         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3593      end;      end;
3594    
3595  end;  end;
# Line 4274  begin Line 3613  begin
3613    else    else
3614      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3615  }  }
3616    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3617    
3618    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3619    CheckCode();    CheckCode();
# Line 4282  end; Line 3621  end;
3621    
3622  end;  end;
3623    
 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;  
3624    
3625  //  //
3626  // Bladhus ***  // Bladhus ***
# Line 4798  begin Line 4098  begin
4098    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
4099  end;  end;
4100    
4101  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4102  begin  begin
4103      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4104      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
4105  end;  end;
4106    
4107  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4108  const  const
4109    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4110    
4111  begin  begin
4112      IndlesManglendeScanninger();      IndlesManglendeScanningerListe();
4113      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
4114  end;  end;
4115    
4116  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4117  begin  begin
4118      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4119      begin      begin
# Line 4822  begin Line 4122  begin
4122      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
4123  end;  end;
4124    
4125  function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
4126    procedure TMainForm.IndlesManglendeScanningerAntal();
4127  var  var
4128    S2: string;    Node: IXMLNode;
4129    
4130      URLStr : String;
4131      StedKode : String;
4132      WebSvar : String;
4133    
4134      i : Integer;
4135    
4136      PakkeType : String;
4137      TotalAntal : String;
4138      AntalProdDato : String;
4139    
4140      CurrentPanel : TPanel;
4141    
4142  begin  begin
4143    Result  := 0;    ListBox2.Clear();
4144    S2 := S + Border;  
4145    repeat    if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4146      SetLength(A, Length(A) + 1);      begin
4147      a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);        StedKode := BladhusStedKode[BladhusSted];
4148      Delete(S2, 1,Length(a[Result] + Border));      end
4149      Inc(Result);    else
4150    until S2 = '';      begin
4151          StedKode := Sted;
4152        end;
4153    
4154      URLStr := Format(Config.UrlHentPakkeAntal, [StedKode]);
4155    
4156    
4157      try
4158        WebSvar := IdHTTP1.Get(URLStr);
4159        except
4160          on e:EIdConnClosedGracefully do
4161          begin
4162            // Her skal vi ikke gøre noget - men vi skal forespørge igen
4163            WebSvar := IdHTTP1.Get(URLStr);
4164          end;
4165          on e:exception do
4166          begin
4167            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4168            logTekst := 'Fejl i web forespørgsel: '+e.Message;
4169            SkrivScanningLogFil(logTekst);
4170            raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4171          end;
4172        end;
4173    
4174    
4175    
4176         try
4177    
4178          XMLDocument1.LoadFromXML(WebSvar);
4179    
4180          for i:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4181              Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4182    
4183              PakkeType := Node.ChildValues['PakkeType'];
4184              TotalAntal := Node.ChildValues['TotalAntal'];
4185              AntalProdDato := Node.ChildValues['AntalProdDato'];
4186    
4187    
4188              CurrentPanel := nil;
4189    
4190              if (PakkeType = 'natxpress') then
4191              begin
4192                 CurrentPanel := PanelManglendePakker1;
4193              end;
4194    
4195              if (PakkeType = 'daodirekte') then
4196              begin
4197                 CurrentPanel := PanelManglendePakker4;
4198              end;
4199    
4200              if (PakkeType = 'pakkeshop') then
4201              begin
4202                 CurrentPanel := PanelManglendePakker5;
4203              end;
4204    
4205              if (CurrentPanel <> nil) then
4206              begin
4207                CurrentPanel.Caption := TotalAntal;
4208                if ( StrToInt(TotalAntal) > 0) then
4209                begin
4210                  CurrentPanel.Visible := true;
4211                end
4212                else
4213                begin
4214                  CurrentPanel.Visible := false;
4215                end;
4216              end;
4217    
4218    
4219          end;
4220    
4221    
4222     except on e:exception do
4223          begin
4224            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4225            logTekst := 'Fejl i XML-format: '+e.Message;
4226            SkrivScanningLogFil(logTekst);
4227            raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4228          end;
4229        end;
4230    
4231    
4232    
4233      ListBox1.Items.Insert(0,'Pakkeantal indlæst - klar til scanning');
4234    
4235  end;  end;
4236    
4237  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanningerListe();
4238  var  var
4239    WebSvar : String;    WebSvar : String;
4240    URLStr : String;    URLStr : String;
# Line 4845  var Line 4243  var
4243    I: Integer;    I: Integer;
4244    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4245    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4246    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4247    pakketyper : TStrings;    //pakketyper : TStrings;
4248      pakketyper : TDictionary<String, Integer>;
4249      tmpAntal : Integer;
4250    
4251     time, timeSamlet : TTimingHelper;
4252    
4253    
4254    antlin : Integer;    antlin : Integer;
4255  // 20150306: start  
4256    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4257  // 20150306: slut  
4258    XmlFelter : TStrings;    //XmlFelter : TStrings;
4259      XmlFelter : TDictionary<String, Integer>;
4260    
4261   begin   begin
4262      XmlFelter := TStringList.Create;  
4263      pakketyper := TStringList.Create;  
4264        XmlFelter := TDictionary<String, Integer>.Create;
4265        pakketyper := TDictionary<String, Integer>.Create;
4266    
4267      linienr := 0;      linienr := 0;
4268      ListBox2.Clear;      ListBox2.Clear;
4269      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 4278  var
4278          StedKode := Sted;          StedKode := Sted;
4279        end;        end;
4280    
4281  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4282  (*  
4283      if Returpakkerfrapakkeshop1.Checked then  
4284       begin  
4285        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);      if (Scanningtype = '7') then
      end  
     else if Pakkeshoplevering1.Checked then  
      begin  
       URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);  
      end  
     else if Pakkernormal1.Checked then  
4286       begin       begin
4287        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4288       end       end
4289      else      else if (Scanningtype = '6') then
      begin  
       URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer  
      end;  
 *)  
     if (Scanningtype = '6') then  
4290       begin       begin
4291        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4292       end       end
4293      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4294       begin       begin
4295        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4296       end       end
4297      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4298       begin       begin
4299        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4300       end       end
4301      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4302       begin       begin
4303        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4304       end       end
4305      else      else
4306       begin       begin
# Line 4911  var Line 4308  var
4308       end;       end;
4309  // 20150310: slut  // 20150310: slut
4310    
4311        time := TTimingHelper.create();        //DEBUG
4312        timeSamlet := TTimingHelper.create();        //DEBUG
4313    
4314      try      try
4315      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4316  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4920  var Line 4320  var
4320        begin        begin
4321          // 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
4322          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4323    
4324    
4325    
4326        end;        end;
4327        on e:exception do        on e:exception do
4328        begin        begin
# Line 4930  var Line 4333  var
4333        end;        end;
4334      end;      end;
4335      try      try
4336          time.stop('HTTP Load');     //DEBUG
4337    
4338        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4339    
4340  // 20150206: start        time.stop('XML Load');     //DEBUG
4341    
4342    
4343    
4344    
4345    
4346    
4347        antlin := 0;        antlin := 0;
4348        antlinIdag := 0;        antlinIdag := 0;
4349        antlinSenere := 0;        antlinSenere := 0;
4350  // 20150306: slut  
       antalFelterFundet := 0;  
4351        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4352            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4353            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4354              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4355              begin              begin
4356                 antlin := antlin + 1;                 Inc(antlin);
4357                 // 20150306: start                 // 20150306: start
4358                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4359                begin                begin
4360                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4361                   begin                   begin
4362                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4363                   end                   end
4364                   else                   else
4365                   begin                   begin
4366                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4367                   end;                   end;
4368                end;                end;
4369                 // 20150306: slut                 // 20150306: slut
4370              end;              end;
4371            end;            end;
4372            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4373                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4374                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4375                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4376                  end
4377                else                else
4378                  XmlFelter.values[Node.NodeName] := '1';                begin
4379                    XmlFelter.Add(Node.NodeName, 1);
4380                  end;
4381    
4382        end;        end;
4383        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4384        antalFelterFundet := 0;        antalFelterFundet := 0;
4385        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4386        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4387  // 20150206: start  
4388  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';        time.stop('Antal Linier');//DEBUG
4389    
4390          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4391    
4392        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4393        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4394        begin        begin
4395          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4396        end;        end;
4397        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4398  // 20150306: slut  
4399        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4400          time.stop('Antal Linier2');//DEBUG
4401    
4402    
4403        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4404            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4405            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4986  var Line 4407  var
4407                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4408                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4409                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4410              end;              end
4411              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4412                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4413                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4414                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4415              end;              end
4416              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4417                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4418                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4419                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4420              end;              end
4421              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4422                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4423                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4424                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4425              end;              end
4426              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4427                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4428                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4429                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4430                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4431                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4432                    pakketyper.TryGetValue(pakketype, tmpAntal);
4433                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4434                  end
4435                else                else
4436                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4437              end;              end
4438              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4439                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4440                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4441                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4442                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4443                  begin                  begin
4444  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4445                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4446                    begin                    begin
4447                      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
4448                    end                    end
4449                    else                    else
4450                    begin                    begin
4451                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4452                    end;                    end;
4453  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4454                  end;                  end;
4455              end;              end;
4456    
4457    
4458              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4459              begin              begin
4460                if (ScanningType = '1') then                if (ScanningType = '1') then
4461                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)                   ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4462                else if (ScanningType = '4') then                else if (ScanningType = '4') then
4463                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)                  ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4464                else if (ScanningType = '5') then                else if (ScanningType = '5') then
# Line 5046  var Line 4470  var
4470              end;              end;
4471            end;            end;
4472        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4473    
4474          // Free up the list object  
4475          time.stop('Fyld Listbox2');//DEBUG
4476    
4477    
4478          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4479    
4480    
4481          for pakketype in pakketyper.Keys do
4482          begin
4483            pakketyper.TryGetValue(pakketype, tmpAntal);
4484            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4485          end;
4486    
4487            // Free up the dictionary object
4488        pakketyper.Free;        pakketyper.Free;
4489  // 20150306: start  
4490    
4491    
4492  //      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.');
4493        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4494        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5062  var Line 4497  var
4497        end;        end;
4498        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4499        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4500        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4501        begin        begin
4502          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5072  var Line 4505  var
4505        begin        begin
4506          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4507        end;        end;
 // 20150309: slut  
4508    
 // 20150310: start  
4509        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4510        begin        begin
4511          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5153  var Line 4584  var
4584            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4585          end;          end;
4586        end;        end;
 // 20150310: slut  
4587    
4588      except on e:exception do      except on e:exception do
4589        begin        begin
# Line 5164  var Line 4594  var
4594        end;        end;
4595      end;      end;
4596    
4597        time.stop('Done');//DEBUG
4598        timeSamlet.stop('SamletTid');//DEBUG
4599    
4600    
4601  end;  end;
4602    
4603  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 5215  end; Line 4649  end;
4649  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4650  var  var
4651     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4652     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4653     imorgenYmd : string;     imorgenYmd : string;
4654     logFilnavn : string;     logFilnavn : string;
4655      error : Integer;     //error : Integer;
4656    
4657  begin  begin
4658    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5312  begin Line 4744  begin
4744          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4745          S := buffer;          S := buffer;
4746          SetLength(A,0);          SetLength(A,0);
4747          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4748          if (length(A) < 2) then          if (length(A) < 2) then
4749          begin          begin
4750            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4751          end;          end;
4752            if (length(A) > 1) then            if (length(A) > 1) then
4753            begin            begin
# Line 5341  begin Line 4773  begin
4773          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4774          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4775          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4776          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4777        end;        end;
4778      end;      end;
4779    end    end
# Line 5350  begin Line 4782  begin
4782        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4783        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4784        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4785        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4786    end;    end;
4787  end;  end;
4788    
# Line 5389  begin Line 4821  begin
4821          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4822          S := buffer;          S := buffer;
4823          SetLength(A,0);          SetLength(A,0);
4824          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4825          if (length(A) < 3) then          if (length(A) < 3) then
4826          begin          begin
4827            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4828          end;          end;
4829          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4830          begin          begin
# Line 5421  begin Line 4853  begin
4853          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4854          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4855          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4856          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4857        end;        end;
4858      end;      end;
4859    end    end
# Line 5430  begin Line 4862  begin
4862        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4863        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4864        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4865        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4866    end;    end;
4867  end;  end;
4868    
# Line 5484  begin Line 4916  begin
4916    result := svar;    result := svar;
4917  end;  end;
4918    
4919    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4920    begin
4921      //ShowMessage('Ændring ikke tilladt');
4922      // Her skal komme en 'rød skærm' alarm
4923      PlaySound(PWideChar(Config.AlarmLyd));
4924      MainForm.Color := clRed;
4925    
4926    
4927      RuteNummerST.Caption := '';
4928      BoghandlerNavnST.Caption := '';
4929      btnNulstil.Visible := true;
4930    
4931      if (strMessage <> '') then
4932      begin
4933        ListBox1.Items.Insert(0, strMessage);
4934        KommentarST.Caption := strMessage;
4935      end;
4936    
4937      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4938    
4939    end;
4940    
4941  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4942  var  var
4943     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5504  end; Line 4958  end;
4958  function TMainForm.getProddag() : String;  function TMainForm.getProddag() : String;
4959  begin  begin
4960  //  ShowMessage(LongDayNames[DayOfWeek(getProddato())]);  //  ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4961    result := LongDayNames[DayOfWeek(getProddato())];    result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4962    //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
4963  end;  end;
4964    
# Line 5541  begin Line 4995  begin
4995    result := svar;    result := svar;
4996  end;  end;
4997    
 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;  
4998    
4999  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5000  begin  begin
5001    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
5002    begin    begin
5003       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
5004    end    end
5005    else    else
5006    begin    begin
5007       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
5008    end;    end;
5009  end;  end;
5010    
5011  function TMainForm.AdobeReaderExists: Boolean;  
5012  var  //Nedarvet fra IParentForm
5013    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
5014  begin  begin
5015    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
5016  end;  end;
5017    
5018  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
5019  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;  
5020  begin  begin
5021      ListBox1.Items.Insert(0, msg);
5022      SkrivScanningLogFil(msg);
5023    end;
5024    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
5025    
5026    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
5027    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
5028      printerTxt := 'Der er fravalgt printer i dette program';  begin
5029      ListBox1.Items.Insert(0,printerTxt);  
5030      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
5031    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
5032    begin    begin
5033      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
5034      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
5035      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
5036    end    end
5037    else    else
5038    begin    begin
5039      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
5040      try      PrinterstatusStaticText1.Color := clWhite;
5041        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;  
5042    end;    end;
5043  end;  end;
5044    
5045  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
5046  var  function TMainForm.GetFormObject() : TForm;
5047    hSession, hfile, hRequest: hInternet;  begin
5048    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;  
   
5049  end;  end;
5050    
5051  // 20150310: start  //Nedarvet fra IParentForm
5052  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetXMLDocument() : TXMLDocument;
 var  
    R: TRect;  
    Rgn: HRGN;  
5053  begin  begin
5054     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;  
5055  end;  end;
5056  // 20150310: slut  
5057    
5058  end.  end.
5059    

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

  ViewVC Help
Powered by ViewVC 1.1.20