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

Diff of /dao/DelphiScanner/Main.pas

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

revision 2682 by torben, Wed Aug 26 19:52:38 2015 UTC revision 3076 by torben, Thu Jul 28 20:03:18 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes,    UITypes,
23    PakkeshopLabels,    PakkeshopLabels,
24    StBarC,    Utils,
25    Math, // DegToRad() bruges i PrintPakkeshopLabel    ParentForm,
26    Utils    LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections,
30      TimingHelper
31    
32    ;    ;
33    
34  type  type
35    TMainForm = class(TForm)    TMainForm = class(TForm, IParentForm)
36      StregkodeST: TStaticText;      StregkodeST: TStaticText;
37      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
38      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 26  type Line 40  type
40      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
41      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
42      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
43      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
44      N1: TMenuItem;      N1: TMenuItem;
45      Pakkernormal1: TMenuItem;      menuNatXpress1: TMenuItem;
46      ReturpakkerfraDAO1: TMenuItem;      menuNatxpressReturDAO1: TMenuItem;
47      Returpakkerfraboghandler1: TMenuItem;      menuNatxpressReturfraKunde1: TMenuItem;
48      Hjlp1: TMenuItem;      Hjlp1: TMenuItem;
49      Om1: TMenuItem;      Om1: TMenuItem;
50      Testforbindelsen1: TMenuItem;      Testforbindelsen1: TMenuItem;
# Line 44  type Line 57  type
57      radioStorPakke: TRadioButton;      radioStorPakke: TRadioButton;
58      radioLillePakke: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      menuStorePakker: TMenuItem;
61      Smpakker1: TMenuItem;      menuSmaaPakker: TMenuItem;
62      Panel1: TPanel;      Panel1: TPanel;
63      Testlyd2: TMenuItem;      Testlyd2: TMenuItem;
64      Button1: TButton;      Button1: TButton;
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      menuDaoDirekte1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      menuPakkeshop1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      btnNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 73  type Line 86  type
86      Timer1: TTimer;      Timer1: TTimer;
87      chkScanTjekkode: TCheckBox;      chkScanTjekkode: TCheckBox;
88      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
89      Automatisktjekkodestyring1: TMenuItem;      menuAutomatiskTjekkodeStyring: TMenuItem;
90      Automatiskvalg1: TMenuItem;      menuAutomatiskvalg1: TMenuItem;
91      PanelValgA: TPanel;      PanelValgA: TPanel;
92      PanelValg1: TPanel;      PanelValg1: TPanel;
93      PanelValg2: TPanel;      PanelValg2: TPanel;
# Line 92  type Line 105  type
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109        chkEmballageRepareret: TCheckBox;
110        KommentarST: TLabel;
111        chkUdenforSpecifikation: TCheckBox;
112    
113    
   function Sto_GetFmtFileVersion(const FileName: String = ''): String;  
114    
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 CheckUrl(url:string):boolean;  
118    
119    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
120    procedure StartScreen();    procedure StartScreen();
# Line 119  type Line 130  type
130    procedure radioStorPakkeClick(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
131    procedure radioLillePakkeClick(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
132    procedure chkSporgEfterKundeClick(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
133    procedure Pakkernormal1Click(Sender: TObject);    procedure menuNatXpress1Click(Sender: TObject);
134    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
135    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
136    procedure Om1Click(Sender: TObject);    procedure Om1Click(Sender: TObject);
137    procedure Lukprogrammet1Click(Sender: TObject);    procedure Lukprogrammet1Click(Sender: TObject);
138    procedure Sprgefterboghandlernummer1Click(Sender: TObject);    procedure Sprgefterboghandlernummer1Click(Sender: TObject);
139    procedure ReturpakkerfraDAO1Click(Sender: TObject);    procedure menuNatxpressReturDAO1Click(Sender: TObject);
140    procedure Returpakkerfraboghandler1Click(Sender: TObject);    procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
141    procedure Storepakker1Click(Sender: TObject);    procedure menuStorePakkerClick(Sender: TObject);
142    procedure Smpakker1Click(Sender: TObject);    procedure menuSmaaPakkerClick(Sender: TObject);
143    procedure Testlyd1Click(Sender: TObject);    procedure Testlyd1Click(Sender: TObject);
144    procedure Testlyd2Click(Sender: TObject);    procedure Testlyd2Click(Sender: TObject);
145    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
146    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
147    procedure Budlevering1Click(Sender: TObject);    procedure menuDaoDirekte1Click(Sender: TObject);
148    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
149    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
150    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
151    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
152    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 154  type
154    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
155    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
156    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
157    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
158    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
159    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
160    procedure btnNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
161    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure menuPakkeshopRetur1Click(Sender: TObject);
162    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
163    procedure InitReturFraDao();    procedure InitReturFraDao();
164    procedure InitReturFraKunde();    procedure InitReturFraKunde();
# Line 158  type Line 169  type
169    
170    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
171    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
172    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
173    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
174    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
175    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
176    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
177    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
178    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
179    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
180    procedure Automatiskvalg1Click(Sender: TObject);    procedure menuAutomatiskvalg1Click(Sender: TObject);
181    procedure PanelValgAClick(Sender: TObject);    procedure PanelValgAClick(Sender: TObject);
182    procedure PanelValg1Click(Sender: TObject);    procedure PanelValg1Click(Sender: TObject);
183    procedure PanelValg2Click(Sender: TObject);    procedure PanelValg2Click(Sender: TObject);
# Line 180  type Line 191  type
191    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
192    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
193    procedure TjekkerUrls();    procedure TjekkerUrls();
194      procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
195    
196    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
197    
198    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
199    procedure CheckPrintQue(tjektype : string);  
200      //Nedarvet fra IParentForm
201      procedure Msg( msg : string);
202      procedure LogMessage( msg : string);
203      procedure SetPrinterstatusText( txt: string; alert: boolean);
204      function GetFormObject() : TForm;
205    
206    
207    
208    private    private
# Line 193  type Line 211  type
211      SkrivLog : String;      SkrivLog : String;
212      Sted : String;      Sted : String;
213      StedNavn : String;      StedNavn : String;
214      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
215  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
216                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
217    
218      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
219  // 20150330: slut  
220      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
221      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
222      ScanTjekkode : String;      ScanTjekkode : String;
223      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
224      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
225      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
226      LabelType : integer;            FarveIndlevering : String;
227    
228        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
229              TitelIndlevering : String;
230    
231      AlarmLyd : String;      AlarmLyd : String;
232      ScannetOkLyd : String;      ScannetOkLyd : String;
233      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
234  // 20150317: start  
235      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
236  // 20150317: slut  
237      PrinterNavn : String;      PrinterNavn : String;
238      TjekPrinter : String;      TjekPrinter : String;
239      XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
240      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
241      BladhusSted : Integer;      BladhusSted : Integer;
242      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 247  type Line 249  type
249      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
250      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
251      TjekUrls : String;      TjekUrls : String;
252        Config : TConfiguration;
253    
     Barcode : TStBarcode;  
254    
255        LabelPrint: TLabelPrint;
256    
257      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
258      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
259      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
260      procedure CheckCode();      procedure CheckCode();
261      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 262  type Line 265  type
265      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
266      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
267      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
268        function InjectURL(Url : String) : String;
269    
270    public    public
271      { Public declarations }      { Public declarations }
272    end;    end;
273    
       function GetPixelsPerInchX(): Integer;  
     function GetPixelsPerInchY(): Integer;  
274    
275  var  var
276    MainForm: TMainForm;    MainForm: TMainForm;
# Line 284  implementation Line 286  implementation
286  {$R *.dfm}  {$R *.dfm}
287    
288    
289    //FormCreate kaldes før InitForm
290    
291  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
292  begin  begin
293    
294  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
295        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
296    
297    
298    
299    
300      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
 // 20150309: slut  
301    
     Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component  
302    
303      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
304      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 335  begin Line 342  begin
342        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
343      end;      end;
344    
345      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
346    
347      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
348      begin      begin
# Line 363  begin Line 370  begin
370        else if (Sted = 'BR') then        else if (Sted = 'BR') then
371          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
372        else if (Sted = 'BK') then        else if (Sted = 'BK') then
373          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
374          else if (Sted = 'TK') then
375            begin StedNavn := 'BK/Trykkompagniet: '; end
376        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
377          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
378        else if (Sted = '1') then        else if (Sted = '1') then
379          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
380        else if (Sted = '2') then        else if (Sted = '2') then
# Line 399  begin Line 408  begin
408        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
409      end;      end;
410    
411      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
412        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
413      else      else
414        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 424  begin Line 433  begin
433        end;        end;
434      end;      end;
435    
436      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
437      begin      begin
438        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
439        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 469  begin
469        end;        end;
470      end;      end;
471    
472    
473  end;  end;
474    
475  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 481  begin Line 491  begin
491    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
492  end;  end;
493    
494  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
495  begin  begin
496    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
497    begin    begin
498       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
499       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 496  begin Line 506  begin
506    
507  end;  end;
508    
509  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
510  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
511  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
512  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
513       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
514       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
515       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
516  end;  end;
517    
518    function TMainForm.InjectURL(Url : String) : String;
519    begin
520    
521      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
522      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
523      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
524    
525      Result := Url;
526    end;
527    
528    //InitForm kaldes før FormCreate
529  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
530  const  const
531    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
532  var  var
   printerInd : integer;  
533    gemScanningtype : String;    gemScanningtype : String;
534    
535  begin  begin
536    
537    
538    // Initierer nogle variabler    // Initierer nogle variabler
539    BladhusSted := 00;    BladhusSted := 00;
540    Application.ShowHint := True;    Application.ShowHint := True;
# Line 554  begin Line 560  begin
560    
561  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
562    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
563    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 820;
564    
565      Config := TConfiguration.Create();
566      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
567      Config.Sted := Sted;
568    
569    // Læser parametre fra ini filen    // Læser parametre fra ini filen
570    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
571    try    try
572    
573    
574      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
575      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
576      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
577    
578      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
579        UrlFindPakketype := InjectURL(UrlFindPakketype);
580    
581      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
582        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
583    
584      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
585        UrlNormal := InjectURL(UrlNormal);
586    
587      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
588        UrlReturDAO := InjectURL(UrlReturDAO);
589    
590      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
591        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
592    
593      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
594        UrlBudlevering := InjectURL(UrlBudlevering);
595    
596      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
597        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
598    
599      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
600        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
601    
602      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
603        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
604    
605      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
606        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
607    
608      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
609        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
610    
611      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
612        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
613    
614      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
615        UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
616    
617      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
618        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
619    
620        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
621        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
622    
623        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
624        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
625    
626    
627    
     LabelType := ReadInteger('Settings','LabelType',1);  
628      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
629      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
630      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 618  begin Line 661  begin
661    
662      if (SkrivLog = '1') then      if (SkrivLog = '1') then
663      begin      begin
664        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
665        try        try
666          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
667          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
668          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
669          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
670          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
671          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 634  begin Line 677  begin
677    
678      if Scanningtype = 'A' then      if Scanningtype = 'A' then
679      begin      begin
680        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
681        Scanningtype := '1';        Scanningtype := '1';
682        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
683        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
684      end;      end;
685    
686      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
687    
688      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
689      begin      begin
# Line 734  begin Line 709  begin
709    
710      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
711      begin      begin
712        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
713        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
714        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
715      end;      end;
# Line 764  begin Line 739  begin
739  {$IfDef STED_BK}  {$IfDef STED_BK}
740      SpecialVersionSted := 'BK';      SpecialVersionSted := 'BK';
741  {$EndIf}  {$EndIf}
742    {$IfDef STED_TK}
743        SpecialVersionSted := 'TK';// BK-Trykkompagniet
744    {$EndIf}
745  {$IfDef STED_DBK}  {$IfDef STED_DBK}
746      SpecialVersionSted := 'DBK';      SpecialVersionSted := 'DBK';
747  {$EndIf}  {$EndIf}
# Line 774  begin Line 752  begin
752      SpecialVersionSted := 'NS';      SpecialVersionSted := 'NS';
753  {$EndIf}  {$EndIf}
754    
   
755      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
756      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
757      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 790  begin Line 767  begin
767      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
768      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
769    
 // 20150313: start  
770      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
771      begin      begin
772         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
773         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
774    
775          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
776          Sted := SpecialVersionSted;
777         // her skal vi også disable de knapper BK ikke kan bruge
778          PanelValg2.Enabled := false;
779          PanelValg2.Font.Color := clInactiveCaption;
780          PanelValg3.Enabled := false;
781          PanelValg3.Font.Color := clInactiveCaption;
782          //PanelValg6.Enabled := false;
783          //PanelValg6.Font.Color := clInactiveCaption;
784    
785         // her skal vi også disable de menupunkter FD ikke kan bruge
786          menuNatxpressReturDAO1.Enabled := false;
787          menuNatxpressReturfraKunde1.Enabled := false;
788    
789          //Returpakkerfrapakkeshop1.Enabled := false;
790      end;      end;
791    
792      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
793      begin      begin
794         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
795         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
796      end;  
 // 20150313: slut  
797    
     if SpecialVersionSted = 'BK' then  
     begin  
798        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
799        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
800       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 812  begin Line 802  begin
802        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
803        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
804        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
805        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
806        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
807       // her skal vi også disable de menupunkter BK ikke kan bruge  
808        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
809        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
810        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
811        if SpecialVersionScanningtype = 'A' then  
812        begin        //Returpakkerfrapakkeshop1.Enabled := false;
813           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
814      end;      end;
815    
816      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
817      begin      begin
818        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
819        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
820        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
821        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
822        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
823        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
824        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
825        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
826        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
       PanelValg6.Enabled := false;  
       PanelValg6.Font.Color := clInactiveCaption;  
       PanelValg7.Enabled := false;  
       PanelValg7.Font.Color := clInactiveCaption;  
827    
828       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
829        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
830        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
831    
832        Pakkeshoplevering1.Enabled := false;        //Returpakkerfrapakkeshop1.Enabled := false;
       Returpakkerfrapakkeshop1.Enabled := false;  
833    
834        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
835        begin        begin
# Line 861  begin Line 841  begin
841        end;        end;
842      end;      end;
843    
844        if SpecialVersionSted = 'DBK' then
845        begin
846          Sted := SpecialVersionSted;
847        end;
848    
849      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
850      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
851      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 884  begin Line 869  begin
869        PanelValg7.Font.Color := clInactiveCaption;        PanelValg7.Font.Color := clInactiveCaption;
870       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
871    
872        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
873    
874        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
875        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
876        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
877        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
878        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
879        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
880        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
881        begin        begin
882          Scanningtype := '4';          Scanningtype := '4';
883          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
884          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
885          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
886        end        end
# Line 904  begin Line 889  begin
889          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
890          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
891          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
892          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
893          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
894          if Scanningtype = '1' then          if Scanningtype = '1' then
895          begin          begin
896            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
897            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
898            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
899          end;          end;
900          if Scanningtype = '2' then          if Scanningtype = '2' then
901          begin          begin
902            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
903            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
904            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
905          end;          end;
906          if Scanningtype = '3' then          if Scanningtype = '3' then
907          begin          begin
908            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
909            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
910            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
911          end;          end;
912          if Scanningtype = '4' then          if Scanningtype = '4' then
913          begin          begin
914            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
915            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
916            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
917          end;          end;
918          if Scanningtype = '5' then          if Scanningtype = '5' then
919          begin          begin
920            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
921            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
922            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
923          end;          end;
924          if Scanningtype = '6' then          if Scanningtype = '6' then
925          begin          begin
926            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
927            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
928            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
929          end;          end;
# Line 1019  begin Line 1004  begin
1004    
1005      if Pakketype = '1' then      if Pakketype = '1' then
1006      begin      begin
1007        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
1008        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
1009      end      end
1010      else      else
1011      begin      begin
1012        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
1013        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
1014      end;      end;
1015    
# Line 1072  begin Line 1057  begin
1057      end;      end;
1058    
1059    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1060    
1061      CheckPrintQue('Opstart');  
1062        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1063        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1064    
1065    finally    finally
1066      Free;      Free;
# Line 1088  begin Line 1069  begin
1069      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
1070      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
1071      begin      begin
1072        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
1073        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
1074        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
1075        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
1076        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
1077        Testprinter1.Visible := false;        Testprinter1.Visible := false;
1078        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
1079        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
1080      end;      end;
1081    
1082      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1146  begin Line 1127  begin
1127      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1128    
1129      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1130      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1131    
1132  end;  end;
1133    
# Line 1203  begin Line 1184  begin
1184      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1185      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1186      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1187        or (NumberString = 'DAO PAKKESHOP')
1188        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1189            or (LowerCase(NumberString) = 'for stor daodirekte' )
1190      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1191    
1192      begin      begin
# Line 1213  begin Line 1197  begin
1197      begin      begin
1198        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1199      end;      end;
1200    end;    end;  // Slut ctrl-v
1201    
1202    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1203    begin    begin
1204      if (Length(Trim(Stregkode)) = 0) then  
1205        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1206        Stregkode := Trim(Stregkode);
1207    
1208        if (Length(Stregkode) = 0) then
1209      begin      begin
1210        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1211    
# Line 1267  begin Line 1255  begin
1255         exit;         exit;
1256      end;      end;
1257    
1258        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1259        begin
1260          if chkForstorTilDirekte.Enabled then
1261          begin
1262            chkForstorTilDirekte.Checked := true;
1263          end
1264          else
1265          begin
1266             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1267          end;
1268          Stregkode := '';
1269          StregkodeST.Caption := StregKode;
1270          exit;
1271        end;
1272    
1273    
1274      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1275      begin      begin
1276         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1464  begin Line 1468  begin
1468        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1469      end;      end;
1470    
1471      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1472          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1473          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1474          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1475          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1476          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1477      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1478          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1479    
1480         exit;         exit;
1481      end;      end;
1482    
1483      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1484      begin      begin
1485        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1486        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1505  begin Line 1509  begin
1509                InitPakkeshoplevering();                InitPakkeshoplevering();
1510              end;              end;
1511            end            end
1512        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1513              begin
1514                if Scanningtype <> '6' then
1515                begin
1516                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1517    
1518                 exit;
1519                end;
1520              end
1521    
1522    
1523        else        else
1524            begin            begin
1525            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1526              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1527                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1528    
1529               exit;               exit;
1530            end;            end;
1531        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1532      end      end
1533      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1534      begin      begin
1535        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1536    
1537        exit;        exit;
1538      end;      end;
1539    
1540      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1541      begin      begin
1542        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1543        begin        begin
# Line 1536  begin Line 1550  begin
1550    
1551    
1552    
1553      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1554      begin      begin
1555        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1556        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1549  begin Line 1563  begin
1563        end;        end;
1564      end;      end;
1565    
1566      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1567        begin        begin
1568          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1569             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
# Line 1559  begin Line 1573  begin
1573             Stregkode := '';             Stregkode := '';
1574             InitScreen();             InitScreen();
1575        end        end
1576      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1577        begin        begin
1578          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1579             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1571  begin Line 1585  begin
1585             Stregkode := '';             Stregkode := '';
1586             InitScreen();             InitScreen();
1587        end        end
1588      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1589        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1590         begin         begin
1591            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1597  begin Line 1611  begin
1611             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1612             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1613             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1614             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1615                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1616             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1617                MainForm.Color := TUtils.HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1618             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1619           end           end
1620          else          else
1621           begin           begin
1622                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1623                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1624                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1625                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1626                                    
1627                StregKode := '';                StregKode := '';
# Line 1619  begin Line 1633  begin
1633          InitScreen();          InitScreen();
1634       end;       end;
1635    
1636      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1637      begin      begin
1638         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1639           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1640            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1641         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1642            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1643         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1644         try         try
# Line 1637  begin Line 1652  begin
1652    
1653              exit;              exit;
1654            end;            end;
1655            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1656            begin            begin
1657              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1658              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1658  begin Line 1673  begin
1673                MainForm.Color := clRed;                MainForm.Color := clRed;
1674              end;              end;
1675           end;           end;
1676            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( menuNatXpress1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1677            begin            begin
1678              MainForm.Color := TUtils.HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1679              if Storepakker1.Checked then              if menuStorePakker.Checked then
1680              begin              begin
1681                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1682              end              end
# Line 1671  begin Line 1686  begin
1686              end;              end;
1687              btnNulstil.Visible := false;              btnNulstil.Visible := false;
1688            end            end
1689            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1690            begin            begin
1691              MainForm.Color := TUtils.HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1692              if Storepakker1.Checked then              if menuStorePakker.Checked then
1693              begin              begin
1694                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1695              end              end
# Line 1695  begin Line 1710  begin
1710            begin            begin
1711              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1712            end;            end;
1713    
1714           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1715            begin            begin
1716    
1717              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1718              begin              begin
1719                if Storepakker1.Checked then                if menuStorePakker.Checked then
1720                begin                begin
1721                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(ScannetOkStorLyd));
1722                end                end
# Line 1744  begin Line 1760  begin
1760    
1761    Key := #0;    Key := #0;
1762    
1763    
1764    
1765    
1766    
1767    
1768  end; //End of OnKeyPress  end; //End of OnKeyPress
1769    
1770    
1771    
1772  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1773  const  const
1774    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1787  var Line 1810  var
1810    
1811    
1812  begin  begin
1813      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.Checked or menuIndlevering.Checked then
1814      begin      begin
1815        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1816          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1817          begin          begin
1818              wrkAntalSenere := 0;//initial Value
1819    
1820            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1821            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
# Line 1906  begin Line 1930  begin
1930                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1931              end;              end;
1932            end;            end;
1933  // 20150310: slut  
1934            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1935          end;          end;
1936      end;      end;
# Line 1936  procedure TMainForm.InitBladhus(); Line 1960  procedure TMainForm.InitBladhus();
1960    
1961  begin  begin
1962    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1963    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1964    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1965    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1966    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1967    ListBox1.Visible := true;    ListBox1.Visible := true;
1968  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1969  // 20150317: start  
1970  (*    if menuDaoDirekte1.Checked then
   if TestFunktionen = '1' then  
     begin  
       Testforbindelsen1.Visible := true;  
       Testprinter1.Visible := true;  
       Testlyd1.Visible := true;  
       Testlyd2.Visible := true;  
     end  
   else if TestFunktionen = '2' then  
     begin  
       Testforbindelsen1.Enabled := false;  
       Testprinter1.Enabled := false;  
       Testlyd1.Enabled := false;  
       Testlyd2.Enabled := false;  
     end  
   else  
     begin  
       Testforbindelsen1.Visible := false;  
       Testprinter1.Visible := false;  
       Testlyd1.Visible := false;  
       Testlyd2.Visible := false;  
     end;  
   Testprinter1.Visible := false;  
   AlarmLyd := 'Sounds\Alarm.wav';  
   if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   ScannetOkLyd := 'Sounds\Ok.wav';  
   if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   ScannetOkStorLyd := 'Sounds\Ok_stor.wav';  
   if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
 *)  
 // 20150317: slut  
   if Budlevering1.Checked then  
1971    begin    begin
1972      IndlesScanningLogFil();      IndlesScanningLogFil();
1973    end;    end;
# Line 1995  begin Line 1979  begin
1979      01 :      01 :
1980            begin;      // NS            begin;      // NS
1981              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1982              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1983              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1984              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1985              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1986              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2007  begin Line 1991  begin
1991      02 :      02 :
1992            begin;    // BK            begin;    // BK
1993              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1994              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1995              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1996              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1997              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1998              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1999              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2000              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2001              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2002              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2022  begin Line 2006  begin
2006              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2007             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2008              begin              begin
2009                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2010              end              end
2011              else              else
2012              begin              begin
2013                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2014              end;              end;
2015              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2016              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2017              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2018              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2019              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2045  begin Line 2029  begin
2029            end;            end;
2030      04 :  begin;           // DBK      04 :  begin;           // DBK
2031              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2032              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
2033              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
2034              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2035              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2036              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2037              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2038              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2039              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2040            end;            end;
# Line 2079  begin Line 2063  begin
2063    end;    end;
2064    
2065    
2066    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2067    begin    begin
2068       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
2069       begin       begin
# Line 2087  begin Line 2071  begin
2071       end;       end;
2072       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2073    end    end
2074    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
2075    begin    begin
2076       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2077    end    end
2078    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2079    begin    begin
2080       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2081    end    end
2082    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2083    begin    begin
2084       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2085    end    end
2086    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2087    begin    begin
2088       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2089    end    end
2090    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2091    begin    begin
2092       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2093    end    end
# Line 2115  begin Line 2099  begin
2099    begin    begin
2100      exit;      exit;
2101    end;    end;
2102    
2103      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2104      begin
2105        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2106      end;
2107    
2108    try    try
2109      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2110      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2136  begin Line 2126  begin
2126          end;          end;
2127      end;      end;
2128    end;    end;
2129    
2130    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2131    try    try
2132      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2133       begin       begin
2134        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2135        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2146  begin Line 2137  begin
2137        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2138        PrintNyLabel := False;        PrintNyLabel := False;
2139    
2140        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2141        begin        begin
2142          try          try
2143            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2159  begin Line 2150  begin
2150          end;          end;
2151        end;        end;
2152       end       end
2153      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2154      begin      begin
2155    
2156    
# Line 2170  begin Line 2161  begin
2161       begin       begin
2162         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2163         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2164         RuteNummer := PakkeshopLabel.Koreliste;         RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2165           Stregkode := PakkeshopLabel.Stregkode;
2166    
2167         PrintPakkeshopLabel( PakkeshopLabel );         LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2168           chkForstorTilDirekte.Checked := false;
2169    
2170       end;       end;
2171    
# Line 2185  begin Line 2178  begin
2178        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2179        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2180        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2181        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2182          begin          begin
2183          try          try
2184            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2216  begin Line 2209  begin
2209      begin      begin
2210        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2211        begin        begin
2212            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2213            PrintNyLabel := False;            PrintNyLabel := False;
2214        end;        end;
2215      end      end
2216      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2217      begin      begin
2218         if (Leveringssted = 'E') and (Sted = 'DBK') then         if (Leveringssted = 'E') and (Sted = 'DBK') then
2219         begin         begin
# Line 2228  begin Line 2221  begin
2221         end         end
2222         else         else
2223         begin         begin
2224            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2225            PrintNyLabel := False;            PrintNyLabel := False;
2226         end;         end;
2227      end;      end;
# Line 2249  begin Line 2242  begin
2242    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2243    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2244    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2245    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2246      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2247    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2248    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2261  begin Line 2254  begin
2254      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2255    end;    end;
2256    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2257    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2258    begin    begin
2259      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2260    end;    end;
2261    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2262    begin    begin
2263      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2264    end;    end;
2265    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2266       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2267    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2268    begin    begin
2269      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2270    end;    end;
2271    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2272    begin    begin
2273       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2274        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2287  begin Line 2280  begin
2280          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2281        end;        end;
2282    end;    end;
2283    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2284    begin    begin
2285      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2286    end;    end;
2287    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2288    begin    begin
2289      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2290      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2304  begin Line 2297  begin
2297        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2298      end;      end;
2299    end;    end;
2300      if menuIndlevering.Checked then
2301      begin
2302        List1Msg := Stregkode;
2303      end;
2304    
2305    
2306    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2307    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2308    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2309  end;  end;
2310    
2311  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2312  begin  begin
2313    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2314    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2325  pakkeForkertSted : Integer; Line 2324  pakkeForkertSted : Integer;
2324    kontrolKoreliste : string;    kontrolKoreliste : string;
2325    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2326  begin  begin
2327    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2328       RuteNummerST.Color := TUtils.HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2329    
2330    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 2363  begin Line 2362  begin
2362        end;        end;
2363    end    end
2364    else    else
2365    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2366    begin    begin
2367       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2368       begin       begin
# Line 2432  begin Line 2431  begin
2431    
2432    end;    end;
2433    
2434    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2435    begin    begin
2436      case BladhusSted of      case BladhusSted of
2437        00 :  begin;        00 :  begin;
# Line 2444  begin Line 2443  begin
2443               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2444  // 20150304: slut  // 20150304: slut
2445                begin                begin
2446                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2447                end;                end;
2448              end;              end;
2449        01 :  begin;        01 :  begin;
# Line 2452  begin Line 2451  begin
2451                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2452                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2453                begin                begin
2454                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2455                end;                end;
2456              end;              end;
2457        02 :  begin;        02 :  begin;
2458                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2459                begin                begin
2460                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2461                end;                end;
2462              end;              end;
2463        03 :  begin;        03 :  begin;
# Line 2466  begin Line 2465  begin
2465                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2466                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2467               begin               begin
2468                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2469               end;               end;
2470              end;              end;
2471        04 :  begin;        04 :  begin;
2472                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2473                begin                begin
2474                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2475                end;                end;
2476              end;              end;
2477        else        else
# Line 2481  begin Line 2480  begin
2480    end;    end;
2481    
2482  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2483    if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then    if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2484    begin    begin
2485      exit;      exit;
2486    end;    end;
2487    
2488    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then    if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2489    begin    begin
2490    end    end
2491    else    else
# Line 2508  begin Line 2507  begin
2507        end;        end;
2508        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2509        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2510        with Printer do  
2511        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2512          BeginDoc;        
         Canvas.Font.Size := FontSizeRute;  
         if (Length(RuteNummer) > 7) then  
         begin  
           Canvas.Font.Size := FontSizeRuteLille;  
         end;  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
         Canvas.Font.Size := FontSizeKommentar;  
         Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
         if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then  
         begin  
           Kommentar := '';  
         end;  
         if (BoghandlerNavn = 'PAKKE ER SCANNET') then  
         begin  
           BoghandlerNavn := '';  
         end;  
         Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
         Canvas.Font.Size := FontSizeBoghandler;  
         Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
         EndDoc;  
       end;  
2513      end;      end;
2514    end;    end;
2515    
2516  end;  end;
2517    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2518    
2519    
2520  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2521  begin  begin
2522      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2523      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2524  end;  end;
2525    
2526  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2527  begin  begin
2528      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2529      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2530  end;  end;
2531    
# Line 2629  begin Line 2568  begin
2568    end;    end;
2569  end;  end;
2570    
2571  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2572  begin  begin
2573        Scanningtype := '5';        Scanningtype := '5';
2574        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2638  end; Line 2577  end;
2577    
2578  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2579  begin  begin
2580      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2581      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2582      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2583    
# Line 2650  begin Line 2589  begin
2589        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2590        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2591        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2592        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2593      end;      end;
2594  // 20150317: slut  // 20150317: slut
2595  end;  end;
# Line 2665  begin Line 2604  begin
2604    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2605    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2606    
2607          // Tjekker urls    try
2608          logTekst := 'Tjekker urls.';      // Tjekker urls
2609          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2610          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2611        SkrivScanningLogFil(logTekst);
2612    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if CheckUrl(UrlNormal) then  
           begin  
             logTekst := 'UrlNormal accepteret: ' + UrlNormal;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               TjekUrls := '-';   // markerer at der var fejl  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2613    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if CheckUrl(UrlReturDAO) then  
           begin  
             logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2614    
2615          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2616          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2617          begin      begin
2618            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2619            begin      end;
             logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2620    
2621          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2622          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2623          begin      begin
2624            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2625            begin      end;
             logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2626    
2627          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2628          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2629          begin      begin
2630            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2631            begin      end;
             logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2632    
2633          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2634          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2635          begin      begin
2636            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2637            begin      end;
             logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2638    
2639          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2640          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2641          or (PanelValg4.Enabled = true) then      begin
2642          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2643            if CheckUrl(UrlManglendeScanninger) then      end;
           begin  
             logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2644    
2645          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2646          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2647          begin      begin
2648            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2649            begin      end;
             logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2650    
2651          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2652          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2653          begin      begin
2654            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2655            begin      end;
             logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2656    
2657          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2658          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2659          begin      begin
2660            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2661            begin      end;
             logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2662    
2663        // Tjekker UrlPakkeshopManglendeReturScanninger
2664        if PanelValg6.Enabled = true then
2665        begin
2666          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2667        end;
2668    
2669          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2670          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2671          begin      begin
2672            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2673            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2674              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;      end;
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2675    
2676        // Tjekker UrlEKLoverforsel
2677        if PanelValg1.Enabled = true then
2678        begin
2679          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2680        end;
2681    
         // Tjekker UrlFindPakketype  
         if CheckUrl(UrlFindPakketype) then  
         begin  
           logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;  
           SkrivScanningLogFil(logTekst);  
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2682    
2683          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2684          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2685          begin      begin
2686            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2687            SkrivScanningLogFil(logTekst);      end;
2688          end  
2689          else  
2690          begin      // Tjekker UrlFindPakketype
2691              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2692              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2693              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2694              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2695              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;  
2696    
         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;  
2697    
2698        logTekst := 'urls er ok';
2699        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2700        SkrivScanningLogFil(logTekst);
2701    
2702      Except
2703        TjekUrls := '-';   // markerer at der var fejl
2704    
2705      end;
2706  end;  end;
2707    
2708  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2709  var  const
2710     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2711  begin  begin
2712     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2713     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2714     Result := SystemTimeToDateTime(SystemTime) ;    begin
2715        logTekst := UrlNavn + ' accepteret: ' + Url;
2716        SkrivScanningLogFil(logTekst);
2717      end
2718      else
2719      begin
2720        inc(urlFejl);   // Optæller antal fejl
2721        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2722        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2723        if TjekUrls = '1' then
2724        begin
2725          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2726        end;
2727    
2728        SkrivScanningLogFil(logTekst);
2729    
2730        if TjekUrls = '1' then
2731        begin
2732          ShowMessage(logTekst);
2733          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2734          Application.Terminate;
2735    
2736          raise Exception.Create('UrlFejl');
2737    
2738        end;
2739      end;
2740    
2741  end;  end;
2742    
2743    
2744    
2745  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2746  var  var
2747    SR: TSearchRec;    SR: TSearchRec;
# Line 3074  begin Line 2761  begin
2761    
2762          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2763          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2764          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2765          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2766          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2767          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3134  begin Line 2821  begin
2821    if Farve <> '' then    if Farve <> '' then
2822    begin    begin
2823       MainForm.Color := TUtils.HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
 // 20150312: start  
 (*  
   end  
   else  
   begin  
      ShowMessage('Programmet afbrydes...');  
      UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
      Application.Terminate;  
 *)  
 // 20150312: slut  
2824    end;    end;
2825    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2826    begin    begin
2827       InitLillePakke();       InitLillePakke();
2828    end;    end;
# Line 3207  end; Line 2884  end;
2884    
2885  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2886  begin  begin
 // 20150311: start  
 (*  
   if PanelValgA.Color = clBtnFace then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
2887  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2888  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2889       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2890       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2891       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2892  // 20150311: slut  
2893    
2894    
2895  end;  end;
2896    
2897  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2898  begin  begin
2899        Scanningtype := '1';        Scanningtype := '1';
2900        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3300  begin Line 2964  begin
2964    Falsk := False;    Falsk := False;
2965    
2966    
2967    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2968    begin    begin
2969      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2970    end    end
# Line 3315  begin Line 2979  begin
2979      DBKbane := '999';      DBKbane := '999';
2980      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2981      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2982      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2983    end;    end;
2984    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2985  end;  end;
# Line 3324  procedure TMainForm.Timer1Timer(Sender: Line 2988  procedure TMainForm.Timer1Timer(Sender:
2988  begin  begin
2989    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2990    begin    begin
2991      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2992    end    end
2993    else    else
2994    begin    begin
# Line 3342  var Line 3006  var
3006   tekst, filversion : String;   tekst, filversion : String;
3007  begin  begin
3008    
3009    filversion := Sto_GetFmtFileVersion('');    filversion := TUtils.Sto_GetFmtFileVersion('');
3010    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3011    
3012    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3385  begin Line 3049  begin
3049    
3050  end;  end;
3051    
3052    
3053  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3054    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3055  var  var
# Line 3437  begin Line 3102  begin
3102    
3103    if FileExists(fileName) then    if FileExists(fileName) then
3104    begin    begin
3105      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3106      begin      begin
3107        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3108        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3461  begin Line 3126  begin
3126    
3127    if FileExists(fileName) then    if FileExists(fileName) then
3128    begin    begin
3129      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3130      begin      begin
3131        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3132        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3133      end      end
3134      else      else
3135      begin      begin
3136        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3137      end;      end;
3138    end    end
3139    else    else
# Line 3499  begin Line 3164  begin
3164    
3165  end;  end;
3166    
3167  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3168  begin  begin
3169        Scanningtype := '2';        Scanningtype := '2';
3170        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3171        InitReturFraDao();        InitReturFraDao();
3172  end;  end;
3173    
3174  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3175  begin  begin
3176        Scanningtype := '6';        Scanningtype := '6';
3177        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3515  end; Line 3180  end;
3180    
3181  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3182  begin  begin
3183        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3184        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3185        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3186        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3187        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3188        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
# Line 3529  begin Line 3194  begin
3194        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3195        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3196        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3197        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3198        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3199        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3200        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3201        ListBox1.Visible := true;        ListBox1.Visible := true;
3202        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3203        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3204        InitLillePakke();        InitLillePakke();
3205        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3206    
3207          chkForstorTilDirekte.Checked := false;
3208          chkForstorTilDirekte.Enabled := false;
3209    
3210        if BladhusSted = 0 then        if BladhusSted = 0 then
3211        begin        begin
3212          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3547  end; Line 3216  end;
3216    
3217  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3218  begin  begin
3219        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3220        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3221        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3222        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3223        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
# Line 3561  begin Line 3230  begin
3230        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3231        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3232        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3233        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3234        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3235        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3236        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3237        ListBox1.Visible := true;        ListBox1.Visible := true;
3238        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3239        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3240        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3241    
3242          chkForstorTilDirekte.Checked := false;
3243          chkForstorTilDirekte.Enabled := false;
3244    
3245        InitLillePakke();        InitLillePakke();
3246  end;  end;
3247    
3248  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3249  begin  begin
3250        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3251        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3252        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3253        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3254        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
# Line 3587  begin Line 3260  begin
3260        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3261        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3262        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3263        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3264        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3265        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3266        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3267        ListBox1.Visible := true;        ListBox1.Visible := true;
3268        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3269        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3270        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3271    
3272          chkForstorTilDirekte.Checked := false;
3273          chkForstorTilDirekte.Enabled := false;
3274    
3275        InitLillePakke();        InitLillePakke();
3276  end;  end;
3277    
3278  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3279  begin  begin
3280        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3281        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3282        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3283        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3284        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
# Line 3614  begin Line 3291  begin
3291        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3292        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3293        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3294        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3295        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3296        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3297        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3298        ListBox1.Visible := true;        ListBox1.Visible := true;
3299        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3300        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3301        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3302        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3303        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3304        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3305        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3306    
3307          chkForstorTilDirekte.Checked := false;
3308          chkForstorTilDirekte.Enabled := true;
3309    
3310        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3311        begin        begin
3312            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3636  end; Line 3317  end;
3317    
3318  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3319  begin  begin
3320        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3321        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3322        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3323        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3324        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
# Line 3650  begin Line 3331  begin
3331        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3332        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3333        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3334        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3335        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3336        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3337        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3338        ListBox1.Visible := true;        ListBox1.Visible := true;
3339        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3340        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3341        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3342    
3343          BtnEKLoverforsel.Enabled := true;
3344    
3345        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3346          chkForstorTilDirekte.Enabled := true;
3347    
3348        InitLillePakke();        InitLillePakke();
3349        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3673  end; Line 3357  end;
3357    
3358  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3359  begin  begin
3360        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3361        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3362        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3363        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3364        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
# Line 3687  begin Line 3371  begin
3371        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3372        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3373        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3374        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3375        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3376        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3377        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3378        ListBox1.Visible := true;        ListBox1.Visible := true;
3379        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3380        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3381        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3382        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3383    
3384          chkForstorTilDirekte.Checked := false;
3385          chkForstorTilDirekte.Enabled := false;
3386    
3387    
3388        InitLillePakke();        InitLillePakke();
3389        IndlesScanningLogFil();        IndlesScanningLogFil();
3390        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3706  begin Line 3395  begin
3395        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3396  end;  end;
3397    
3398  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3399  begin  begin
3400        Scanningtype := '3';        Scanningtype := '3';
3401        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3716  end; Line 3405  end;
3405  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3406  begin  begin
3407        menuIndlevering.Checked := true;        menuIndlevering.Checked := true;
3408        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3409    
3410        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3411        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
# Line 3733  begin Line 3422  begin
3422    
3423    
3424    
3425        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3426        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3427        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3428        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3429        ListBox1.Visible := true;        ListBox1.Visible := true;
3430        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3431    
3432        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3433        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3434        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3435    
3436          chkForstorTilDirekte.Checked := false;
3437          chkForstorTilDirekte.Enabled := false;
3438    
3439    
3440        InitLillePakke();        InitLillePakke();
3441        IndlesScanningLogFil();        IndlesScanningLogFil();
3442        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3754  begin Line 3448  begin
3448  end;  end;
3449    
3450    
3451  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3452  begin  begin
3453    InitStorPakke();    InitStorPakke();
3454  end;  end;
3455    
3456  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3457  begin  begin
3458    InitLillePakke();    InitLillePakke();
3459  end;  end;
# Line 3767  end; Line 3461  end;
3461  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3462  begin  begin
3463    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3464    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3465  //  Stregkode := '';  //  Stregkode := '';
3466  end;  end;
3467    
3468  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3469  begin  begin
3470    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3471    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3472  // 20150310: start  // 20150310: start
3473  //  Stregkode := '';  //  Stregkode := '';
3474  // 20150310: slut  // 20150310: slut
3475  end;  end;
3476    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Integer;  
 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;  
3477    
     // format result string  
     Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);  
   
   end;  
 end;  
3478    
3479  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3480  begin  begin
# Line 3871  begin Line 3512  begin
3512       exit;       exit;
3513    end;    end;
3514    
3515    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3516       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
3517       begin       begin
3518         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(ScannetOkLyd));
# Line 3880  begin Line 3521  begin
3521       begin       begin
3522         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3523       end;       end;
3524    if Storepakker1.Checked then    if menuStorePakker.Checked then
3525       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
3526       begin       begin
3527         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(ScannetOkStorLyd));
# Line 3892  begin Line 3533  begin
3533  end;  end;
3534    
3535    
3536  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3537  begin  begin
3538        Scanningtype := '4';        Scanningtype := '4';
3539        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3904  begin; Line 3545  begin;
3545    CheckCode();    CheckCode();
3546  end;  end;
3547    
3548  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3549  var  var
3550    WebSvar : String;    WebSvar : String;
3551    URLStr : String;    URLStr : String;
# Line 3914  var Line 3555  var
3555    status, kommentar : String;    status, kommentar : String;
3556    
3557  begin  begin
3558      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3559    
3560      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3561      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3562      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3563      StedKode := Sted;      StedKode := Sted;
3564      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3565  // 20150330: start  
3566      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3567      begin      begin
3568        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3569      end;      end;
3570  // 20150330: slut  
3571    
3572      try      try
3573      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3977  begin Line 3618  begin
3618        end;        end;
3619      end;      end;
3620    
3621      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3622    
3623      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3624    
# Line 4503  begin Line 4144  begin
4144    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4145  end;  end;
4146    
4147  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4148  begin  begin
4149      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4150      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4151  end;  end;
4152    
4153  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4154  const  const
4155    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4156    
# Line 4518  begin Line 4159  begin
4159      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4160  end;  end;
4161    
4162  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4163  begin  begin
4164      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4165      begin      begin
# Line 4528  begin Line 4169  begin
4169  end;  end;
4170    
4171    
 // ToDo: PrintPakkeshopLabel()  
 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
 var  
   XForm, XFormOld: TXForm; //Bruges til rotate X-formation  
   Angle: integer;  
   gMode: integer;  
   BarcodeArea: TRect;  
   Dirigering: string;  
   
 begin  
     with Printer do  
     begin  
       BeginDoc();  
   
   
       Canvas.Font.Size := 16;  
       Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + '     '  + PakkeshopLabel.Overskrift);  
   
   
   
       Canvas.TextOut(25, 90, PakkeshopLabel.Navn );  
       Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );  
       Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );  
   
   
       Canvas.Font.Size := 9;  
       Canvas.TextOut(110, 240, 'Pakkeshop:');  
       Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);  
       Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);  
       Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);  
   
       Canvas.TextOut(350, 240, 'Afsender:');  
       Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);  
       Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);  
       Canvas.TextOut(350, 330, PakkeshopLabel.AfsenderPostnr);  
   
       Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;  
       if ( PakkeshopLabel.Koreliste <> '') then  
       begin  
         Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;  
       end;  
   
   
       Canvas.Font.Size := 12;  
       Canvas.TextOut(15, 370, Dirigering);  
   
   
   
   
   
       //Tegn adskillelses linier  
       Canvas.Pen.Width := 2;  
       //Øverste linie  
       Canvas.MoveTo(20,80);  
       Canvas.LineTo(600,80);  
   
       // Midterste linie  
       Canvas.MoveTo( 20, 240);  
       Canvas.LineTo(600, 240);  
   
       //Nederste linie  
       Canvas.MoveTo( 20, 370);  
       Canvas.LineTo(600, 370);  
   
   
       //Tegn skrå streger over afsender  
       Canvas.Pen.Width := 1;  
       Canvas.MoveTo(600, 250);  
       Canvas.LineTo(350, 360);  
       Canvas.MoveTo(600, 360);  
       Canvas.LineTo(350, 250);  
   
   
   
   
       // Resten af rutinen vedr genering og placering af Barcode  
   
       BarCode.BarCodeType := bcCode128;  
       BarCode.Code128Subset := csCodeC;  
       BarCode.Code := PakkeshopLabel.Stregkode;  
       BarCode.Validate(True);  
   
       //Start X-formation  
       //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );  
       GetWorldTransform(Canvas.Handle, XFormOld);  
   
       Angle := 270;  
       XForm.eM11 := Cos(DegToRad(Angle));  
       XForm.eM12 := Sin(DegToRad(Angle));  
       XForm.eM21 := -Sin(DegToRad(Angle));  
       XForm.eM22 := Cos(DegToRad(Angle));  
       XForm.eDx := 0;  
       XForm.eDy := 0;  
   
       gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);  
       SetWorldTransform(Canvas.Handle, XForm);  
   
       // PaintToCanvasSize arbejder i Inches  
       // Første pos argument bliver nu Y og skal være negativ for at rykke den ned  
       //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre  
   
       BarCode.PaintToCanvasSize(Printer.Canvas, -1.8, 3.3, 0.4);  
   
   
       SetWorldTransform(Canvas.Handle, XFormOld);  
       SetGraphicsMode(Canvas.Handle, gMode);  
   
       EndDoc();  
     end;  
   
   
 end;  
   
 function GetPixelsPerInchX(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)  
 end;  
   
 function GetPixelsPerInchY(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)  
 end;  
   
4172    
4173  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4174  var  var
# Line 4661  var Line 4179  var
4179    I: Integer;    I: Integer;
4180    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4181    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4182    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4183    pakketyper : TStrings;    //pakketyper : TStrings;
4184      pakketyper : TDictionary<String, Integer>;
4185      tmpAntal : Integer;
4186    
4187     time, timeSamlet : TTimingHelper;
4188    
4189    
4190    antlin : Integer;    antlin : Integer;
4191    
4192    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4193    
4194    XmlFelter : TStrings;    //XmlFelter : TStrings;
4195      XmlFelter : TDictionary<String, Integer>;
4196    
4197   begin   begin
4198      XmlFelter := TStringList.Create;  
4199      pakketyper := TStringList.Create;  
4200        XmlFelter := TDictionary<String, Integer>.Create;
4201        pakketyper := TDictionary<String, Integer>.Create;
4202    
4203      linienr := 0;      linienr := 0;
4204      ListBox2.Clear;      ListBox2.Clear;
4205      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4686  var Line 4214  var
4214          StedKode := Sted;          StedKode := Sted;
4215        end;        end;
4216    
4217          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4218    
4219    
4220      if (Scanningtype = '6') then  
4221        if (Scanningtype = '7') then
4222         begin
4223          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4224         end
4225        else if (Scanningtype = '6') then
4226       begin       begin
4227        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4228       end       end
4229      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4230       begin       begin
4231        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4232       end       end
4233      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4234       begin       begin
# Line 4709  var Line 4244  var
4244       end;       end;
4245  // 20150310: slut  // 20150310: slut
4246    
4247        time := TTimingHelper.create();        //DEBUG
4248        timeSamlet := TTimingHelper.create();        //DEBUG
4249    
4250      try      try
4251      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4252  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4718  var Line 4256  var
4256        begin        begin
4257          // Her skal vi ikke gøre noget - men vi skal forespørge igen          // Her skal vi ikke gøre noget - men vi skal forespørge igen
4258          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4259    
4260    
4261    
4262        end;        end;
4263        on e:exception do        on e:exception do
4264        begin        begin
# Line 4728  var Line 4269  var
4269        end;        end;
4270      end;      end;
4271      try      try
4272          time.stop('HTTP Load');     //DEBUG
4273    
4274        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4275    
4276          time.stop('XML Load');     //DEBUG
4277    
4278    
4279    
4280    
4281    
4282    
4283        antlin := 0;        antlin := 0;
4284        antlinIdag := 0;        antlinIdag := 0;
# Line 4740  var Line 4289  var
4289            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4290              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4291              begin              begin
4292                 antlin := antlin + 1;                 Inc(antlin);
4293                 // 20150306: start                 // 20150306: start
4294                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4295                begin                begin
4296                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4297                   begin                   begin
4298                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4299                   end                   end
4300                   else                   else
4301                   begin                   begin
4302                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4303                   end;                   end;
4304                end;                end;
4305                 // 20150306: slut                 // 20150306: slut
4306              end;              end;
4307            end;            end;
4308            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4309                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4310                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4311                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4312                  end
4313                else                else
4314                  XmlFelter.values[Node.NodeName] := '1';                begin
4315                    XmlFelter.Add(Node.NodeName, 1);
4316                  end;
4317    
4318        end;        end;
4319        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4767  var Line 4321  var
4321        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4322        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4323    
4324          time.stop('Antal Linier');//DEBUG
4325    
4326          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4327    
4328        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4329        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4330        begin        begin
# Line 4775  var Line 4333  var
4333        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4334    
4335        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4336    
4337    
4338        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4339            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4340            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4782  var Line 4342  var
4342                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4343                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4344                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4345              end;              end
4346              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4347                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4348                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4349                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4350              end;              end
4351              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4352                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4353                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4354                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4355              end;              end
4356              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4357                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4358                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4359                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4360              end;              end
4361              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4362                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4363                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4364                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4365                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4366                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4367                    pakketyper.TryGetValue(pakketype, tmpAntal);
4368                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4369                  end
4370                else                else
4371                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4372              end;              end
4373              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4374                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4375                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4376                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4377                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4378                  begin                  begin
4379  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4380                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4381                    begin                    begin
4382                      stregkoderMedTjekkodeArray[linienr] := TUtils.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
# Line 4826  var Line 4388  var
4388                    linienr := linienr + 1;                    linienr := linienr + 1;
4389                  end;                  end;
4390              end;              end;
4391    
4392    
4393              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4394              begin              begin
4395                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4841  var Line 4405  var
4405              end;              end;
4406            end;            end;
4407        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4408    
4409          // Free up the list object  
4410          time.stop('Fyld Listbox2');//DEBUG
4411    
4412    
4413          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4414    
4415    
4416          for pakketype in pakketyper.Keys do
4417          begin
4418            pakketyper.TryGetValue(pakketype, tmpAntal);
4419            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4420          end;
4421    
4422            // Free up the dictionary object
4423        pakketyper.Free;        pakketyper.Free;
4424    
4425    
4426    
4427  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4428        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4429        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4953  var Line 4529  var
4529        end;        end;
4530      end;      end;
4531    
4532        time.stop('Done');//DEBUG
4533        timeSamlet.stop('SamletTid');//DEBUG
4534    
4535    
4536  end;  end;
4537    
4538  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 5289  begin Line 4869  begin
4869      KommentarST.Caption := strMessage;      KommentarST.Caption := strMessage;
4870    end;    end;
4871    
4872      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4873    
4874  end;  end;
4875    
4876  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5348  begin Line 4930  begin
4930    result := svar;    result := svar;
4931  end;  end;
4932    
 function TMainForm.GetCurrentPrinterHandle: THandle;  
 var  
   Device, Driver, Port: array[0..255] of Char;  
   hDeviceMode: THandle;  
 begin  
   Printer.GetPrinter(Device, Driver, Port, hDeviceMode);  
   if not OpenPrinter(@Device, Result, nil) then  
     RaiseLastWin32Error;  
 end;  
   
 function TMainForm.SavePChar(p: PChar): PChar;  
 const  
   error: PChar = 'Nil';  
 begin  
   if not Assigned(p) then  
     Result := error  
   else  
     Result := p;  
 end;  
4933    
4934  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4935  begin  begin
# Line 5380  begin Line 4943  begin
4943    end;    end;
4944  end;  end;
4945    
4946  function TMainForm.AdobeReaderExists: Boolean;  
4947  var  //Nedarvet fra IParentForm
4948    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4949  begin  begin
4950    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4951  end;  end;
4952    
4953    //Nedarvet fra IParentForm
4954  function TMainForm.CheckUrl(url:string):boolean;  procedure TMainForm.LogMessage( msg : string);
4955  var  begin
4956    hSession, hfile: hInternet;    ListBox1.Items.Insert(0, msg);
4957    dwindex,dwcodelen :dword;    SkrivScanningLogFil(msg);
   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;  
   
4958  end;  end;
4959    
4960    
4961  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4962  type  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4963  begin  begin
4964    
4965  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1    PrinterstatusStaticText1.Caption := txt;
4966  //            'Test'  skal vise alarmlinie, samt opdatere listbox1    if (alert) then
 //            'Timer' skal kun vise alarmlinie  
   
   if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4967    begin    begin
4968      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4969      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4970      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
   begin  
     printerTxt := 'Der er ikke installeret en printer på denne PC';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
4971    end    end
4972    else    else
4973    begin    begin
4974      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4975      try      PrinterstatusStaticText1.Color := clWhite;
4976        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       pJ := AllocMem(bytesNeeded);  
       if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  
         RaiseLastWin32Error;  
   
       if numJobs = 0 then  
       begin  
         if (tjektype = 'Test') then  
         begin  
           logTekst := printerTxt + ': Ingen dokumenter i kø';  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         PrinterstatusStaticText1.Caption := '';  
         PrinterstatusStaticText1.Color := MainForm.Color;  
       end  
       else   // så er der kø til printeren  
       begin  
         printerTxt := SavePChar(pJ^[0].pPrinterName);  
         if (tjektype = 'Opstart') or (tjektype = 'Test') then  
         begin  
           logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         for i := 0 to Pred(numJobs) do  
         begin  
           printerTxt := SavePChar(pJ^[i].pPrinterName);  
           statusTxt := 'Ukendt';  
           if (IntToStr(pJ^[i].Status) = '0') then  
             statusTxt := 'Venter...';  
           if (IntToStr(pJ^[i].Status) = '4096') then  
             statusTxt := 'Printer...';  
           if (IntToStr(pJ^[i].Status) = '8210') then  
             statusTxt := 'Printerfejl';  
           if (IntToStr(pJ^[i].Status) = '8214') then  
             statusTxt := 'Sletter print...';  
   
           dokumentTxt := SavePChar(pJ^[i].pDocument);  
           if (dokumentTxt = '') then  
             dokumentTxt := 'Uden navn';  
   
           if (tjektype = 'Opstart') or (tjektype = 'Test') then  
           begin  
             logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',  
                                     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);  
             ListBox1.Items.Insert(0,logTekst);  
             SkrivScanningLogFil(logTekst);  
           end;  
   
           if (i = 0) then  
           begin  
             PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  
             PrinterstatusStaticText1.Font.Color := clBlack;  
             PrinterstatusStaticText1.Color := MainForm.Color;  
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
   
         end;  
       end  
       finally  
         ClosePrinter(hPrinter);  
     end;  
4977    end;    end;
4978  end;  end;
4979    
4980    //Nedarvet fra IParentForm
4981    function TMainForm.GetFormObject() : TForm;
4982    begin
4983      Result := self;
4984    end;
4985    
4986  end.  end.
4987    

Legend:
Removed from v.2682  
changed lines
  Added in v.3076

  ViewVC Help
Powered by ViewVC 1.1.20