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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2647 - (hide annotations) (download)
Thu Aug 20 20:16:16 2015 UTC (8 years, 9 months ago) by torben
File size: 202026 byte(s)
move delphiscanner to seperate dir
1 torben 2645 unit Main;
2    
3     interface
4    
5     uses
6     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7     Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,
8     IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
9     Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
10     IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,
11     Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet
12     ;
13    
14     type
15     TStrArray = array of string;
16     TMainForm = class(TForm)
17     StregkodeST: TStaticText;
18     RuteNummerST: TStaticText;
19     BoghandlerNavnST: TStaticText;
20     IdHTTP1: TIdHTTP;
21     XMLDocument1: TXMLDocument;
22     ApplicationEvents1: TApplicationEvents;
23     CheckBox1: TCheckBox;
24     KommentarST: TStaticText;
25     MainMenu1: TMainMenu;
26     N1: TMenuItem;
27     Pakkernormal1: TMenuItem;
28     ReturpakkerfraDAO1: TMenuItem;
29     Returpakkerfraboghandler1: TMenuItem;
30     Hjlp1: TMenuItem;
31     Om1: TMenuItem;
32     Testforbindelsen1: TMenuItem;
33     Testprinter1: TMenuItem;
34     Afslut1: TMenuItem;
35     Sprgefterboghandlernummer1: TMenuItem;
36     Lukprogrammet1: TMenuItem;
37     N2: TMenuItem;
38     N3: TMenuItem;
39     RadioButton1: TRadioButton;
40     RadioButton2: TRadioButton;
41     N4: TMenuItem;
42     Storepakker1: TMenuItem;
43     Smpakker1: TMenuItem;
44     Panel1: TPanel;
45     Testlyd2: TMenuItem;
46     Button1: TButton;
47     Testlyd1: TMenuItem;
48     ListBox1: TListBox;
49     Budlevering1: TMenuItem;
50     DownloadButton01: TButton;
51     IdFTP1: TIdFTP;
52     Image1: TImage;
53     ListBox2: TListBox;
54     OpdaterListenButton01: TButton;
55     UploadButton01: TButton;
56     DownloadButton03: TButton;
57     Pakkeshoplevering1: TMenuItem;
58     PakkeshopText1: TStaticText;
59     PakkeshopNulstil: TButton;
60     Returpakkerfrapakkeshop1: TMenuItem;
61     Altidprintepakkelabel1: TMenuItem;
62     CheckBox2: TCheckBox;
63     EKLoverforsel: TButton;
64     N5: TMenuItem;
65     Uploadlogfil1: TMenuItem;
66     Manual1: TMenuItem;
67     PrinterstatusStaticText1: TStaticText;
68     Timer1: TTimer;
69     CheckBox3: TCheckBox;
70     Scanogstjekkoden1: TMenuItem;
71     Automatisktjekkodestyring1: TMenuItem;
72     Automatiskvalg1: TMenuItem;
73     PanelValgA: TPanel;
74     PanelValg1: TPanel;
75     PanelValg2: TPanel;
76     PanelValg3: TPanel;
77     PanelValg4: TPanel;
78     PanelValg5: TPanel;
79     PanelValg6: TPanel;
80     Manualgenerel1: TMenuItem;
81     StaticTextManglendePakker: TStaticText;
82     PanelManglendePakker1: TPanel;
83     PanelManglendePakker2: TPanel;
84     PanelManglendePakker3: TPanel;
85     PanelManglendePakker4: TPanel;
86     PanelManglendePakker5: TPanel;
87     PanelManglendePakker6: TPanel;
88    
89     function Explode(var a: TStrArray; Border, S: string): Integer;
90     function BarCodeValid (ACode: string): boolean;
91     function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;
92     function TColorToHex(Color : TColor) : string;
93     function HexToTColor(sColor : string) : TColor;
94     function getProddato() : TDate;
95     function getProddag() : String;
96     function retRutenummer(rutenummer : String) : String;
97     function GetCurrentPrinterHandle() : THandle;
98     function SavePChar(p: PChar): PChar;
99     function AdobeReaderExists(): Boolean;
100     function FileTime2DateTime(FileTime: TFileTime): TDateTime;
101     function split(input: string; schar: Char; s: Integer): string;
102     function CheckUrl(url:string):boolean;
103    
104     procedure PlaySound(filename : PWideChar);
105     procedure StartScreen();
106     procedure InitScreen();
107     procedure InitBladhus();
108     procedure UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, Boghnr : String);
109     procedure InitLillePakke();
110     procedure InitStorPakke();
111     procedure InitForm(Farve,Titel,Url: String);
112     procedure FormKeyPress(Sender: TObject; var Key: Char);
113     procedure FormCreate(Sender: TObject);
114     procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
115     procedure RadioButton1Click(Sender: TObject);
116     procedure RadioButton2Click(Sender: TObject);
117     procedure CheckBox1Click(Sender: TObject);
118     procedure Pakkernormal1Click(Sender: TObject);
119     procedure Testforbindelsen1Click(Sender: TObject);
120     procedure Testprinter1Click(Sender: TObject);
121     procedure Om1Click(Sender: TObject);
122     procedure Lukprogrammet1Click(Sender: TObject);
123     procedure Sprgefterboghandlernummer1Click(Sender: TObject);
124     procedure ReturpakkerfraDAO1Click(Sender: TObject);
125     procedure Returpakkerfraboghandler1Click(Sender: TObject);
126     procedure Storepakker1Click(Sender: TObject);
127     procedure Smpakker1Click(Sender: TObject);
128     procedure Testlyd1Click(Sender: TObject);
129     procedure Testlyd2Click(Sender: TObject);
130     procedure Button1Click(Sender: TObject);
131     procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
132     procedure Budlevering1Click(Sender: TObject);
133     procedure DownloadButton01Click(Sender: TObject);
134     procedure OpdaterListenButton01Click(Sender: TObject);
135     procedure DownloadBladhusRuteskiftfil();
136     procedure DownloadBladhusKontrolfil();
137     procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
138     procedure UploadLogfilTilDAO();
139     procedure UploadInifilTilDAO();
140     procedure SletStregkodelinieFraListboks2(StregKode : String);
141     procedure FormDestroy(Sender: TObject);
142     procedure UploadButton01Click(Sender: TObject);
143     procedure DownloadButton03Click(Sender: TObject);
144     procedure Pakkeshoplevering1Click(Sender: TObject);
145     procedure PakkeshopNulstilClick(Sender: TObject);
146     procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
147     procedure InitNatxpresslevering();
148     procedure InitReturFraDao();
149     procedure InitReturFraKunde();
150     procedure InitDirektelevering();
151     procedure InitPakkeshoplevering();
152     procedure InitReturFraPakkeshop();
153     procedure Altidprintepakkelabel1Click(Sender: TObject);
154     procedure CheckBox2Click(Sender: TObject);
155     procedure EKLoverforselClick(Sender: TObject);
156     procedure Uploadlogfil1Click(Sender: TObject);
157     procedure Manual1Click(Sender: TObject);
158     procedure CheckPrintQue(tjektype : string);
159     procedure Timer1Timer(Sender: TObject);
160     procedure Scanogstjekkoden1Click(Sender: TObject);
161     procedure CheckBox3Click(Sender: TObject);
162     procedure Automatisktjekkodestyring1Click(Sender: TObject);
163     procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
164     procedure Automatiskvalg1Click(Sender: TObject);
165     procedure PanelValgAClick(Sender: TObject);
166     procedure PanelValg1Click(Sender: TObject);
167     procedure PanelValg2Click(Sender: TObject);
168     procedure PanelValg3Click(Sender: TObject);
169     procedure PanelValg4Click(Sender: TObject);
170     procedure PanelValg5Click(Sender: TObject);
171     procedure PanelValg6Click(Sender: TObject);
172     procedure NulstilAutomatiskValg();
173     procedure SletLogfiler(Path: string; FileList: TStrings);
174     procedure Manualgenerel1Click(Sender: TObject);
175     procedure TjekkerUrls();
176     // 20150310: start
177     procedure RoundCornerOf(Control: TWinControl);
178     // 20150310: slut
179    
180     private
181     SpecialVersionSted, SpecialVersionScanningtype: String; // Bruges når programmet skal bruges udenfor DAO scanningssteder
182     Stregkode : String;
183     SkrivLog : String;
184     Sted : String;
185     StedNavn : String;
186     Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;
187     // 29150330: start
188     UrlEKLoverforselPakkeshop : String;
189     // 20150330: slut
190     UrlFindPakketype, UrlSendPrograminfo: String;
191     Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
192     ScanTjekkode : String;
193     ScanTjekkodeAutomatik : string;
194     Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;
195     Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;
196     LabelType : integer;
197     AlarmLyd : String;
198     ScannetOkLyd : String;
199     ScannetOkStorLyd : String;
200     // 20150317: start
201     ScannetOkTilTjekkodeLyd : String;
202     // 20150317: slut
203     PrinterNavn : String;
204     TjekPrinter : String;
205     XPosRute : integer;
206     YPosRute : integer;
207     FontSizeRute : integer;
208     FontSizeRuteLille : integer;
209     XPosKommentar : integer;
210     YPosKommentar : integer;
211     FontSizeKommentar : integer;
212     XPosBoghandler : integer;
213     YPosBoghandler : integer;
214     FontSizeBoghandler : integer;
215     XPosKoreliste : integer;
216     YPosKoreliste : integer;
217     FontSizeKoreliste : integer;
218     FontSizeKorelisteLille : integer;
219     XPosSorteringsfelt1 : integer;
220     YPosSorteringsfelt1 : integer;
221     FontSizeSorteringsfelt1 : integer;
222     XPosSorteringsfelt2 : integer;
223     YPosSorteringsfelt2 : integer;
224     FontSizeSorteringsfelt2 : integer;
225     XPosSmskode : integer;
226     YPosSmskode : integer;
227     FontSizeSmskode : integer;
228     Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
229     BladhusSted : Integer;
230     BladhusStedKode : Array of string;
231     BladhusStedNavn : Array of string;
232     BladhusRuteskiftfil_server : String;
233     BladhusRuteskiftfil_lokal : String;
234     BladhusKontrolfil_server : String;
235     BladhusKontrolfil_lokal : String;
236     logTekst : string;
237     PakkeshopStregkode, PakkeshopTjekkode : String;
238     BoghandlerStregkode, BoghandlerTjekkode : String;
239     TjekUrls : String;
240    
241     function CheckSumModulo10(const data:string):string; { used for EAN 8/13 }
242    
243     procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
244     procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
245     procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
246     procedure CheckCode();
247     procedure IndlesManglendeScanninger();
248     procedure IndlesRuteskiftFil(var filnavn : string);
249     procedure IndlesKontrolFil(var filnavn : string);
250     procedure IndlesScanningLogFil();
251     procedure SkrivScanningLogFil(var tekst : string);
252     function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
253    
254     public
255     { Public declarations }
256     end;
257    
258     var
259     MainForm: TMainForm;
260    
261     // Globale variabler
262     ruteHverdagArray : Array of String;
263     ruteLordagArray : Array of String;
264     ruteArray : Array of String;
265     korelisteArray : Array of String;
266     stregkoderMedTjekkodeArray : Array of String;
267    
268     implementation
269     {$R *.dfm}
270    
271     function TMainForm.TColorToHex(Color : TColor) : string;
272     begin
273     Result :=
274     IntToHex(GetRValue(Color), 2) +
275     IntToHex(GetGValue(Color), 2) +
276     IntToHex(GetBValue(Color), 2) ;
277     end;
278    
279     function TMainForm.HexToTColor(sColor : string) : TColor;
280     begin
281     Result :=
282     RGB(
283     StrToInt('$'+Copy(sColor, 1, 2)),
284     StrToInt('$'+Copy(sColor, 3, 2)),
285     StrToInt('$'+Copy(sColor, 5, 2))
286     ) ;
287     end;
288    
289     procedure TMainForm.InitForm(Farve,Titel,Url : String);
290     begin
291    
292     // 20150309: startr
293     StaticTextManglendePakker.Caption := '';
294     // 20150309: slut
295    
296     PanelValg1.Color := clBtnFace;
297     if PanelValg1.Enabled = true then
298     begin
299     PanelValg1.Font.Color := clWindowText;
300     end;
301    
302     PanelValg2.Color := clBtnFace;
303     if PanelValg2.Enabled = true then
304     begin
305     PanelValg2.Font.Color := clWindowText;
306     end;
307    
308     PanelValg3.Color := clBtnFace;
309     if PanelValg3.Enabled = true then
310     begin
311     PanelValg3.Font.Color := clWindowText;
312     end;
313    
314     PanelValg4.Color := clBtnFace;
315     if PanelValg4.Enabled = true then
316     begin
317     PanelValg4.Font.Color := clWindowText;
318     end;
319    
320     PanelValg5.Color := clBtnFace;
321     if PanelValg5.Enabled = true then
322     begin
323     PanelValg5.Font.Color := clWindowText;
324     end;
325    
326     PanelValg6.Color := clBtnFace;
327     if PanelValg6.Enabled = true then
328     begin
329     PanelValg6.Font.Color := clWindowText;
330     end;
331    
332     OpdaterListenButton01.Enabled := false;
333    
334     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
335     begin
336     if (StedNavn = '') then
337     begin
338     Titel := BladhusStedNavn[BladhusSted]+': '+Titel;
339     end
340     else
341     begin
342     Titel := StedNavn+': '+Titel;
343     end;
344     //Farve := 'D8D8D8'; // her kan vi evt. overrule ini fil
345     end
346     else
347     begin
348     //ShowMessage(Sted);
349     if (StedNavn = '') then
350     begin
351     if (Sted = 'B') then
352     begin StedNavn := 'Brabrand: '; end
353     else if (Sted = 'E') then
354     begin StedNavn := 'Erritsø: '; end
355     else if (Sted = 'AAL') then
356     begin StedNavn := 'Aalborg: '; end
357     else if (Sted = 'BR') then
358     begin StedNavn := 'Brøndby: '; end
359     else if (Sted = 'BK') then
360     begin StedNavn := 'Bladkompagniet: '; end
361     else if (Sted = 'DBK') then
362     begin StedNavn := 'DBK Køge: '; end
363     else if (Sted = '1') then
364     begin StedNavn := 'Ålborg: '; end
365     else if (Sted = '2') then
366     begin StedNavn := 'Herning: '; end
367     else if (Sted = '3') then
368     begin StedNavn := 'Hinnerup: '; end
369     else if (Sted = '4') then
370     begin StedNavn := 'Vejle: '; end
371     else
372     begin StedNavn := Sted+': '; end
373     end
374     else
375     begin
376     if (RightStr(StedNavn,2) <> ': ') then
377     begin
378     StedNavn := StedNavn + ': ';
379     end;
380     end;
381     Titel := Stednavn + Titel;
382     end;
383    
384     StartScreen();
385     MainForm.Caption := Titel;
386     MainForm.Color := HexToTColor(Farve);
387     MainForm.Farve := Farve;
388     MainForm.Titel := Titel;
389     MainForm.Url := Url;
390    
391     if PrinterstatusStaticText1.Color <> clWhite then // Hvis der IKKE er en alarm skal vi tilpasse baggrundsfarven her
392     begin
393     PrinterstatusStaticText1.Color := MainForm.Color;
394     end;
395    
396     if PakkeshopLevering1.Checked or Pakkernormal1.Checked then
397     PakkeshopText1.Visible := true
398     else
399     PakkeshopText1.Visible := false;
400    
401     CheckBox3.Checked := false;
402     CheckBox3.Enabled := false;
403     Scanogstjekkoden1.Enabled := false;
404    
405     if (Scanningtype = '1') or (Scanningtype = '5') then
406     begin
407     if (ScanTjekkode = '1') then
408     begin
409     CheckBox3.Checked := true;
410     CheckBox3.Enabled := true;
411     Scanogstjekkoden1.Enabled := true;
412     end
413     else
414     begin
415     CheckBox3.Checked := false;
416     CheckBox3.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
417     Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
418     end;
419     end;
420    
421     if Automatisktjekkodestyring1.Checked then
422     begin
423     CheckBox3.Enabled := false;
424     Scanogstjekkoden1.Enabled := false;
425     end;
426    
427     logTekst := 'Overskrift: '+Titel;
428     SkrivScanningLogFil(logTekst);
429    
430     if SpecialVersionSted = '' then
431     begin
432     logTekst := 'Sted: '+Sted+', Stednavn: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase]);
433     SkrivScanningLogFil(logTekst);
434     end;
435    
436     if SpecialVersionSted <> '' then
437     begin
438     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
439     begin
440     if Stednavn = '' then
441     begin
442     logTekst := 'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
443     end
444     else
445     begin
446     logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';
447     end;
448     SkrivScanningLogFil(logTekst);
449     end
450     else
451     begin
452     logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';
453     SkrivScanningLogFil(logTekst);
454     end;
455     end;
456    
457     end;
458    
459     procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
460     begin
461    
462     if Altidprintepakkelabel1.Checked then
463     begin
464     CheckBox2.Checked := true;
465     end
466     else
467     begin
468     CheckBox2.Checked := false;
469     end;
470    
471     end;
472    
473     procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
474     begin
475     StregkodeST.Caption := Stregkode;
476     end;
477    
478     procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);
479     begin
480     if Automatisktjekkodestyring1.Checked then
481     begin
482     CheckBox3.Enabled := false;
483     Scanogstjekkoden1.Enabled := false;
484     end
485     else
486     begin
487     CheckBox3.Enabled := true;
488     Scanogstjekkoden1.Enabled := true;
489     end;
490    
491     end;
492    
493     procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
494     begin
495     // 20150317: start
496     (*
497     if Automatiskvalg1.Checked then
498     begin
499     AutomatiskValg1.Checked := true;
500     PanelValgA.Color := clGreen;
501     PanelValgA.Font.Color := clWhite;
502     end
503     else
504     begin
505     AutomatiskValg1.Checked := false;
506     PanelValgA.Color := clBtnFace;
507     PanelValgA.Font.Color := clWindowText;
508     end;
509     *)
510     // Skal ikke toggle men bare sætte funktionen on
511     // Fravælges ved at vælge en scanningstype
512     AutomatiskValg1.Checked := true;
513     PanelValgA.Color := clGreen;
514     PanelValgA.Font.Color := clWhite;
515     // 20150317: slut
516     end;
517    
518     procedure TMainForm.FormCreate(Sender: TObject);
519     const
520     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
521     var
522     printerInd : integer;
523     i : Integer;
524     // 20150310: start
525     gemScanningtype : String;
526     // 20150310: slut
527    
528     begin
529     // Initierer nogle variabler
530     BladhusSted := 00;
531     Application.ShowHint := True;
532     PrinterstatusStaticText1.Caption := '';
533     PrinterstatusStaticText1.Color := MainForm.Color;
534     // 20150306: start
535     PakkeshopNulstil.BringToFront;
536     // 20150306: slut
537     // 20150310: start
538     RoundCornerOf(PanelManglendePakker1);
539     RoundCornerOf(PanelManglendePakker2);
540     RoundCornerOf(PanelManglendePakker3);
541     RoundCornerOf(PanelManglendePakker4);
542     RoundCornerOf(PanelManglendePakker5);
543     RoundCornerOf(PanelManglendePakker6);
544     // 20150310: slut
545    
546     // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
547     if DirectoryExists('Docs') then
548     begin
549     Manualgenerel1.Enabled := true;
550     Manual1.Enabled := true;
551     end;
552    
553     // Sætter lige en default panel størrelse
554     MainForm.ClientWidth := 1000;
555     MainForm.ClientHeight := 700;
556    
557     // Læser parametre fra ini filen
558     with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
559     try
560     SkrivLog := ReadString('Settings','SkrivLog','0');
561     Sted := ReadString('Settings','Sted','');
562     StedNavn := ReadString('Settings','Stednavn','');
563     UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
564     UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
565     UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
566     UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
567     UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
568     UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
569     UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
570     UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
571     // 20150330: start
572     UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
573     // 20150330: slut
574     UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
575     UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
576     UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
577     UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
578     LabelType := ReadInteger('Settings','LabelType',1);
579     FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
580     TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
581     FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
582     TitelReturDAO := ReadString('Settings','TitelReturDAO','Returforsendelse fra DAO');
583     FarveReturBoghandler := ReadString('Settings','FarveReturBoghandler','F2F5A9');
584     TitelReturBoghandler := ReadString('Settings','TitelReturBoghandler','Returforsendelse fra boghandler');
585     FarveBudlevering := ReadString('Settings','FarveBudlevering','2E9AFE');
586     TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
587     FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
588     TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
589     FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
590     TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
591     SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
592     ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
593     ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
594     Scanningtype := ReadString('Settings','Scanningtype','A');
595     Pakketype := ReadString('Settings','Pakketype','0');
596     TestFunktionen := ReadString('Settings','TestFunktion','0');
597     AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
598     ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
599     ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
600     // 20150317: start
601     ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
602     // 20150317: slut
603     PrinterNavn := ReadString('Settings','PrinterNavn','');
604     TjekPrinter := ReadString('Settings','TjekPrinter','1');
605     TjekUrls := ReadString('Settings','TjekUrls','2');
606    
607     if (SkrivLog = '1') then
608     begin
609     logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
610     try
611     SkrivScanningLogFil(logTekst);
612     Uploadlogfil1.Enabled := true;
613     UploadButton01.Enabled := true;
614     logTekst := 'Programmet er installeret som: '+ParamStr(0);
615     SkrivScanningLogFil(logTekst);
616     // Oprydning i gamle logfiler
617     SletLogfiler('Logs\', ListBox1.Items);
618     except
619     SkrivLog := '0';
620     end;
621     end;
622    
623     if Scanningtype = 'A' then
624     begin
625     Automatiskvalg1.Checked := true;
626     Scanningtype := '1';
627     PanelValgA.Color := clGreen;
628     PanelValgA.Font.Color := clWhite;
629     end;
630    
631     if LabelType = 0 then
632     begin
633     XPosRute := ReadInteger('RuteBred','XPos',1);
634     YPosRute := ReadInteger('RuteBred','YPos',1);
635     FontSizeRute := ReadInteger('RuteBred','FontSize',72);
636     FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);
637     XPosKommentar := ReadInteger('KommentarBred','XPos',1);
638     YPosKommentar := ReadInteger('KommentarBred','YPos',250);
639     FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);
640     XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);
641     YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);
642     FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);
643     XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);
644     YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);
645     FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);
646     FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);
647     XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);
648     YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);
649     FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);
650     XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);
651     YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);
652     FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);
653     XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);
654     YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);
655     FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);
656     end
657     else
658     begin
659     XPosRute := ReadInteger('RuteSmal','XPos',1);
660     YPosRute := ReadInteger('RuteSmal','YPos',1);
661     FontSizeRute := ReadInteger('RuteSmal','FontSize',72);
662     FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);
663     XPosKommentar := ReadInteger('KommentarSmal','XPos',1);
664     YPosKommentar := ReadInteger('KommentarSmal','YPos',250);
665     FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);
666     XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);
667     YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);
668     FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);
669     XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);
670     YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);
671     FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);
672     FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);
673     XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);
674     YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);
675     FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);
676     XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);
677     YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);
678     FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);
679     XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);
680     YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);
681     FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);
682     if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3
683     begin
684     XPosRute := XPosRute * 3;
685     YPosRute := YPosRute * 3;
686     XPosKommentar := XPosKommentar * 3;
687     YPosKommentar := YPosKommentar * 3;
688     XPosBoghandler := XPosBoghandler * 3;
689     YPosBoghandler := YPosBoghandler * 3;
690     XPosKoreliste := XPosKoreliste * 3;
691     YPosKoreliste := YPosKoreliste * 3;
692     XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;
693     YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;
694     XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;
695     YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;
696     XPosSmskode := XPosSmskode * 3;
697     YPosSmskode := YPosSmskode * 3;
698     end;
699     end;
700    
701     if SporgEfterBoghandler = '1' then
702     begin
703     CheckBox1.Checked := true;
704     Sprgefterboghandlernummer1.Checked := true;
705     end
706     else
707     begin
708     CheckBox1.Checked := false;
709     Sprgefterboghandlernummer1.Checked := false;
710     end;
711    
712     if ScanTjekkode = '1' then
713     begin
714     CheckBox3.Checked := true;
715     Scanogstjekkoden1.Checked := true;
716     end
717     else
718     begin
719     CheckBox3.Checked := false;
720     Scanogstjekkoden1.Checked := false;
721     end;
722    
723     if ScanTjekkodeAutomatik = '1' then
724     begin
725     Automatisktjekkodestyring1.Checked := true;
726     CheckBox3.Enabled := false;
727     Scanogstjekkoden1.Enabled := false;
728     end;
729    
730     //
731     // specialversioner
732     //
733     // Hvis programmet skal bruges af andre distributører/scanningssteder end DAO
734     // skal vi ikke bruge hele ini-filen.
735     // Vi laver derfor en speciel opsætning her.
736    
737     SpecialVersionSted := ''; // Tom indikerer normal version hvor scanningtype er angivet i ini filen
738     SpecialVersionScanningtype := 'A'; // 'Automatisk valg'
739     // bruges sammen med nedenstående SpecialVersionSted for specialversioner af programmet
740    
741     // Ved compilering af en specialversion skal efterfølgende
742     // 2 felter sættes efter behov (SpecialVersionSted og SpecialVersionScanningtype).
743     // Det er p.t. ikke nødvendigt at ændre andre steder...
744    
745     // *************************** //
746     //SpecialVersionSted := 'BK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
747     //SpecialVersionSted := 'DBK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
748     //SpecialVersionSted := 'NS'; // NS - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
749     //SpecialVersionSted := 'FD'; // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
750     // *************************** //
751    
752     //SpecialVersionSted := '01'; // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
753     //SpecialVersionSted := '02'; // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
754     //SpecialVersionSted := '03'; // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
755     //SpecialVersionSted := '04'; // DBK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted DBK)
756    
757     //SpecialVersionScanningtype := '1'; // NAT X-PRESS (BRUGES IKKE)
758     //SpecialVersionScanningtype := '2'; // Retur fra DAO (BRUGES IKKE)
759     //SpecialVersionScanningtype := '3'; // Retur fra Kunde (BRUGES IKKE)
760     //SpecialVersionScanningtype := '4'; // DIREKTE
761     //SpecialVersionScanningtype := '5'; // PAKKESHOP (BRUGES IKKE)
762     //SpecialVersionScanningtype := '6'; // Retur fra pakkeshop (BRUGES IKKE)
763    
764     // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
765     // ændrer vi Sted og Scanningtype her:
766    
767     // 20150313: start
768     if SpecialVersionSted = 'NS' then
769     begin
770     SpecialVersionSted := '01';
771     SpecialVersionScanningtype := '4';
772     end;
773     if SpecialVersionSted = 'FD' then
774     begin
775     SpecialVersionSted := '03';
776     SpecialVersionScanningtype := '4';
777     end;
778     // 20150313: slut
779    
780     if SpecialVersionSted = 'BK' then
781     begin
782     //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
783     Sted := SpecialVersionSted;
784     // her skal vi også disable de knapper BK ikke kan bruge
785     PanelValg2.Enabled := false;
786     PanelValg2.Font.Color := clInactiveCaption;
787     PanelValg3.Enabled := false;
788     PanelValg3.Font.Color := clInactiveCaption;
789     PanelValg6.Enabled := false;
790     PanelValg6.Font.Color := clInactiveCaption;
791     // her skal vi også disable de menupunkter BK ikke kan bruge
792     ReturpakkerfraDAO1.Enabled := false;
793     Returpakkerfraboghandler1.Enabled := false;
794     Returpakkerfrapakkeshop1.Enabled := false;
795     if SpecialVersionScanningtype = 'A' then
796     begin
797     Scanningtype := '1';
798     end
799     else
800     begin
801     Scanningtype := SpecialVersionScanningtype;
802     end;
803     end;
804    
805     if SpecialVersionSted = 'DBK' then
806     begin
807     //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
808     Sted := SpecialVersionSted;
809     // her skal vi også disable de knapper DBK ikke kan bruge
810     PanelValg2.Enabled := false;
811     PanelValg2.Font.Color := clInactiveCaption;
812     PanelValg3.Enabled := false;
813     PanelValg3.Font.Color := clInactiveCaption;
814     PanelValg5.Enabled := false;
815     PanelValg5.Font.Color := clInactiveCaption;
816     PanelValg6.Enabled := false;
817     PanelValg6.Font.Color := clInactiveCaption;
818     // her skal vi også disable de menupunkter DBK ikke kan bruge
819     ReturpakkerfraDAO1.Enabled := false;
820     Returpakkerfraboghandler1.Enabled := false;
821     // 20150317: start
822     Pakkeshoplevering1.Enabled := false;
823     Returpakkerfrapakkeshop1.Enabled := false;
824     // 20150317: slut
825     if SpecialVersionScanningtype = 'A' then
826     begin
827     Scanningtype := '1';
828     end
829     else
830     begin
831     Scanningtype := SpecialVersionScanningtype;
832     end;
833     end;
834    
835     if (SpecialVersionSted = '01')
836     or (SpecialVersionSted = '02')
837     or (SpecialVersionSted = '03')
838     or (SpecialVersionSted = '04') then
839     begin
840     BladhusSted := StrToInt(SpecialVersionSted);
841     // her skal vi også disable de knapper 01, 02, 03 og 04 (NS, BK, FD og DBK) ikke kan bruge
842     PanelValg1.Enabled := false;
843     PanelValg1.Font.Color := clInactiveCaption;
844     PanelValg2.Enabled := false;
845     PanelValg2.Font.Color := clInactiveCaption;
846     PanelValg3.Enabled := false;
847     PanelValg3.Font.Color := clInactiveCaption;
848     PanelValg4.Enabled := false;
849     PanelValg4.Font.Color := clInactiveCaption;
850     PanelValg5.Enabled := false;
851     PanelValg5.Font.Color := clInactiveCaption;
852     PanelValg6.Enabled := false;
853     PanelValg6.Font.Color := clInactiveCaption;
854     // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
855     // 20150317: start
856     Automatiskvalg1.Enabled := false;
857     // 20150317: slut
858     Pakkernormal1.Enabled := false;
859     ReturpakkerfraDAO1.Enabled := false;
860     Returpakkerfraboghandler1.Enabled := false;
861     Budlevering1.Enabled := false;
862     Pakkeshoplevering1.Enabled := false;
863     Returpakkerfrapakkeshop1.Enabled := false;
864     if SpecialVersionScanningtype = 'A' then
865     begin
866     Scanningtype := '4';
867     Budlevering1.Enabled := true;
868     PanelValg4.Font.Color := clWindowText;
869     PanelValg4.Enabled := true;
870     end
871     else
872     begin
873     Scanningtype := SpecialVersionScanningtype;
874     PanelValgA.Enabled := false;
875     PanelValgA.Font.Color := clInactiveCaption;
876     AutomatiskValg1.Checked := false;
877     PanelValgA.Color := clBtnFace;
878     if Scanningtype = '1' then
879     begin
880     Pakkernormal1.Enabled := true;
881     PanelValg1.Enabled := true;
882     PanelValg1.Font.Color := clWindowText;
883     end;
884     if Scanningtype = '2' then
885     begin
886     ReturpakkerfraDAO1.Enabled := true;
887     PanelValg2.Enabled := true;
888     PanelValg2.Font.Color := clWindowText;
889     end;
890     if Scanningtype = '3' then
891     begin
892     Returpakkerfraboghandler1.Enabled := true;
893     PanelValg3.Enabled := true;
894     PanelValg3.Font.Color := clWindowText;
895     end;
896     if Scanningtype = '4' then
897     begin
898     Budlevering1.Enabled := true;
899     PanelValg4.Enabled := true;
900     PanelValg4.Font.Color := clWindowText;
901     end;
902     if Scanningtype = '5' then
903     begin
904     Pakkeshoplevering1.Enabled := true;
905     PanelValg5.Enabled := true;
906     PanelValg5.Font.Color := clWindowText;
907     end;
908     if Scanningtype = '6' then
909     begin
910     Returpakkerfrapakkeshop1.Enabled := true;
911     PanelValg6.Enabled := true;
912     PanelValg6.Font.Color := clWindowText;
913     end;
914     end;
915     Sted := SysUtils.Format('%.*d', [2, BladhusSted]);
916     //FarveBudlevering := '2E9AFE'; // her kan vi evt. overrule ini fil
917     end;
918    
919     SetLength(BladhusStedNavn, 5);
920     SetLength(BladhusStedKode, 5);
921     BladhusStedNavn[00] := 'bruges ikke';
922     BladhusStedKode[00] := '';
923     BladhusStedNavn[01] := 'Nordjyske';
924     BladhusStedKode[01] := 'NS';
925     BladhusStedNavn[02] := 'Bladkompagniet';
926     BladhusStedKode[02] := 'BK';
927     BladhusStedNavn[03] := 'Fyens Distribution';
928     BladhusStedKode[03] := 'FD';
929     BladhusStedNavn[04] := 'DBK Køge';
930     BladhusStedKode[04] := 'DBK';
931    
932     if (Trim(Sted) = '')
933     or (Length(Sted) > 3) then
934     begin
935     ShowMessage('Scanningsted "' + Sted + '" er ukendt - programmet afbrydes...');
936     Application.Terminate;
937     end;
938    
939     if TjekUrls = '1' then // Tjekker urls
940     begin
941     TjekkerUrls();
942     if TjekUrls = '-' then // så var der fejl i url - så vi stopper her
943     begin
944     PlaySound(PWideChar(AlarmLyd));
945     MainForm.Color := clRed;
946     RutenummerST.Caption := '';
947     BoghandlerNavnST.Caption := 'Fejl i urls';
948     KommentarST.Caption := 'Se log vinduet';
949     PakkeshopNulstil.Visible := true;
950     exit;
951     end;
952     end
953     else
954     begin // Tjekker ikke urls
955     logTekst := 'Tjekker IKKE urls i denne afvikling.';
956     SkrivScanningLogFil(logTekst);
957     end;
958    
959     if Scanningtype = '6' then
960     begin
961     InitReturFraPakkeshop();
962     end
963     else if Scanningtype = '5' then
964     begin
965     InitPakkeshoplevering();
966     end
967     else if Scanningtype = '4' then
968     begin
969     InitDirektelevering();
970     end
971     else if Scanningtype = '3' then
972     begin
973     InitReturFraKunde();
974     end
975     else if Scanningtype = '2' then
976     begin
977     InitReturFraDao();
978     end
979     else if (Scanningtype = '1') then
980     begin
981     InitNatxpressLevering();
982     end
983     else
984     begin
985     ShowMessage('Scanningtype er af ukendt type - programmet afbrydes...');
986     Application.Terminate;
987     end;
988    
989     if Pakketype = '1' then
990     begin
991     Storepakker1.Checked := true;
992     RadioButton1.Checked := true;
993     end
994     else
995     begin
996     Smpakker1.Checked := true;
997     RadioButton2.Checked := true;
998     end;
999    
1000     if TestFunktionen = '1' then
1001     begin
1002     Testforbindelsen1.Visible := true;
1003     Testprinter1.Visible := true;
1004     Testlyd1.Visible := true;
1005     Testlyd2.Visible := true;
1006     end
1007     else if TestFunktionen = '2' then
1008     begin
1009     Testforbindelsen1.Enabled := false;
1010     Testprinter1.Enabled := false;
1011     Testlyd1.Enabled := false;
1012     Testlyd2.Enabled := false;
1013     end
1014     else
1015     begin
1016     Testforbindelsen1.Visible := false;
1017     Testprinter1.Visible := false;
1018     Testlyd1.Visible := false;
1019     Testlyd2.Visible := false;
1020     end;
1021    
1022     if not FileExists(AlarmLyd) then
1023     begin
1024     AlarmLyd := '';
1025     end;
1026    
1027     if not FileExists(ScannetOkLyd) then
1028     begin
1029     ScannetOkLyd := '';
1030     end;
1031    
1032     if not FileExists(ScannetOkStorLyd) then
1033     begin
1034     ScannetOkStorLyd := '';
1035     end;
1036    
1037     // 20150317: start
1038     if not FileExists(ScannetOkTilTjekkodeLyd) then
1039     begin
1040     ScannetOkTilTjekkodeLyd := '';
1041     end;
1042     // 20150317: slut
1043    
1044     if (PrinterNavn <> '') then
1045     begin
1046     printerInd := Printer.Printers.IndexOf(printerNavn);
1047     if printerInd >= 0 then
1048     Printer.PrinterIndex := printerInd;
1049     end;
1050    
1051     CheckPrintQue('Opstart');
1052    
1053     finally
1054     Free;
1055     end;
1056    
1057     // UBD skal p.t. ikke have adgang til flg. funktioner
1058     if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
1059     begin
1060     ReturpakkerfraDAO1.Visible := false;
1061     Returpakkerfraboghandler1.Visible := false;
1062     Budlevering1.Visible := false;
1063     Storepakker1.Visible := false;
1064     Smpakker1.Visible := false;
1065     Testprinter1.Visible := false;
1066     Pakkeshoplevering1.Visible := false;
1067     Returpakkerfrapakkeshop1.Visible := false;
1068     end;
1069    
1070     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
1071     begin
1072     InitBladhus();
1073     end;
1074    
1075     // 20150310: start
1076     // Opbygger PanelManglendePakker information
1077     gemScanningtype := Scanningtype;
1078    
1079     if PanelValg6.Enabled then
1080     begin
1081     Scanningtype := '6';
1082     IndlesManglendeScanninger();
1083     end;
1084    
1085     if PanelValg5.Enabled then
1086     begin
1087     Scanningtype := '5';
1088     IndlesManglendeScanninger();
1089     end;
1090    
1091     if PanelValg4.Enabled then
1092     begin
1093     Scanningtype := '4';
1094     IndlesManglendeScanninger();
1095     end;
1096    
1097     if PanelValg3.Enabled then
1098     begin
1099     Scanningtype := '3';
1100     IndlesManglendeScanninger();
1101     end;
1102    
1103     if PanelValg2.Enabled then
1104     begin
1105     Scanningtype := '2';
1106     IndlesManglendeScanninger();
1107     end;
1108    
1109     if PanelValg1.Enabled then
1110     begin
1111     Scanningtype := '1';
1112     IndlesManglendeScanninger();
1113     end;
1114    
1115     Scanningtype := gemScanningtype;
1116     // 20150310: slut
1117    
1118     SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1119     SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));
1120    
1121     end;
1122    
1123     procedure TMainForm.FormDestroy(Sender: TObject);
1124     begin
1125     logTekst := 'Program slut';
1126     SkrivScanningLogFil(logTekst);
1127     SendInfoTilServer(Sted, Scanningtype, 'End', '');
1128     end;
1129    
1130     procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
1131     var
1132     RuteNummer : String;
1133     Kommentar : String;
1134     BoghandlerNavn : String;
1135     Koreliste : String;
1136     PrintNyLabel : Boolean;
1137     List1msg : String;
1138     pakkeErScannet : Integer;
1139     pakkeForkertSted : Integer;
1140     tjekkodeMangler : Integer;
1141     SmsKode : String;
1142     DBKbane : String;
1143     Leveringssted : String;
1144     i : Integer;
1145     ClipboardData : String;
1146     numberString : string;
1147     float : Extended;
1148     errorPos : Integer;
1149     GemStregkode : String;
1150     WebSvar : String;
1151     URLStr : String;
1152     Pakketype : String;
1153     Pakkescanningtype : String;
1154    
1155     begin
1156    
1157     if Key = #22 then // ctrl-v
1158     begin
1159     ClipboardData := Clipboard.AsText;
1160     numberString := ClipboardData;
1161     Val(numberString, float, errorPos);
1162     // 20150311: start
1163     // if (ClipboardData <> '') and (errorPos = 0) then
1164     if (ClipboardData <> '') and (errorPos = 0)
1165     or (NumberString = 'Nulstil')
1166     or (NumberString = 'Indtast kundenummer')
1167     or (NumberString = 'Stor pakke')
1168     or (NumberString = 'Lille pakke')
1169     or (NumberString = 'Scan tjekkode')
1170     or (NumberString = 'Automatisk valg')
1171     or (NumberString = 'DAO NAT X-PRESS')
1172     or (NumberString = 'DAO NAT X+PRESS') // 20150323: pga stregkode programmet bruger et forkert karaktersæt
1173     or (NumberString = 'Retur fra DAO')
1174     or (NumberString = 'Retur fra kunde')
1175     or (NumberString = 'DAO DIREKTE')
1176     or (NumberString = 'DAO PAKKESHOP')
1177     or (NumberString = 'Retur fra pakkeshop') then
1178     // 20150311: slut
1179     begin
1180     Stregkode := Stregkode + ClipboardData;
1181     StregkodeST.Caption := StregKode;
1182     end
1183     else
1184     begin
1185     ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1186     end;
1187     end;
1188    
1189     if Key = #13 then // Enter
1190     begin
1191     // 20150306: start
1192     if (Length(Trim(Stregkode)) = 0) then
1193     begin
1194     PlaySound(PWideChar(AlarmLyd));
1195     List1msg := 'Der skal scannes en stregkode...';
1196     ListBox1.Items.Insert(0,List1Msg);
1197     MainForm.Color := clRed;
1198     // 20150316: start
1199     RuteNummerST.Caption := '';
1200     BoghandlerNavnST.Caption := '';
1201     // 20150316: slut
1202     KommentarST.Caption := List1msg;
1203     PakkeshopNulstil.Visible := true;
1204     exit;
1205     end;
1206     // 20150306: slut
1207    
1208     // 20150311: start
1209     if StregKode = 'Nulstil' then
1210     begin
1211     PakkeshopNulstil.Click();
1212     exit;
1213     end;
1214    
1215     if PakkeshopNulstil.Visible then
1216     begin
1217     PlaySound(PWideChar(AlarmLyd));
1218     // 20150312: start
1219     // List1msg := 'HUSK at trykke Nulstil før ny scanning...';
1220     List1msg := 'HUSK at klikke Nulstil før ny scanning...';
1221     // 20150312: slut
1222     ListBox1.Items.Insert(0,List1Msg);
1223     MainForm.Color := clRed;
1224     KommentarST.Caption := List1msg;
1225     // 20150312: start
1226     Stregkode := '';
1227     StregkodeST.Caption := StregKode;
1228     // 20150312: slut
1229     exit;
1230     end;
1231    
1232     if StregKode = 'Lille pakke' then
1233     begin
1234     if RadioButton2.Enabled = true then
1235     begin
1236     InitLillePakke();
1237     end
1238     else
1239     begin
1240     //ShowMessage('Ændring ikke tilladt');
1241     // Her skal komme en 'rød skærm' alarm
1242     PlaySound(PWideChar(AlarmLyd));
1243     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1244     ListBox1.Items.Insert(0,List1Msg);
1245     MainForm.Color := clRed;
1246     // 20150316: start
1247     RuteNummerST.Caption := '';
1248     BoghandlerNavnST.Caption := '';
1249     // 20150316: slut
1250     KommentarST.Caption := List1msg;
1251     PakkeshopNulstil.Visible := true;
1252     end;
1253     Stregkode := '';
1254     StregkodeST.Caption := StregKode;
1255     exit;
1256     end;
1257    
1258     if StregKode = 'Stor pakke' then
1259     begin
1260     if RadioButton1.Enabled = true then
1261     begin
1262     InitStorPakke();
1263     end
1264     else
1265     begin
1266     //ShowMessage('Ændring ikke tilladt');
1267     // Her skal komme en 'rød skærm' alarm
1268     PlaySound(PWideChar(AlarmLyd));
1269     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1270     ListBox1.Items.Insert(0,List1Msg);
1271     MainForm.Color := clRed;
1272     // 20150316: start
1273     RuteNummerST.Caption := '';
1274     BoghandlerNavnST.Caption := '';
1275     // 20150316: slut
1276     KommentarST.Caption := List1msg;
1277     PakkeshopNulstil.Visible := true;
1278     end;
1279     Stregkode := '';
1280     StregkodeST.Caption := StregKode;
1281     exit;
1282     end;
1283    
1284     if StregKode = 'Indtast kundenummer' then
1285     begin
1286     if CheckBox1.Enabled = true then
1287     begin
1288     if (CheckBox1.State = cbChecked) then
1289     begin
1290     CheckBox1.State := cbUnchecked;
1291     end
1292     else
1293     begin
1294     CheckBox1.State := cbChecked;
1295     end;
1296     end
1297     else
1298     begin
1299     //ShowMessage('Ændring ikke tilladt');
1300     // Her skal komme en 'rød skærm' alarm
1301     PlaySound(PWideChar(AlarmLyd));
1302     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1303     ListBox1.Items.Insert(0,List1Msg);
1304     MainForm.Color := clRed;
1305     // 20150316: start
1306     RuteNummerST.Caption := '';
1307     BoghandlerNavnST.Caption := '';
1308     // 20150316: slut
1309     KommentarST.Caption := List1msg;
1310     PakkeshopNulstil.Visible := true;
1311     end;
1312     Stregkode := '';
1313     StregkodeST.Caption := StregKode;
1314     exit;
1315     end;
1316    
1317     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1318     begin
1319     if CheckBox3.Enabled = true then
1320     begin
1321     if (CheckBox3.State = cbChecked) then
1322     begin
1323     CheckBox3.State := cbUnchecked;
1324     end
1325     else
1326     begin
1327     CheckBox3.State := cbChecked;
1328     end;
1329     end
1330     else
1331     begin
1332     //ShowMessage('Ændring ikke tilladt');
1333     // Her skal komme en 'rød skærm' alarm
1334     PlaySound(PWideChar(AlarmLyd));
1335     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1336     ListBox1.Items.Insert(0,List1Msg);
1337     MainForm.Color := clRed;
1338     // 20150316: start
1339     RuteNummerST.Caption := '';
1340     BoghandlerNavnST.Caption := '';
1341     // 20150316: slut
1342     KommentarST.Caption := List1msg;
1343     PakkeshopNulstil.Visible := true;
1344     end;
1345     Stregkode := '';
1346     StregkodeST.Caption := StregKode;
1347     exit;
1348     end;
1349    
1350     if StregKode = 'Automatisk valg' then
1351     begin
1352     if (PanelValgA.Enabled = true) then
1353     begin
1354     PanelValgAClick(PanelValgA);
1355     end
1356     else
1357     begin
1358     //ShowMessage('Ændring ikke tilladt');
1359     // Her skal komme en 'rød skærm' alarm
1360     PlaySound(PWideChar(AlarmLyd));
1361     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1362     ListBox1.Items.Insert(0,List1Msg);
1363     MainForm.Color := clRed;
1364     // 20150316: start
1365     RuteNummerST.Caption := '';
1366     BoghandlerNavnST.Caption := '';
1367     // 20150316: slut
1368     KommentarST.Caption := List1msg;
1369     PakkeshopNulstil.Visible := true;
1370     end;
1371     Stregkode := '';
1372     StregkodeST.Caption := StregKode;
1373     exit;
1374     end;
1375    
1376     // 20150323: start
1377     // if StregKode = 'DAO NAT X-PRESS' then
1378     if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then
1379     // 20150323: slut
1380     begin
1381     if (PanelValg1.Enabled = true) then
1382     begin
1383     PanelValg1Click(PanelValg1);
1384     end
1385     else
1386     begin
1387     //ShowMessage('Ændring ikke tilladt');
1388     // Her skal komme en 'rød skærm' alarm
1389     PlaySound(PWideChar(AlarmLyd));
1390     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1391     ListBox1.Items.Insert(0,List1Msg);
1392     MainForm.Color := clRed;
1393     // 20150316: start
1394     RuteNummerST.Caption := '';
1395     BoghandlerNavnST.Caption := '';
1396     // 20150316: slut
1397     KommentarST.Caption := List1msg;
1398     PakkeshopNulstil.Visible := true;
1399     end;
1400     Stregkode := '';
1401     StregkodeST.Caption := StregKode;
1402     exit;
1403     end;
1404    
1405     if StregKode = 'Retur fra DAO' then
1406     begin
1407     if (PanelValg2.Enabled = true) then
1408     begin
1409     PanelValg2Click(PanelValg2);
1410     end
1411     else
1412     begin
1413     //ShowMessage('Ændring ikke tilladt');
1414     // Her skal komme en 'rød skærm' alarm
1415     PlaySound(PWideChar(AlarmLyd));
1416     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1417     ListBox1.Items.Insert(0,List1Msg);
1418     MainForm.Color := clRed;
1419     // 20150316: start
1420     RuteNummerST.Caption := '';
1421     BoghandlerNavnST.Caption := '';
1422     // 20150316: slut
1423     KommentarST.Caption := List1msg;
1424     PakkeshopNulstil.Visible := true;
1425     end;
1426     Stregkode := '';
1427     StregkodeST.Caption := StregKode;
1428     exit;
1429     end;
1430    
1431     if StregKode = 'Retur fra kunde' then
1432     begin
1433     if (PanelValg3.Enabled = true) then
1434     begin
1435     PanelValg3Click(PanelValg3);
1436     end
1437     else
1438     begin
1439     //ShowMessage('Ændring ikke tilladt');
1440     // Her skal komme en 'rød skærm' alarm
1441     PlaySound(PWideChar(AlarmLyd));
1442     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1443     ListBox1.Items.Insert(0,List1Msg);
1444     MainForm.Color := clRed;
1445     // 20150316: start
1446     RuteNummerST.Caption := '';
1447     BoghandlerNavnST.Caption := '';
1448     // 20150316: slut
1449     KommentarST.Caption := List1msg;
1450     PakkeshopNulstil.Visible := true;
1451     end;
1452     Stregkode := '';
1453     StregkodeST.Caption := StregKode;
1454     exit;
1455     end;
1456    
1457     if StregKode = 'DAO DIREKTE' then
1458     begin
1459     if (PanelValg4.Enabled = true) then
1460     begin
1461     PanelValg4Click(PanelValg4);
1462     end
1463     else
1464     begin
1465     //ShowMessage('Ændring ikke tilladt');
1466     // Her skal komme en 'rød skærm' alarm
1467     PlaySound(PWideChar(AlarmLyd));
1468     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1469     ListBox1.Items.Insert(0,List1Msg);
1470     MainForm.Color := clRed;
1471     // 20150316: start
1472     RuteNummerST.Caption := '';
1473     BoghandlerNavnST.Caption := '';
1474     // 20150316: slut
1475     KommentarST.Caption := List1msg;
1476     PakkeshopNulstil.Visible := true;
1477     end;
1478     Stregkode := '';
1479     StregkodeST.Caption := StregKode;
1480     exit;
1481     end;
1482    
1483     if StregKode = 'DAO PAKKESHOP' then
1484     begin
1485     if (PanelValg5.Enabled = true) then
1486     begin
1487     PanelValg5Click(PanelValg5);
1488     end
1489     else
1490     begin
1491     //ShowMessage('Ændring ikke tilladt');
1492     // Her skal komme en 'rød skærm' alarm
1493     PlaySound(PWideChar(AlarmLyd));
1494     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1495     ListBox1.Items.Insert(0,List1Msg);
1496     MainForm.Color := clRed;
1497     // 20150316: start
1498     RuteNummerST.Caption := '';
1499     BoghandlerNavnST.Caption := '';
1500     // 20150316: slut
1501     KommentarST.Caption := List1msg;
1502     PakkeshopNulstil.Visible := true;
1503     end;
1504     Stregkode := '';
1505     StregkodeST.Caption := StregKode;
1506     exit;
1507     end;
1508    
1509     if StregKode = 'Retur fra pakkeshop' then
1510     begin
1511     if (PanelValg6.Enabled = true) then
1512     begin
1513     PanelValg6Click(PanelValg6);
1514     end
1515     else
1516     begin
1517     //ShowMessage('Ændring ikke tilladt');
1518     // Her skal komme en 'rød skærm' alarm
1519     PlaySound(PWideChar(AlarmLyd));
1520     List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';
1521     ListBox1.Items.Insert(0,List1Msg);
1522     MainForm.Color := clRed;
1523     // 20150316: start
1524     RuteNummerST.Caption := '';
1525     BoghandlerNavnST.Caption := '';
1526     // 20150316: slut
1527     KommentarST.Caption := List1msg;
1528     PakkeshopNulstil.Visible := true;
1529     end;
1530     Stregkode := '';
1531     StregkodeST.Caption := StregKode;
1532     exit;
1533     end;
1534     // 20150311: slut
1535    
1536     if (Length(Stregkode) > 8) then
1537     begin
1538     // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1539     URLStr := Format(UrlFindPakketype,[Stregkode]);
1540     try
1541     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1542     WebSvar := IdHTTP1.Get(URLStr);
1543     //IdHTTP1.Disconnect();
1544     except on e:EIdConnClosedGracefully do
1545     begin
1546     // Her skal vi ikke gøre noget - men vi skal forespørge igen
1547     logTekst := 'EIdConnClosedGracefully i FindPakketype';
1548     SkrivScanningLogFil(logTekst);
1549     try
1550     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1551     WebSvar := IdHTTP1.Get(URLStr);
1552     except on e:EIdConnClosedGracefully do
1553     begin
1554     logTekst := 'EIdConnClosedGracefully i FindPakketype igen';
1555     SkrivScanningLogFil(logTekst);
1556     WebSvar := IdHTTP1.Get(URLStr);
1557     end;
1558     end;
1559     end;
1560     end;
1561     XMLDocument1.LoadFromXML(WebSvar);
1562     try
1563     Pakketype := XMLDocument1.ChildNodes.FindNode('BogpakkePakketype').ChildNodes.FindNode('PakkeType').Text;
1564     except on e:exception do
1565     Pakketype := 'Ukendt';
1566     end;
1567     try
1568     Pakkescanningtype := XMLDocument1.ChildNodes.FindNode('BogpakkePakketype').ChildNodes.FindNode('PakkeScanningtype').Text;
1569     except on e:exception do
1570     Pakketype := 'Ukendt';
1571     end;
1572     if Pakketype = 'Ukendt' then
1573     begin
1574     Pakkescanningtype := Scanningtype;
1575     end;
1576     end
1577     else
1578     begin
1579     Pakkescanningtype := Scanningtype;
1580     end;
1581    
1582     if ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)
1583     or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)
1584     or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)
1585     or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)
1586     or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)
1587     or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) then
1588     begin // Her skal komme en alarm og rød skærm
1589     PlaySound(PWideChar(AlarmLyd));
1590     List1msg := 'Pakketype ' + Pakketype + ' kan ikke scannes på dette scanningsted';
1591     ListBox1.Items.Insert(0,List1Msg);
1592     MainForm.Color := clRed;
1593     // 20150316: start
1594     RuteNummerST.Caption := '';
1595     BoghandlerNavnST.Caption := '';
1596     // 20150316: slut
1597     KommentarST.Caption := List1msg;
1598     PakkeshopNulstil.Visible := true;
1599     // 20150311: start
1600     StregKode := '';
1601     StregkodeST.Caption := StregKode;
1602     // 20150311: slut
1603     exit;
1604     end;
1605    
1606     if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then
1607     begin
1608     GemStregkode := Stregkode;
1609     if Pakketype = 'NatXpress' then
1610     begin
1611     if Scanningtype <> '1' then
1612     begin
1613     Scanningtype := '1';
1614     InitNatxpresslevering();
1615     end;
1616     end
1617     // Retur kan ikke scannes med 'Automatisk valg'
1618     (*
1619     else if Pakketype = 'NatXpressReturDAO' then
1620     begin
1621     if Scanningtype <> '2' then
1622     begin
1623     Scanningtype := '2';
1624     InitReturFraDao();
1625     end;
1626     end
1627     else if Pakketype = 'NatXpressReturKunde' then
1628     begin
1629     if Scanningtype <> '3' then
1630     begin
1631     Scanningtype := '3';
1632     InitReturFraKunde();
1633     end;
1634     end
1635     *)
1636     else if Pakketype = 'Direkte' then
1637     begin
1638     if Scanningtype <> '4' then
1639     begin
1640     Scanningtype := '4';
1641     InitDirektelevering();
1642     end;
1643     end
1644     else if Pakketype = 'Pakkeshop' then
1645     begin
1646     if Scanningtype <> '5' then
1647     begin
1648     Scanningtype := '5';
1649     InitPakkeshoplevering();
1650     end;
1651     end
1652     // Retur kan ikke scannes med 'Automatisk valg'
1653     (*
1654     else if Pakketype = 'PakkeshopRetur' then
1655     begin
1656     if Scanningtype <> '6' then
1657     begin
1658     Scanningtype := '6';
1659     InitReturFraPakkeshop();
1660     end;
1661     end
1662     *)
1663     else
1664     begin // Her skal komme en alarm og rød skærm
1665     PlaySound(PWideChar(AlarmLyd));
1666     List1msg := 'Pakken kan ikke scannes med automatisk valg';
1667     ListBox1.Items.Insert(0,List1Msg);
1668     MainForm.Color := clRed;
1669     // 20150316: start
1670     RuteNummerST.Caption := '';
1671     BoghandlerNavnST.Caption := '';
1672     // 20150316: slut
1673     KommentarST.Caption := List1msg;
1674     PakkeshopNulstil.Visible := true;
1675     // 20150311: start
1676     StregKode := '';
1677     StregkodeST.Caption := StregKode;
1678     // 20150311: slut
1679     exit;
1680     end;
1681     Stregkode := GemStregkode;
1682     end
1683     else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1684     begin
1685     PlaySound(PWideChar(AlarmLyd));
1686     List1msg := 'Pakkenummer ikke gyldigt (for kort)';
1687     ListBox1.Items.Insert(0,List1Msg);
1688     MainForm.Color := clRed;
1689     // 20150316: start
1690     RuteNummerST.Caption := '';
1691     BoghandlerNavnST.Caption := '';
1692     // 20150316: slut
1693     KommentarST.Caption := List1msg;
1694     PakkeshopNulstil.Visible := true;
1695     // 20150312: start
1696     StregKode := '';
1697     StregkodeST.Caption := StregKode;
1698     // 20150312: slut
1699     exit;
1700     end;
1701    
1702     if not Automatiskvalg1.Checked then
1703     begin
1704     if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1705     begin
1706     PlaySound(PWideChar(AlarmLyd));
1707     List1msg := 'Pakke findes som pakketype: ' + Pakketype;
1708     ListBox1.Items.Insert(0,List1Msg);
1709     MainForm.Color := clRed;
1710     // 20150316: start
1711     RuteNummerST.Caption := '';
1712     BoghandlerNavnST.Caption := '';
1713     // 20150316: slut
1714     KommentarST.Caption := List1msg;
1715     PakkeshopNulstil.Visible := true;
1716     // 20150312: start
1717     StregKode := '';
1718     StregkodeST.Caption := StregKode;
1719     // 20150312: slut
1720     exit;
1721     end;
1722     end;
1723    
1724     // 20150311: start
1725     (*
1726     if StregKode = 'Nulstil' then
1727     begin
1728     PakkeshopNulstil.Click();
1729     exit;
1730     end;
1731    
1732     if PakkeshopNulstil.Visible then
1733     begin
1734     PlaySound(PWideChar(AlarmLyd));
1735     List1msg := 'HUSK at trykke Nulstil før ny scanning...';
1736     ListBox1.Items.Insert(0,List1Msg);
1737     MainForm.Color := clRed;
1738     KommentarST.Caption := List1msg;
1739     exit;
1740     end;
1741    
1742     if StregKode = 'Lille pakke' then
1743     begin
1744     InitLillePakke();
1745     exit;
1746     end;
1747    
1748     if StregKode = 'Stor pakke' then
1749     begin
1750     InitStorPakke();
1751     exit;
1752     end;
1753    
1754     if StregKode = 'Indtast kundenummer' then
1755     begin
1756     if (CheckBox1.State = cbChecked) then
1757     begin
1758     CheckBox1.State := cbUnchecked;
1759     end
1760     else
1761     begin
1762     CheckBox1.State := cbChecked;
1763     end;
1764     Stregkode := '';
1765     exit;
1766     end;
1767    
1768     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1769     begin
1770     if (CheckBox3.State = cbChecked) then
1771     begin
1772     CheckBox3.State := cbUnchecked;
1773     end
1774     else
1775     begin
1776     CheckBox3.State := cbChecked;
1777     end;
1778     Stregkode := '';
1779     exit;
1780     end;
1781     *)
1782     // 20150311: slut
1783    
1784    
1785     if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1786     begin
1787     CheckBox3.Checked := false;
1788     for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1789     begin
1790     if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1791     begin
1792     CheckBox3.Checked := true;
1793     Scanogstjekkoden1.Checked := true;
1794     end;
1795     end;
1796     end;
1797    
1798     if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then
1799     begin
1800     // Når vi ikke kræver tjekkode er alt ok her
1801     BoghandlerStregkode := Stregkode;
1802     BoghandlerTjekkode := '';
1803     PakkeshopText1.Caption := 'Stregkode';
1804     PakkeshopNulstil.Visible := false;
1805     Stregkode := '';
1806     InitScreen();
1807     end
1808     else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then
1809     begin
1810     // Når vi ikke kræver tjekkode er alt ok her
1811     PakkeshopStregkode := Stregkode;
1812     PakkeshopTjekkode := '-1';
1813     BoghandlerStregkode := Stregkode;
1814     BoghandlerTjekkode := '-1';
1815     PakkeshopText1.Caption := 'Stregkode';
1816     PakkeshopNulstil.Visible := false;
1817     Stregkode := '';
1818     InitScreen();
1819     end
1820     else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then
1821     if PakkeshopText1.Caption = 'Stregkode' then
1822     begin
1823     if length(Stregkode) > 5 then
1824     begin
1825     PakkeshopStregkode := Stregkode;
1826     BoghandlerStregkode := Stregkode;
1827     PakkeshopText1.Caption := 'Tjekkode';
1828     // 20150317: start
1829     PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1830     // 20150317: slut
1831     end
1832     else
1833     begin
1834     List1msg := 'Du skal scanne en stregkode';
1835     ListBox1.Items.Insert(0,List1Msg);
1836     //logTekst := RightStr(List1Msg, Length(List1Msg)-10);
1837     //SkrivScanningLogFil(logTekst);
1838     PlaySound(PWideChar(AlarmLyd));
1839     PakkeshopNulstil.Visible := true;
1840     MainForm.Color := clRed;
1841     end;
1842     Stregkode := '';
1843     InitScreen();
1844     end
1845     else
1846     begin
1847     if length(Stregkode) = 5 then
1848     begin
1849     PakkeshopTjekkode := Stregkode;
1850     BoghandlerTjekkode := Stregkode;
1851     PakkeshopText1.Caption := 'Stregkode';
1852     if (PakkeshopLevering1.Checked) then
1853     MainForm.Color := HexToTColor(FarvePakkeshoplevering);
1854     if (Pakkernormal1.Checked) then
1855     MainForm.Color := HexToTColor(FarveNormal);
1856     PakkeshopNulstil.Visible := false;
1857     end
1858     else
1859     begin
1860     if (PakkeshopLevering1.Checked) then
1861     List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;
1862     if (Pakkernormal1.Checked) then
1863     List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;
1864     KommentarST.Caption := List1msg;
1865     ListBox1.Items.Insert(0,List1Msg);
1866     //logTekst := RightStr(List1Msg, Length(List1Msg)-10);
1867     //SkrivScanningLogFil(logTekst);
1868     PlaySound(PWideChar(AlarmLyd));
1869     PakkeshopNulstil.Visible := true;
1870     MainForm.Color := clRed;
1871     // 20150323: start
1872     StregKode := '';
1873     StregkodeST.Caption := StregKode;
1874     // 20150323: slut
1875     exit;
1876     end;
1877     Stregkode := '';
1878     InitScreen();
1879     end;
1880    
1881     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
1882     begin
1883     if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1884     StregKode := PakkeshopStregkode;
1885     if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1886     StregKode := BoghandlerStregkode;
1887     StregkodeST.Caption := StregKode;
1888     try
1889     InitScreen();
1890     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, '');
1891     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
1892     // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1893     if Rutenummer = 'sql fejl' then
1894     begin // Her skal komme en alarm og rød skærm
1895     PlaySound(PWideChar(AlarmLyd));
1896     //List1msg := 'SQL fejl: ' + Kommentar;
1897     //ListBox1.Items.Insert(0,List1Msg);
1898     MainForm.Color := clRed;
1899     //KommentarST.Caption := List1msg;
1900     PakkeshopNulstil.Visible := true;
1901     exit;
1902     end;
1903     if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
1904     begin
1905     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1906     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
1907     if pakkeErScannet = 0 then
1908     begin
1909     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
1910     end;
1911     if pakkeErScannet = 0 then
1912     begin
1913     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
1914     end;
1915     pakkeForkertSted := pos('burde være hos', Kommentar);
1916     tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1917     if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1918     begin
1919     PlaySound(PWideChar(AlarmLyd));
1920     PakkeshopNulstil.Visible := true;
1921     MainForm.Color := clRed;
1922     end;
1923     end;
1924     if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1925     begin
1926     MainForm.Color := HexToTColor(Farve);
1927     if Storepakker1.Checked then
1928     begin
1929     PlaySound(PWideChar(ScannetOkStorLyd));
1930     end
1931     else
1932     begin
1933     PlaySound(PWideChar(ScannetOkLyd));
1934     end;
1935     PakkeshopNulstil.Visible := false;
1936     end
1937     else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1938     begin
1939     MainForm.Color := HexToTColor(Farve);
1940     if Storepakker1.Checked then
1941     begin
1942     PlaySound(PWideChar(ScannetOkStorLyd));
1943     end
1944     else
1945     begin
1946     PlaySound(PWideChar(ScannetOkLyd));
1947     end;
1948     PakkeshopNulstil.Visible := false;
1949     end
1950     else if Copy(Kommentar,1,8) = 'OPRETTET' then
1951     begin
1952     List1msg := 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages';
1953     ListBox1.Items.Insert(0,List1Msg);
1954     MainForm.Color := clRed;
1955     PlaySound(PWideChar(AlarmLyd));
1956     PakkeshopNulstil.Visible := true;
1957     end
1958     else if Kommentar = StregKode then // budlevering til 'Ukendt tur'
1959     begin
1960     end
1961     else
1962     begin
1963     MainForm.Color := clRed;
1964     PlaySound(PWideChar(AlarmLyd));
1965     PakkeshopNulstil.Visible := true;
1966     end;
1967     if not PakkeshopNulstil.Visible then
1968     begin
1969     // 20150310: start
1970     // SletStregkodelinieFraListboks2(StregKode);
1971     // 20150310: slut
1972     If (Budlevering1.Checked) then
1973     begin
1974     if Storepakker1.Checked then
1975     begin
1976     PlaySound(PWideChar(ScannetOkStorLyd));
1977     end
1978     else
1979     begin
1980     PlaySound(PWideChar(ScannetOkLyd));
1981     end;
1982     InitLillePakke();
1983     end;
1984     end;
1985     // 20150310: start
1986     SletStregkodelinieFraListboks2(StregKode);
1987     // 20150310: slut
1988     PakkeshopStregkode := '';
1989     PakkeshopTjekkode := '';
1990     BoghandlerStregkode := '';
1991     BoghandlerTjekkode := '';
1992     finally
1993     Stregkode := '';
1994     end
1995     end
1996     end
1997     else
1998     begin
1999     if (Key <> #22) then
2000     begin
2001     Stregkode := Stregkode + Key;
2002     end;
2003     StregkodeST.Caption := StregKode;
2004     end;
2005    
2006     if Key = #8 then // backspace key
2007     begin
2008     StregKode := LeftStr(StregKode,Length(StregKode)-2);
2009     end;
2010    
2011     if Key = #27 then // esc key
2012     begin
2013     Stregkode := '';
2014     end;
2015    
2016     Key := #0;
2017    
2018     end;
2019    
2020     procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
2021     const
2022     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2023     var
2024     WebSvar : String;
2025     URLStr : String;
2026     begin
2027     if UrlSendPrograminfo <> '' then
2028     begin
2029     URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
2030     try
2031     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2032     WebSvar := IdHTTP1.Get(URLStr);
2033     //IdHTTP1.Disconnect();
2034     except on e:exception do
2035     begin
2036     // ShowMessage(e.Message);
2037     // raise exception.CreateFmt('Fejl i forbindelse til server: %s',[e.Message]);
2038     logTekst := 'Der er opstået en fejl i kommunikationen med serveren.' + crlf + crlf + 'Programmet afsluttes... ' + crlf + crlf + 'Program rutine: SendTilServeren' + crlf + 'Fejl: ' + e.Message;
2039     ShowMessage(logTekst);
2040     SkrivScanningLogFil(logTekst);
2041     // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
2042     UrlSendPrograminfo := '';
2043     Application.Terminate;
2044     end;
2045     end;
2046     if (WebSvar <> '') and (pos('Error', WebSvar) > 0) then
2047     begin
2048     ShowMessage(WebSvar);
2049     end;
2050     end;
2051     end;
2052    
2053     procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
2054     var
2055     // 20150309: start
2056     // i:integer;
2057     i : Integer;
2058     wrkAntal : String;
2059     wrkAntalIdag, wrkAntalSenere : Integer;
2060     // 20150309: slut
2061    
2062     begin
2063     if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then
2064     begin
2065     for i := ListBox2.items.count-1 downto 0 do
2066     if pos(StregKode,ListBox2.items[i]) <> 0 then
2067     begin
2068     // 20150309: start
2069     // Ajourføring af tæller for manglende pakker (scanninger)
2070     wrkAntal := StaticTextManglendePakker.Caption;
2071     if (pos('/', wrkAntal) > 0) then // både pakker idag og senere
2072     begin
2073     wrkAntal := wrkAntal + '/'; // tilføjer '/' sidst i feltet af hensyn til split funktionen
2074     wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));
2075     // ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
2076     // ShowMessage(SPLIT('data/another/','/',3));
2077     // ShowMessage(SPLIT('data/another','/',3));
2078     wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));
2079     end
2080     else // kun idag
2081     begin
2082     wrkAntalIdag := StrToInt(wrkAntal);
2083     end;
2084     if pos(StregKode + ' (',ListBox2.items[i]) <> 0 then // pakke til senere levering
2085     begin
2086     //ShowMessage('Senere ' + IntToStr(wrkAntalIdag) + ' ' + IntToStr(wrkAntalSenere));
2087     wrkAntalSenere := wrkAntalSenere - 1;
2088     // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
2089     end
2090     else
2091     begin
2092     // ShowMessage('Idag');
2093     wrkAntalIdag := wrkAntalIdag - 1;
2094     // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
2095     end;
2096     if (wrkAntalSenere > 0) then
2097     begin
2098     StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
2099     end
2100     else
2101     begin
2102     StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
2103     end;
2104     // 20150309: slut
2105    
2106     // 20150310: start
2107     if (Scanningtype = '1') then
2108     begin
2109     PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2110     if (wrkAntalIdag + wrkAntalSenere > 0) then
2111     begin
2112     PanelManglendePakker1.Visible := true;
2113     end
2114     else
2115     begin
2116     PanelManglendePakker1.Visible := false;
2117     end;
2118     end;
2119    
2120     if (Scanningtype = '2') then
2121     begin
2122     PanelManglendePakker2.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2123     if (wrkAntalIdag + wrkAntalSenere > 0) then
2124     begin
2125     PanelManglendePakker2.Visible := true;
2126     end
2127     else
2128     begin
2129     PanelManglendePakker2.Visible := false;
2130     end;
2131     end;
2132    
2133     if (Scanningtype = '3') then
2134     begin
2135     PanelManglendePakker3.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2136     if (wrkAntalIdag + wrkAntalSenere > 0) then
2137     begin
2138     PanelManglendePakker3.Visible := true;
2139     end
2140     else
2141     begin
2142     PanelManglendePakker3.Visible := false;
2143     end;
2144     end;
2145    
2146     if (Scanningtype = '4') then
2147     begin
2148     PanelManglendePakker4.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2149     if (wrkAntalIdag + wrkAntalSenere > 0) then
2150     begin
2151     PanelManglendePakker4.Visible := true;
2152     end
2153     else
2154     begin
2155     PanelManglendePakker4.Visible := false;
2156     end;
2157     end;
2158    
2159     if (Scanningtype = '5') then
2160     begin
2161     PanelManglendePakker5.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2162     if (wrkAntalIdag + wrkAntalSenere > 0) then
2163     begin
2164     PanelManglendePakker5.Visible := true;
2165     end
2166     else
2167     begin
2168     PanelManglendePakker5.Visible := false;
2169     end;
2170     end;
2171    
2172     if (Scanningtype = '6') then
2173     begin
2174     PanelManglendePakker6.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
2175     if (wrkAntalIdag + wrkAntalSenere > 0) then
2176     begin
2177     PanelManglendePakker6.Visible := true;
2178     end
2179     else
2180     begin
2181     PanelManglendePakker6.Visible := false;
2182     end;
2183     end;
2184     // 20150310: slut
2185     ListBox2.items.delete(i);
2186     end;
2187     end;
2188     end;
2189    
2190     procedure TMainForm.StartScreen();
2191     begin
2192     if Org_RuteNummerST = '' then
2193     Org_RuteNummerST := RuteNummerST.Caption;
2194     if Org_BoghandlerNavnST = '' then
2195     Org_BoghandlerNavnST := BoghandlerNavnST.Caption;
2196     if Org_KommentarST = '' then
2197     Org_KommentarST := KommentarST.Caption;
2198     RuteNummerST.Caption := Org_RuteNummerST;
2199     BoghandlerNavnST.Caption := Org_BoghandlerNavnST;
2200     KommentarST.Caption := Org_KommentarST;
2201     end;
2202    
2203     procedure TMainForm.InitScreen();
2204     begin
2205     RuteNummerST.Caption := '';
2206     KommentarST.Caption := '';
2207     BoghandlerNavnST.Caption := '';
2208     end;
2209    
2210     procedure TMainForm.InitBladhus();
2211     var
2212     LogFilnavn : string;
2213    
2214     begin
2215     Altidprintepakkelabel1.Enabled := false;
2216     Pakkernormal1.Visible := false;
2217     ReturpakkerfraDAO1.Visible := false;
2218     Returpakkerfraboghandler1.Visible := false;
2219     Sprgefterboghandlernummer1.Enabled := false;
2220     ListBox1.Visible := true;
2221     // TestFunktionen := '1';
2222     // 20150317: start
2223     (*
2224     if TestFunktionen = '1' then
2225     begin
2226     Testforbindelsen1.Visible := true;
2227     Testprinter1.Visible := true;
2228     Testlyd1.Visible := true;
2229     Testlyd2.Visible := true;
2230     end
2231     else if TestFunktionen = '2' then
2232     begin
2233     Testforbindelsen1.Enabled := false;
2234     Testprinter1.Enabled := false;
2235     Testlyd1.Enabled := false;
2236     Testlyd2.Enabled := false;
2237     end
2238     else
2239     begin
2240     Testforbindelsen1.Visible := false;
2241     Testprinter1.Visible := false;
2242     Testlyd1.Visible := false;
2243     Testlyd2.Visible := false;
2244     end;
2245     Testprinter1.Visible := false;
2246     AlarmLyd := 'Sounds\Alarm.wav';
2247     if not FileExists(AlarmLyd) then
2248     begin
2249     AlarmLyd := '';
2250     end;
2251     ScannetOkLyd := 'Sounds\Ok.wav';
2252     if not FileExists(ScannetOkLyd) then
2253     begin
2254     ScannetOkLyd := '';
2255     end;
2256     ScannetOkStorLyd := 'Sounds\Ok_stor.wav';
2257     if not FileExists(ScannetOkStorLyd) then
2258     begin
2259     ScannetOkStorLyd := '';
2260     end;
2261     *)
2262     // 20150317: slut
2263     if Budlevering1.Checked then
2264     begin
2265     IndlesScanningLogFil();
2266     end;
2267    
2268     //
2269     // Bladhus ***
2270     //
2271     case BladhusSted of
2272     01 :
2273     begin; // NS
2274     Testprinter1.Visible := true;
2275     DownloadButton01.Enabled := true;
2276     OpdaterListenButton01.Enabled := true;
2277     IdFTP1.Passive := true;
2278     IdFTP1.PassiveUseControlHost := true;
2279     BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
2280     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2281     DownloadBladhusKontrolfil();
2282     IndlesManglendeScanninger();
2283     end;
2284     02 :
2285     begin; // BK
2286     Testprinter1.Visible := true;
2287     Smpakker1.Enabled := true;
2288     Storepakker1.Enabled := true;
2289     RadioButton1.Enabled := true;
2290     RadioButton2.Enabled := true;
2291     DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2292     OpdaterListenButton01.Enabled := true;
2293     IdFTP1.Passive := true;
2294     IdFTP1.PassiveUseControlHost := true;
2295     IndlesManglendeScanninger();
2296     end;
2297     03 :
2298     begin; // FD
2299     Testprinter1.Visible := true;
2300     if (getProddag() = 'lørdag') then
2301     begin
2302     DownloadButton03.Visible := false;
2303     end
2304     else
2305     begin
2306     DownloadButton03.Visible := false;
2307     end;
2308     DownloadButton01.Enabled := true;
2309     OpdaterListenButton01.Enabled := true;
2310     IdFTP1.Passive := true;
2311     IdFTP1.PassiveUseControlHost := true;
2312     BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
2313     BladhusRuteskiftfil_lokal := 'RuteSkift.txt';
2314     if (getProddag() = 'lørdag') then
2315     begin
2316     //DownloadBladhusRuteskiftfil(); // Skal ikke bruges endnu
2317     end;
2318     BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
2319     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2320     DownloadBladhusKontrolfil();
2321     IndlesManglendeScanninger();
2322     end;
2323     04 : begin; // DBK
2324     Testprinter1.Visible := true;
2325     Smpakker1.Enabled := true;
2326     Storepakker1.Enabled := true;
2327     RadioButton1.Enabled := true;
2328     RadioButton2.Enabled := true;
2329     DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2330     OpdaterListenButton01.Enabled := true;
2331     IdFTP1.Passive := true;
2332     IdFTP1.PassiveUseControlHost := true;
2333     end;
2334     else
2335     //ShowMessage('Ukendt Bladhus sted ???') ;
2336     end;
2337    
2338     end;
2339    
2340     procedure TMainForm.HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
2341     var
2342     WebSvar : String;
2343     URLStr : String;
2344     pakkestorrelse : String;
2345     PrintNyLabelInteger : Integer;
2346     begin
2347     if RadioButton1.Checked then
2348     begin
2349     pakkestorrelse := 'Stor';
2350     end;
2351     if RadioButton2.Checked then
2352     begin
2353     pakkestorrelse := 'Lille';
2354     end;
2355     if Pakkernormal1.Checked then
2356     begin
2357     if (BoghandlerTjekkode = '') then
2358     begin
2359     BoghandlerTjekkode := '-1';
2360     end;
2361     URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2362     end
2363     else if ReturpakkerfraDAO1.Checked then
2364     begin
2365     URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2366     end
2367     else if Returpakkerfraboghandler1.Checked then
2368     begin
2369     URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2370     end
2371     else if Budlevering1.Checked then
2372     begin
2373     URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2374     end
2375     else if Pakkeshoplevering1.Checked then
2376     begin
2377     URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2378     end
2379     else if Returpakkerfrapakkeshop1.Checked then
2380     begin
2381     URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2382     end
2383     else
2384     begin
2385     exit;
2386     end;
2387     try
2388     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2389     WebSvar := IdHTTP1.Get(URLStr);
2390     //IdHTTP1.Disconnect();
2391     except on e:EIdConnClosedGracefully do
2392     begin
2393     // Her skal vi ikke gøre noget - men vi skal forespørge igen
2394     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer';
2395     SkrivScanningLogFil(logTekst);
2396     try
2397     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2398     WebSvar := IdHTTP1.Get(URLStr);
2399     except on e:EIdConnClosedGracefully do
2400     begin
2401     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer igen';
2402     SkrivScanningLogFil(logTekst);
2403     WebSvar := IdHTTP1.Get(URLStr);
2404     end;
2405     end;
2406     end;
2407     end;
2408     XMLDocument1.LoadFromXML(WebSvar);
2409     try
2410     if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
2411     begin
2412     RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2413     Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2414     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2415     BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2416     PrintNyLabel := False;
2417     // 20150310: start
2418     if Pakkeshoplevering1.Checked then
2419     begin
2420     // 20150310: slut
2421     try
2422     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2423     except on e:exception do
2424     PrintNyLabelInteger := 0;
2425     end;
2426     if (PrintNyLabelInteger = 1) then
2427     begin
2428     PrintNyLabel := True;
2429     end;
2430     // 20150310: start
2431     end;
2432     // 20150310: slut
2433     end
2434     else
2435     begin
2436     RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
2437     Koreliste := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Koreliste').Text;
2438     Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2439     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2440     Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2441     if Budlevering1.Checked then
2442     begin
2443     try
2444     SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
2445     except on e:exception do
2446     SmsKode := '';
2447     end;
2448     try
2449     DBKbane := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('DBKbane').Text;
2450     except on e:exception do
2451     DBKbane := '';
2452     end;
2453     end;
2454     PrintNyLabel := False;
2455     try
2456     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('PrintPakkeLabel').Text);
2457     except on e:exception do
2458     PrintNyLabelInteger := 0;
2459     end;
2460     PrintNyLabel := False;
2461     if (PrintNyLabelInteger = 1) then
2462     begin
2463     PrintNyLabel := True;
2464     end;
2465     end;
2466     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2467     begin
2468     if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2469     begin
2470     Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2471     PrintNyLabel := False;
2472     end;
2473     end
2474     else if (Budlevering1.Checked) and (Leveringssted <> Sted) then
2475     begin
2476     if (Leveringssted = 'E') and (Sted = 'DBK') then
2477     begin
2478     // Det er ok at DBK scanner pakker til E (Schenker)
2479     end
2480     else
2481     begin
2482     Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2483     PrintNyLabel := False;
2484     end;
2485     end;
2486     except on e:exception do
2487     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
2488     end;
2489     end;
2490    
2491    
2492     procedure TMainForm.UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghNr : String);
2493     var
2494     List1Msg, List1Pakkestorrelse : String;
2495     begin
2496     RuteNummerST.Caption := RuteNummer;
2497     KommentarST.Caption := Kommentar;
2498     KommentarST.Caption := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2499     KommentarST.Caption := StringReplace(KommentarST.Caption, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2500     //Label1.Caption := Kommentar; // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2501     BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2502     List1msg := TimeToStr(now) + '; ';
2503     if Pakkeshoplevering1.Checked then
2504     List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2505     List1Pakkestorrelse := '';
2506     if RadioButton1.Checked then
2507     begin
2508     List1Pakkestorrelse := 'Stor pakke';
2509     end;
2510     if RadioButton2.Checked then
2511     begin
2512     List1Pakkestorrelse := 'Lille pakke';
2513     end;
2514     List1msg := List1msg + BoghandlerNavn + '; ';
2515     if ReturpakkerfraDAO1.Checked then
2516     begin
2517     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2518     end;
2519     if Returpakkerfraboghandler1.Checked then
2520     begin
2521     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2522     end;
2523     if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then
2524     List1msg := List1msg + '; ' + List1Pakkestorrelse;
2525     if length(BoghNr) > 0 then
2526     begin
2527     List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2528     end;
2529     if Budlevering1.Checked then
2530     begin
2531     List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2532     if (RadioButton1.Checked) then
2533     begin
2534     List1msg := List1msg + '; Stor pakke';
2535     end;
2536     if (RadioButton2.Checked) then
2537     begin
2538     List1msg := List1msg + '; Lille pakke';
2539     end;
2540     end;
2541     if Returpakkerfrapakkeshop1.Checked then
2542     begin
2543     List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2544     end;
2545     if Pakkernormal1.Checked then
2546     begin
2547     if (Kommentar = '***** Kommentar *****') // fra test printer funktionen
2548     or (BoghandlerNavn = 'Forbindelse ok') // fra test forbindelse funktionen
2549     or (BoghandlerNavn = 'Fejl i forbindelse til server') then // fra test forbindelse funktionen
2550     begin
2551     List1msg := List1msg + '; ' + Stregkode + '; ' + Kommentar;
2552     end
2553     else
2554     begin
2555     List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2556     end;
2557     end;
2558     ListBox1.Items.Insert(0,List1Msg);
2559     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2560     SkrivScanningLogFil(logTekst);
2561     end;
2562    
2563     procedure TMainForm.UploadButton01Click(Sender: TObject);
2564     begin
2565     UploadLogfilTilDAO();
2566     UploadInifilTilDAO();
2567     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
2568     end;
2569    
2570     procedure TMainForm.PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2571     var
2572     ClickedOK: Boolean;
2573     pakkeErScannet : Integer;
2574     pakkeForkertSted : Integer;
2575     List1Msg : String;
2576     kontrolKoreliste : string;
2577     nytRuteNummer, nyFarve : String;
2578     begin
2579     if Budlevering1.Checked then
2580     RuteNummerST.Color := HexToTColor(Farve);
2581    
2582     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2583     if pakkeErScannet = 0 then
2584     begin
2585     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2586     end;
2587     if pakkeErScannet = 0 then
2588     begin
2589     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2590     end;
2591     pakkeForkertSted := pos('burde være hos', Kommentar);
2592    
2593     // 20150306: start
2594     // if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) then
2595     if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2596     // 20150306: slut
2597     begin
2598     if (RuteNummer = 'Ukendt') then
2599     begin
2600     repeat
2601     begin
2602     ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2603     end
2604     until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2605     if not ClickedOK then
2606     begin
2607     exit;
2608     end;
2609     if (Length(BoghandlerNummer) > 2) then
2610     begin
2611     InitScreen();
2612     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2613     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2614     end;
2615     end;
2616     end
2617     else
2618     if Budlevering1.Checked then
2619     begin
2620     if (BoghandlerNavn = 'Ukendt pakke') then
2621     begin
2622     PrintNyLabel := false;
2623     // 20150306: start
2624     // PlaySound(PWideChar(AlarmLyd));
2625     PlaySound(PWideChar(AlarmLyd));
2626     MainForm.Color := clRed;
2627     PakkeshopNulstil.Visible := true;
2628     // 20150306: slut
2629     end
2630     else
2631     begin
2632     nytRuteNummer := retRutenummer(RuteNummer);
2633     if (nytRuteNummer <> RuteNummer) then
2634     begin
2635     PrintNyLabel := true;
2636     RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2637     nyFarve := Farve;
2638     RuteNummerST.Color := HexToTColor(nyFarve);
2639     List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2640     RuteNummer := nytRuteNummer;
2641     ListBox1.Items.Insert(0,List1Msg);
2642     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2643     SkrivScanningLogFil(logTekst);
2644     // 20150213: start
2645     if (PrinterNavn = 'Ingen') then
2646     begin
2647     PrintNyLabel := false;
2648     end;
2649     // 20150313: slut
2650     // 20150306: start
2651     // PlaySound(PWideChar(AlarmLyd));
2652     if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2653     begin
2654     PlaySound(PWideChar(AlarmLyd));
2655     MainForm.Color := clRed;
2656     PakkeshopNulstil.Visible := true;
2657     end;
2658     // 20150306: slut
2659     end;
2660     kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2661     if (kontrolKoreliste <> RuteNummer) then
2662     begin
2663     PrintNyLabel := true;
2664     List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2665     if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2666     begin
2667     PrintNyLabel := false;
2668     RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2669     end
2670     else
2671     begin
2672     RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2673     end;
2674     ListBox1.Items.Insert(0,List1Msg);
2675     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2676     SkrivScanningLogFil(logTekst);
2677     // 20150306: start
2678     // PlaySound(PWideChar(AlarmLyd));
2679     if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2680     begin
2681     PlaySound(PWideChar(AlarmLyd));
2682     MainForm.Color := clRed;
2683     PakkeshopNulstil.Visible := true;
2684     end;
2685     // 20150306: slut
2686     // 20150306: start
2687     // end
2688     // else
2689     // begin
2690     end;
2691     end;
2692    
2693     end;
2694    
2695     if Budlevering1.Checked then
2696     begin
2697     case BladhusSted of
2698     00 : begin;
2699     // 20150304: start
2700     // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2701     // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2702     // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2703     // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2704     if PrintNyLabel or (RuteNummer = 'Rutenr') then
2705     // 20150304: slut
2706     begin
2707     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2708     end;
2709     end;
2710     01 : begin;
2711     if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2712     // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2713     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2714     begin
2715     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2716     end;
2717     end;
2718     02 : begin;
2719     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2720     begin
2721     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2722     end;
2723     end;
2724     03 : begin;
2725     if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2726     // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2727     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2728     begin
2729     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2730     end;
2731     end;
2732     04 : begin;
2733     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2734     begin
2735     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2736     end;
2737     end;
2738     else
2739     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2740     end;
2741     end;
2742    
2743     // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2744     if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2745     begin
2746     exit;
2747     end;
2748    
2749     if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2750     begin
2751     end
2752     else
2753     begin
2754     if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or CheckBox2.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2755     begin
2756     logTekst := 'Printer label type ';
2757     if (CheckBox2.Checked) then
2758     begin
2759     logTekst := logTekst + 'Alle ';
2760     end
2761     else if (PrintNyLabel) then
2762     begin
2763     logTekst := logTekst + 'Rute ';
2764     end
2765     else
2766     begin
2767     logTekst := logTekst + 'Ukendt ';
2768     end;
2769     logTekst := logTekst + ' for '+BoghandlerNavn;
2770     SkrivScanningLogFil(logTekst);
2771     with Printer do
2772     begin
2773     BeginDoc;
2774     Canvas.Font.Size := FontSizeRute;
2775     if (Length(RuteNummer) > 7) then
2776     begin
2777     Canvas.Font.Size := FontSizeRuteLille;
2778     end;
2779     Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2780     Canvas.Font.Size := FontSizeKommentar;
2781     Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2782     if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then
2783     begin
2784     Kommentar := '';
2785     end;
2786     if (BoghandlerNavn = 'PAKKE ER SCANNET') then
2787     begin
2788     BoghandlerNavn := '';
2789     end;
2790     Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2791     Canvas.Font.Size := FontSizeBoghandler;
2792     Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2793     EndDoc;
2794     end;
2795     end;
2796     end;
2797    
2798     end;
2799    
2800     procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2801     begin
2802     with Printer do
2803     begin
2804     BeginDoc;
2805     Canvas.Font.Size := FontSizeRuteLille;
2806     if (kontrolKoreliste <> '') then
2807     begin
2808     Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);
2809     end
2810     else
2811     begin
2812     Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2813     end;
2814     Canvas.Font.Size := FontSizeKorelisteLille;
2815     Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);
2816     if (Sted = 'DBK') or (Sted = '04') then
2817     begin
2818     Canvas.Font.Size := FontSizeSorteringsfelt1;
2819     Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane); // sorteringsoplysning 1
2820     Canvas.Font.Size := FontSizeSorteringsfelt1;
2821     Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted); // sorteringsoplysning 2
2822     end;
2823     Canvas.Font.Size := FontSizeKommentar;
2824     Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2825     // 20150304: start
2826     Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);
2827     // 20150304: slut
2828     Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2829     if SmsKode <> '' then
2830     begin
2831     Canvas.Font.Size := FontSizeSmskode;
2832     Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));
2833     end;
2834     Canvas.Font.Size := FontSizeBoghandler;
2835     Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2836     EndDoc;
2837     end;
2838     end;
2839    
2840    
2841     procedure TMainForm.RadioButton1Click(Sender: TObject);
2842     begin
2843     Storepakker1.Checked := true;
2844     RadioButton1.Checked := true;
2845     end;
2846    
2847     procedure TMainForm.RadioButton2Click(Sender: TObject);
2848     begin
2849     Smpakker1.Checked := true;
2850     RadioButton2.Checked := true;
2851     end;
2852    
2853    
2854     procedure TMainForm.CheckBox1Click(Sender: TObject);
2855     begin
2856     if CheckBox1.Checked then
2857     begin
2858     Sprgefterboghandlernummer1.Checked := true;
2859     end
2860     else
2861     begin
2862     Sprgefterboghandlernummer1.Checked := false;
2863     end;
2864     end;
2865    
2866    
2867     procedure TMainForm.CheckBox2Click(Sender: TObject);
2868     begin
2869     if CheckBox2.Checked then
2870     begin
2871     Altidprintepakkelabel1.Checked := true;
2872     end
2873     else
2874     begin
2875     Altidprintepakkelabel1.Checked := false;
2876     end;
2877    
2878     end;
2879    
2880     procedure TMainForm.CheckBox3Click(Sender: TObject);
2881     begin
2882     if CheckBox3.Checked then
2883     begin
2884     Scanogstjekkoden1.Checked := true;
2885     end
2886     else
2887     begin
2888     Scanogstjekkoden1.Checked := false;
2889     end;
2890     end;
2891    
2892     procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);
2893     begin
2894     Scanningtype := '5';
2895     InitPakkeshoplevering();
2896     NulstilAutomatiskValg();
2897     end;
2898    
2899     procedure TMainForm.NulstilAutomatiskValg();
2900     begin
2901     Automatiskvalg1.Checked := false;
2902     PanelValgA.Color := clBtnFace;
2903     PanelValgA.Font.Color := clWindowText;
2904     // 20150317: start
2905     if (SpecialVersionSted = '01')
2906     or (SpecialVersionSted = '02')
2907     or (SpecialVersionSted = '03')
2908     or (SpecialVersionSted = '04') then
2909     begin
2910     // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2911     PanelValgA.Enabled := false;
2912     PanelValgA.Font.Color := clInactiveCaption;
2913     Automatiskvalg1.Enabled := false;
2914     end;
2915     // 20150317: slut
2916     end;
2917    
2918     procedure TMainForm.TjekkerUrls();
2919     const
2920     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2921     var
2922     urlFejl : Integer;
2923     begin
2924     urlFejl := 0;
2925     //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2926     ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2927    
2928     // Tjekker urls
2929     logTekst := 'Tjekker urls.';
2930     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2931     SkrivScanningLogFil(logTekst);
2932    
2933     // Tjekker UrlNormal
2934     if PanelValg1.Enabled = true then
2935     begin
2936     if CheckUrl(UrlNormal) then
2937     begin
2938     logTekst := 'UrlNormal accepteret: ' + UrlNormal;
2939     SkrivScanningLogFil(logTekst);
2940     end
2941     else
2942     begin
2943     inc(urlFejl); // Optæller antal fejl
2944     logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;
2945     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2946     if TjekUrls = '1' then
2947     begin
2948     TjekUrls := '-'; // markerer at der var fejl
2949     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2950     end;
2951     SkrivScanningLogFil(logTekst);
2952     if TjekUrls = '1' then
2953     begin
2954     ShowMessage(logTekst);
2955     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2956     Application.Terminate;
2957     exit;
2958     end;
2959     end;
2960     end;
2961    
2962     // Tjekker UrlReturDAO
2963     if PanelValg2.Enabled = true then
2964     begin
2965     if CheckUrl(UrlReturDAO) then
2966     begin
2967     logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;
2968     SkrivScanningLogFil(logTekst);
2969     end
2970     else
2971     begin
2972     inc(urlFejl); // Optæller antal fejl
2973     logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;
2974     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2975     if TjekUrls = '1' then
2976     begin
2977     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2978     end;
2979     SkrivScanningLogFil(logTekst);
2980     if TjekUrls = '1' then
2981     begin
2982     ShowMessage(logTekst);
2983     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2984     Application.Terminate;
2985     exit;
2986     end;
2987     end;
2988     end;
2989    
2990     // Tjekker UrlReturBoghandler
2991     if PanelValg3.Enabled = true then
2992     begin
2993     if CheckUrl(UrlReturBoghandler) then
2994     begin
2995     logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;
2996     SkrivScanningLogFil(logTekst);
2997     end
2998     else
2999     begin
3000     inc(urlFejl); // Optæller antal fejl
3001     logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;
3002     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3003     if TjekUrls = '1' then
3004     begin
3005     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3006     end;
3007     SkrivScanningLogFil(logTekst);
3008     if TjekUrls = '1' then
3009     begin
3010     ShowMessage(logTekst);
3011     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3012     Application.Terminate;
3013     exit;
3014     end;
3015     end;
3016     end;
3017    
3018     // Tjekker UrlBudlevering
3019     if PanelValg4.Enabled = true then
3020     begin
3021     if CheckUrl(UrlBudlevering) then
3022     begin
3023     logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;
3024     SkrivScanningLogFil(logTekst);
3025     end
3026     else
3027     begin
3028     inc(urlFejl); // Optæller antal fejl
3029     logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;
3030     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3031     if TjekUrls = '1' then
3032     begin
3033     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3034     end;
3035     SkrivScanningLogFil(logTekst);
3036     if TjekUrls = '1' then
3037     begin
3038     ShowMessage(logTekst);
3039     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3040     Application.Terminate;
3041     exit;
3042     end;
3043     end;
3044     end;
3045    
3046     // Tjekker UrlPakkeshoplevering
3047     if PanelValg5.Enabled = true then
3048     begin
3049     if CheckUrl(UrlPakkeshoplevering) then
3050     begin
3051     logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;
3052     SkrivScanningLogFil(logTekst);
3053     end
3054     else
3055     begin
3056     inc(urlFejl); // Optæller antal fejl
3057     logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;
3058     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3059     if TjekUrls = '1' then
3060     begin
3061     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3062     end;
3063     SkrivScanningLogFil(logTekst);
3064     if TjekUrls = '1' then
3065     begin
3066     ShowMessage(logTekst);
3067     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3068     Application.Terminate;
3069     exit;
3070     end;
3071     end;
3072     end;
3073    
3074     // Tjekker UrlReturPakkeshop
3075     if PanelValg6.Enabled = true then
3076     begin
3077     if CheckUrl(UrlReturPakkeshop) then
3078     begin
3079     logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;
3080     SkrivScanningLogFil(logTekst);
3081     end
3082     else
3083     begin
3084     inc(urlFejl); // Optæller antal fejl
3085     logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;
3086     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3087     if TjekUrls = '1' then
3088     begin
3089     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3090     end;
3091     SkrivScanningLogFil(logTekst);
3092     if TjekUrls = '1' then
3093     begin
3094     ShowMessage(logTekst);
3095     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3096     Application.Terminate;
3097     exit;
3098     end;
3099     end;
3100     end;
3101    
3102     // Tjekker UrlManglendeScanninger
3103     if (PanelValg1.Enabled = true)
3104     or (PanelValg4.Enabled = true) then
3105     begin
3106     if CheckUrl(UrlManglendeScanninger) then
3107     begin
3108     logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;
3109     SkrivScanningLogFil(logTekst);
3110     end
3111     else
3112     begin
3113     inc(urlFejl); // Optæller antal fejl
3114     logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;
3115     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3116     if TjekUrls = '1' then
3117     begin
3118     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3119     end;
3120     SkrivScanningLogFil(logTekst);
3121     if TjekUrls = '1' then
3122     begin
3123     ShowMessage(logTekst);
3124     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3125     Application.Terminate;
3126     exit;
3127     end;
3128     end;
3129     end;
3130    
3131     // Tjekker UrlPakkeshopManglendeScanninger
3132     if PanelValg5.Enabled = true then
3133     begin
3134     if CheckUrl(UrlPakkeshopManglendeScanninger) then
3135     begin
3136     logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;
3137     SkrivScanningLogFil(logTekst);
3138     end
3139     else
3140     begin
3141     inc(urlFejl); // Optæller antal fejl
3142     logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;
3143     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3144     if TjekUrls = '1' then
3145     begin
3146     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3147     end;
3148     SkrivScanningLogFil(logTekst);
3149     if TjekUrls = '1' then
3150     begin
3151     ShowMessage(logTekst);
3152     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3153     Application.Terminate;
3154     exit;
3155     end;
3156     end;
3157     end;
3158    
3159     // Tjekker UrlPakkeshopManglendeReturScanninger
3160     if PanelValg6.Enabled = true then
3161     begin
3162     if CheckUrl(UrlPakkeshopManglendeReturScanninger) then
3163     begin
3164     logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;
3165     SkrivScanningLogFil(logTekst);
3166     end
3167     else
3168     begin
3169     inc(urlFejl); // Optæller antal fejl
3170     logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;
3171     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3172     if TjekUrls = '1' then
3173     begin
3174     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3175     end;
3176     SkrivScanningLogFil(logTekst);
3177     if TjekUrls = '1' then
3178     begin
3179     ShowMessage(logTekst);
3180     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3181     Application.Terminate;
3182     exit;
3183     end;
3184     end;
3185     end;
3186    
3187     // Tjekker UrlEKLoverforsel
3188     if PanelValg1.Enabled = true then
3189     begin
3190     if CheckUrl(UrlEKLoverforsel) then
3191     begin
3192     logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;
3193     SkrivScanningLogFil(logTekst);
3194     end
3195     else
3196     begin
3197     inc(urlFejl); // Optæller antal fejl
3198     logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;
3199     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3200     if TjekUrls = '1' then
3201     begin
3202     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3203     end;
3204     SkrivScanningLogFil(logTekst);
3205     if TjekUrls = '1' then
3206     begin
3207     ShowMessage(logTekst);
3208     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3209     Application.Terminate;
3210     exit;
3211     end;
3212     end;
3213     end;
3214    
3215     // 20150330: start
3216     // Tjekker UrlEKLoverforselPakkeshop
3217     if PanelValg5.Enabled = true then
3218     begin
3219     if CheckUrl(UrlEKLoverforselPakkeshop) then
3220     begin
3221     logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;
3222     SkrivScanningLogFil(logTekst);
3223     end
3224     else
3225     begin
3226     inc(urlFejl); // Optæller antal fejl
3227     logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;
3228     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3229     if TjekUrls = '1' then
3230     begin
3231     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3232     end;
3233     SkrivScanningLogFil(logTekst);
3234     if TjekUrls = '1' then
3235     begin
3236     ShowMessage(logTekst);
3237     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3238     Application.Terminate;
3239     exit;
3240     end;
3241     end;
3242     end;
3243     // 20150330: slut
3244    
3245     // Tjekker UrlFindPakketype
3246     if CheckUrl(UrlFindPakketype) then
3247     begin
3248     logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;
3249     SkrivScanningLogFil(logTekst);
3250     end
3251     else
3252     begin
3253     inc(urlFejl); // Optæller antal fejl
3254     logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;
3255     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3256     if TjekUrls = '1' then
3257     begin
3258     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3259     end;
3260     SkrivScanningLogFil(logTekst);
3261     if TjekUrls = '1' then
3262     begin
3263     ShowMessage(logTekst);
3264     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3265     Application.Terminate;
3266     exit;
3267     end;
3268     end;
3269    
3270     // Tjekker UrlSendPrograminfo
3271     if CheckUrl(UrlSendPrograminfo) then
3272     begin
3273     logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;
3274     SkrivScanningLogFil(logTekst);
3275     end
3276     else
3277     begin
3278     inc(urlFejl); // Optæller antal fejl
3279     logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;
3280     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3281     if TjekUrls = '1' then
3282     begin
3283     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
3284     end;
3285     SkrivScanningLogFil(logTekst);
3286     if TjekUrls = '1' then
3287     begin
3288     ShowMessage(logTekst);
3289     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3290     Application.Terminate;
3291     exit;
3292     end;
3293     end;
3294    
3295     if urlFejl > 0 then
3296     begin
3297     TjekUrls := '-'; // markerer at der var fejl
3298     end
3299     else
3300     begin
3301     logTekst := 'urls er ok';
3302     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3303     SkrivScanningLogFil(logTekst);
3304     end;
3305    
3306     end;
3307    
3308     function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;
3309     var
3310     LocalFileTime: TFileTime;
3311     SystemTime: TSystemTime;
3312     begin
3313     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;
3314     FileTimeToSystemTime(LocalFileTime, SystemTime) ;
3315     Result := SystemTimeToDateTime(SystemTime) ;
3316     end;
3317    
3318     procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
3319     var
3320     SR: TSearchRec;
3321     dt: TDateTime;
3322     CreationTime: TFileTime;
3323     dtCreation: TDateTime;
3324     BemTxt : String;
3325     begin
3326     logTekst := 'Logfiler tjekkes for sletning.';
3327     SkrivScanningLogFil(logTekst);
3328     FileList.Insert(0,logTekst);
3329     if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
3330     begin
3331     repeat
3332     if (SR.Attr <> faDirectory) then
3333     begin
3334     dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
3335     CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
3336     dtCreation := FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
3337     // Selvom creation date godt kan være forskellig fra modified date,
3338     // skal vi alligevel altid tjekke filens alder ud fra modified date
3339     // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
3340     BemTxt := '';
3341     if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
3342     begin
3343     BemTxt := ' (skal slettes)';
3344     end;
3345     logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
3346     if DaysBetween(dtCreation, dt) > 1 then
3347     begin
3348     logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
3349     end;
3350     FileList.Insert(0,logTekst);
3351     SkrivScanningLogFil(logTekst);
3352     if BemTxt = ' (skal slettes)' then
3353     begin
3354     if DeleteFile(Path + SR.Name) then
3355     begin
3356     logTekst := 'Logfil er slettet.';
3357     FileList.Insert(0,logTekst);
3358     SkrivScanningLogFil(logTekst);
3359     end
3360     else
3361     begin
3362     logTekst := 'Logfil kunne IKKE slettes.';
3363     FileList.Insert(0,logTekst);
3364     SkrivScanningLogFil(logTekst);
3365     end;
3366     end;
3367     end;
3368     until FindNext(SR) <> 0;
3369     FindClose(SR);
3370     end;
3371     end;
3372    
3373     procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);
3374     begin
3375     PakkeshopStregkode := '';
3376     PakkeshopTjekkode := '';
3377     PakkeshopNulstil.Visible := false;
3378     PakkeshopText1.Caption := 'Stregkode';
3379     BoghandlerStregkode := '';
3380     BoghandlerTjekkode := '';
3381     Stregkode := '';
3382     // 20150312: start
3383     if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
3384     begin
3385     ShowMessage('Programmet afbrydes...');
3386     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3387     Application.Terminate;
3388     exit;
3389     end;
3390     // 20150312: slut
3391     InitScreen();
3392     // MainForm.Color := HexToTColor(Farve);
3393     if Farve <> '' then
3394     begin
3395     MainForm.Color := HexToTColor(Farve);
3396     // 20150312: start
3397     (*
3398     end
3399     else
3400     begin
3401     ShowMessage('Programmet afbrydes...');
3402     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3403     Application.Terminate;
3404     *)
3405     // 20150312: slut
3406     end;
3407     if (Budlevering1.Checked) then
3408     begin
3409     InitLillePakke();
3410     end;
3411     PrinterstatusStaticText1.Caption := '';
3412     PrinterstatusStaticText1.Color := MainForm.Color;
3413     end;
3414    
3415     procedure TMainForm.PanelValg1Click(Sender: TObject);
3416     begin
3417     Scanningtype := '1';
3418     InitNatxpresslevering();
3419     NulstilAutomatiskValg();
3420     end;
3421    
3422     procedure TMainForm.PanelValg2Click(Sender: TObject);
3423     begin
3424     Scanningtype := '2';
3425     InitReturFraDao();
3426     NulstilAutomatiskValg();
3427     end;
3428    
3429     procedure TMainForm.PanelValg3Click(Sender: TObject);
3430     begin
3431     Scanningtype := '3';
3432     InitReturFraKunde();
3433     NulstilAutomatiskValg();
3434     end;
3435    
3436     procedure TMainForm.PanelValg4Click(Sender: TObject);
3437     begin
3438     Scanningtype := '4';
3439     InitDirektelevering();
3440     NulstilAutomatiskValg();
3441     end;
3442    
3443     procedure TMainForm.PanelValg5Click(Sender: TObject);
3444     begin
3445     Scanningtype := '5';
3446     InitPakkeshoplevering();
3447     NulstilAutomatiskValg();
3448     end;
3449    
3450     procedure TMainForm.PanelValg6Click(Sender: TObject);
3451     begin
3452     Scanningtype := '6';
3453     InitReturFraPakkeshop();
3454     NulstilAutomatiskValg();
3455     end;
3456    
3457     procedure TMainForm.PanelValgAClick(Sender: TObject);
3458     begin
3459     // 20150311: start
3460     (*
3461     if PanelValgA.Color = clBtnFace then
3462     begin
3463     AutomatiskValg1.Checked := true;
3464     PanelValgA.Color := clGreen;
3465     PanelValgA.Font.Color := clWhite;
3466     end
3467     else
3468     begin
3469     AutomatiskValg1.Checked := false;
3470     PanelValgA.Color := clBtnFace;
3471     PanelValgA.Font.Color := clWindowText;
3472     end;
3473     *)
3474     // Skal ikke toggle men bare sætte funktionen on
3475     // Fravælges ved at vælge en scanningstype
3476     AutomatiskValg1.Checked := true;
3477     PanelValgA.Color := clGreen;
3478     PanelValgA.Font.Color := clWhite;
3479     // 20150311: slut
3480     end;
3481    
3482     procedure TMainForm.Pakkernormal1Click(Sender: TObject);
3483     begin
3484     Scanningtype := '1';
3485     NulstilAutomatiskValg();
3486     InitNatxpresslevering();
3487     end;
3488    
3489     procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
3490     var
3491     RuteNummer : String;
3492     Kommentar : String;
3493     BoghandlerNavn : String;
3494     Koreliste : String;
3495     Falsk : Boolean;
3496     Sand : Boolean;
3497     SmsKode : String;
3498     DBKbane : String;
3499     Leveringssted : String;
3500     orgTjekUrls : String;
3501     begin
3502     orgTjekUrls := TjekUrls;
3503     if (TjekUrls = '1') or (TjekUrls = '2') then
3504     begin
3505     TjekkerUrls();
3506     end;
3507     if TjekUrls = '-' then
3508     begin
3509     //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
3510     RuteNummer := '';
3511     Kommentar := 'Se log vinduet';
3512     BoghandlerNavn := 'Fejl i forbindelse til server';
3513     Koreliste := '';
3514     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3515     // Her kommer en alarm og rød skærm
3516     PlaySound(PWideChar(AlarmLyd));
3517     MainForm.Color := clRed;
3518     PakkeshopNulstil.Visible := true;
3519     end
3520     else
3521     begin
3522     Falsk := False;
3523     Sand := True;
3524     HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
3525     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3526     SmsKode := '999999';
3527     DBKbane := '999';
3528     Leveringssted := 'XXX';
3529     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3530     FocusControl(StregkodeST);
3531     end;
3532     TjekUrls := orgTjekUrls;
3533    
3534     end;
3535    
3536     procedure TMainForm.Testprinter1Click(Sender: TObject);
3537     var
3538     RuteNummer : String;
3539     Kommentar : String;
3540     BoghandlerNavn : String;
3541     Koreliste : String;
3542     Falsk : Boolean;
3543     Sand : Boolean;
3544     SmsKode : String;
3545     DBKbane : String;
3546     Leveringssted : String;
3547     begin
3548     RuteNummer := 'Rutenr';
3549     Kommentar := '***** Kommentar *****';
3550     BoghandlerNavn := 'Modtagernavn';
3551     Falsk := False;
3552     Sand := True;
3553    
3554     if (Printer.Printers.Count = 0) then
3555     begin
3556     ShowMessage('Der er ikke installeret en printer på denne PC.');
3557     end
3558     else if PrinterNavn = 'Ingen' then
3559     begin
3560     ShowMessage('Der er fravalgt printer i dette program.');
3561     end
3562     else
3563     begin
3564     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3565     SmsKode := '999999';
3566     DBKbane := '999';
3567     Leveringssted := 'XXX';
3568     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3569     CheckPrintQue('Test');
3570     end;
3571     FocusControl(StregkodeST);
3572     end;
3573    
3574     procedure TMainForm.Timer1Timer(Sender: TObject);
3575     begin
3576     if (TjekPrinter = '1') then
3577     begin
3578     CheckPrintQue('Timer');
3579     end
3580     else
3581     begin
3582     PrinterstatusStaticText1.Caption := '';
3583     PrinterstatusStaticText1.Color := MainForm.Color;
3584     end;
3585     end;
3586    
3587     {
3588     VERY fast split function
3589     this function returns part of a string based on
3590     constant defineable delimiters, such as ";". So
3591     SPLIT('this is a test ',' ',3) = 'is' or
3592     SPLIT('data;another;yet;again;more;',';',4) = 'yet'
3593    
3594     Split function shifts index integer by two to
3595     be compatible with commonly used PD split function
3596     gpl 2004 / Juhani Suhonen
3597     }
3598     function TMainForm.split(input: string; schar: Char; s: Integer): string;
3599     var
3600     c: array of Integer;
3601     b, t: Integer;
3602     begin
3603     Dec(s, 2); // for compatibility with very old & slow split function
3604     t := 0; // variable T needs to be initialized...
3605     setlength(c, Length(input));
3606     for b := 0 to pred(High(c)) do
3607     begin
3608     c[b + 1] := posex(schar, input, succ(c[b]));
3609     // BREAK LOOP if posex looped (position before previous)
3610     // or wanted position reached..
3611     if (c[b + 1] < c[b]) or (s < t) then break
3612     else
3613     Inc(t);
3614     end;
3615     Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));
3616     end;
3617    
3618     procedure TMainForm.Om1Click(Sender: TObject);
3619     const
3620     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3621     var
3622     tekst, filversion : String;
3623     begin
3624    
3625     filversion := Sto_GetFmtFileVersion('','');
3626     tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3627    
3628     tekst := tekst+crlf+crlf;
3629     tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
3630     tekst := tekst+crlf;
3631    
3632     if SpecialVersionSted = '' then
3633     begin
3634     tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
3635     end;
3636    
3637     if SpecialVersionSted <> '' then
3638     begin
3639     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
3640     begin
3641     if Stednavn = '' then
3642     begin
3643     tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
3644     end
3645     else
3646     begin
3647     tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';
3648     end;
3649     end
3650     else
3651     begin
3652     tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';
3653     end;
3654     end;
3655    
3656     if (Pos('omdeling.info',Url) = 0) then
3657     begin
3658     tekst := tekst+crlf+crlf;
3659     tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3660     tekst := tekst+crlf+crlf;
3661     tekst := tekst+crlf+crlf+'Url: '+url;
3662     end;
3663    
3664     MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3665    
3666     end;
3667    
3668     procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3669     Rect: TRect; State: TOwnerDrawState);
3670     var
3671     ListBox1MaxLinLgd,i : Integer;
3672     myColor: TColor;
3673     myBrush: TBrush;
3674     begin
3675     ListBox1MaxLinLgd := 0;
3676     myBrush := TBrush.Create;
3677     with (Control as TListBox).Canvas do
3678     begin
3679     if not Odd(Index) then
3680     myColor := clWhite
3681     else
3682     myColor := clSilver;
3683    
3684     if odSelected in State then
3685     begin
3686     myColor := MainForm.Color;
3687     font.Color := clBlack;
3688     end;
3689    
3690     myBrush.Style := bsSolid;
3691     myBrush.Color := myColor;
3692     Windows.FillRect(handle, Rect, myBrush.Handle) ;
3693     Brush.Style := bsClear;
3694     TextOut(Rect.Left, Rect.Top,
3695     (Control as TListBox).Items[Index]) ;
3696     MyBrush.Free;
3697     end;
3698    
3699     for i := 0 to (ListBox1.Items.Count - 1) do
3700     if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3701     ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3702     ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3703     end;
3704    
3705     procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3706     begin
3707    
3708     Application.Terminate;
3709    
3710     end;
3711    
3712     procedure TMainForm.Manual1Click(Sender: TObject);
3713     var
3714     fileName : string;
3715     begin
3716     fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3717    
3718     if FileExists(fileName) then
3719     begin
3720     if AdobeReaderExists then
3721     begin
3722     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3723     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3724     end
3725     else
3726     begin
3727     ShowMessage('Acrobat Reader er ikke installeret!');
3728     end;
3729     end
3730     else
3731     begin
3732     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3733     end;
3734     end;
3735    
3736     procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3737     var
3738     fileName : string;
3739     begin
3740     fileName := 'Docs\Manual_0.pdf';
3741    
3742     if FileExists(fileName) then
3743     begin
3744     if AdobeReaderExists then
3745     begin
3746     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3747     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3748     end
3749     else
3750     begin
3751     ShowMessage('Acrobat Reader er ikke installeret!');
3752     end;
3753     end
3754     else
3755     begin
3756     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3757     end;
3758     end;
3759    
3760     procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3761     begin
3762    
3763     if Sprgefterboghandlernummer1.Checked then
3764     begin
3765     CheckBox1.Checked := true;
3766     end
3767     else
3768     begin
3769     CheckBox1.Checked := false;
3770     end;
3771    
3772    
3773     end;
3774    
3775     procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);
3776     begin
3777     Scanningtype := '2';
3778     NulstilAutomatiskValg();
3779     InitReturFraDao();
3780     end;
3781    
3782     procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);
3783     begin
3784     Scanningtype := '6';
3785     InitReturFraPakkeshop();
3786     NulstilAutomatiskValg();
3787     end;
3788    
3789     procedure TMainForm.InitNatxpresslevering();
3790     begin
3791     AutomatiskTjekkodeStyring1.Enabled := true;
3792     PakkeshopNulstil.Visible := false;
3793     Pakkernormal1.Checked := true;
3794     InitForm(FarveNormal,TitelNormal,UrlNormal);
3795     PanelValg1.Color := clGreen;
3796     PanelValg1.Font.Color := clWhite;
3797     CheckBox1.Enabled := true;
3798     CheckBox2.Enabled := true;
3799     Altidprintepakkelabel1.Enabled := true;
3800     Altidprintepakkelabel1.Checked := false;
3801     CheckBox2.Checked := false;
3802     Sprgefterboghandlernummer1.Checked := false;
3803     CheckBox1.Checked := false;
3804     Sprgefterboghandlernummer1.Enabled := true;
3805     Smpakker1.Enabled := false;
3806     Storepakker1.Enabled := false;
3807     RadioButton1.Enabled := false;
3808     RadioButton2.Enabled := false;
3809     ListBox1.Visible := true;
3810     OpdaterListenButton01.Enabled := true;
3811     EKLoverforsel.Enabled := true;
3812     InitLillePakke();
3813     ListBox1.Items.Clear;
3814     if BladhusSted = 0 then
3815     begin
3816     IndlesScanningLogFil();
3817     IndlesManglendeScanninger();
3818     end;
3819     end;
3820    
3821     procedure TMainForm.InitReturFraDao();
3822     begin
3823     AutomatiskTjekkodeStyring1.Enabled := false;
3824     ReturpakkerfraDAO1.Checked := true;
3825     PakkeshopNulstil.Visible := false;
3826     InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3827     PanelValg2.Color := clGreen;
3828     PanelValg2.Font.Color := clWhite;
3829     CheckBox1.Enabled := false;
3830     CheckBox2.Enabled := false;
3831     Altidprintepakkelabel1.Enabled := false;
3832     CheckBox2.Checked := false;
3833     Altidprintepakkelabel1.Checked := false;
3834     Sprgefterboghandlernummer1.Checked := false;
3835     CheckBox1.Checked := false;
3836     Sprgefterboghandlernummer1.Enabled := false;
3837     Smpakker1.Enabled := true;
3838     Storepakker1.Enabled := true;
3839     RadioButton1.Enabled := true;
3840     RadioButton2.Enabled := true;
3841     ListBox1.Visible := true;
3842     ListBox1.Items.Clear;
3843     ListBox2.Items.Clear;
3844     EKLoverforsel.Enabled := false;
3845     InitLillePakke();
3846     end;
3847    
3848     procedure TMainForm.InitReturFraKunde();
3849     begin
3850     AutomatiskTjekkodeStyring1.Enabled := false;
3851     Returpakkerfraboghandler1.Checked := true;
3852     PakkeshopNulstil.Visible := false;
3853     InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3854     PanelValg3.Color := clGreen;
3855     PanelValg3.Font.Color := clWhite;
3856     CheckBox1.Enabled := false;
3857     CheckBox2.Enabled := false;
3858     Altidprintepakkelabel1.Enabled := false;
3859     CheckBox2.Checked := false;
3860     Altidprintepakkelabel1.Checked := false;
3861     Sprgefterboghandlernummer1.Checked := false;
3862     CheckBox1.Checked := false;
3863     Sprgefterboghandlernummer1.Enabled := false;
3864     Smpakker1.Enabled := true;
3865     Storepakker1.Enabled := true;
3866     RadioButton1.Enabled := true;
3867     RadioButton2.Enabled := true;
3868     ListBox1.Visible := true;
3869     ListBox1.Items.Clear;
3870     ListBox2.Items.Clear;
3871     EKLoverforsel.Enabled := false;
3872     InitLillePakke();
3873     end;
3874    
3875     procedure TMainForm.InitDirektelevering();
3876     begin
3877     AutomatiskTjekkodeStyring1.Enabled := false;
3878     Budlevering1.Checked := true;
3879     PakkeshopNulstil.Visible := false;
3880     InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3881     PanelValg4.Color := clGreen;
3882     PanelValg4.Font.Color := clWhite;
3883     CheckBox1.Enabled := false;
3884     CheckBox2.Enabled := false;
3885     Altidprintepakkelabel1.Enabled := false;
3886     CheckBox2.Checked := false;
3887     Altidprintepakkelabel1.Checked := false;
3888     Sprgefterboghandlernummer1.Checked := false;
3889     CheckBox1.Checked := false;
3890     Sprgefterboghandlernummer1.Enabled := false;
3891     Smpakker1.Enabled := true;
3892     Storepakker1.Enabled := true;
3893     RadioButton1.Enabled := true;
3894     RadioButton2.Enabled := true;
3895     ListBox1.Visible := true;
3896     ListBox1.Items.Clear;
3897     DownloadButton01.Enabled := false;
3898     OpdaterListenButton01.Enabled := true;
3899     DownloadButton03.Visible := false;
3900     EKLoverforsel.Enabled := false;
3901     IdFTP1.Passive := true;
3902     IdFTP1.PassiveUseControlHost := true;
3903     if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3904     begin
3905     IndlesScanningLogFil();
3906     IndlesManglendeScanninger();
3907     end;
3908    
3909     end;
3910    
3911     procedure TMainForm.InitPakkeshoplevering();
3912     begin
3913     AutomatiskTjekkodeStyring1.Enabled := true;
3914     Pakkeshoplevering1.Checked := true;
3915     PakkeshopNulstil.Visible := false;
3916     InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3917     PanelValg5.Color := clGreen;
3918     PanelValg5.Font.Color := clWhite;
3919     CheckBox1.Enabled := false;
3920     CheckBox2.Enabled := false;
3921     Altidprintepakkelabel1.Enabled := false;
3922     CheckBox2.Checked := false;
3923     Altidprintepakkelabel1.Checked := false;
3924     Sprgefterboghandlernummer1.Checked := false;
3925     CheckBox1.Checked := false;
3926     Sprgefterboghandlernummer1.Enabled := false;
3927     Smpakker1.Enabled := false;
3928     Storepakker1.Enabled := false;
3929     RadioButton1.Enabled := false;
3930     RadioButton2.Enabled := false;
3931     ListBox1.Visible := true;
3932     ListBox1.Items.Clear;
3933     DownloadButton01.Enabled := false;
3934     OpdaterListenButton01.Enabled := true;
3935     // 20150330: start
3936     // EKLoverforsel.Enabled := false;
3937     EKLoverforsel.Enabled := true;
3938     // 20150330: slut
3939     InitLillePakke();
3940     IndlesScanningLogFil();
3941     if BladhusSted = 0 then
3942     begin
3943     IndlesManglendeScanninger();
3944     end;
3945     IdFTP1.Passive := true;
3946     IdFTP1.PassiveUseControlHost := true;
3947     end;
3948    
3949     procedure TMainForm.InitReturFraPakkeshop();
3950     begin
3951     AutomatiskTjekkodeStyring1.Enabled := false;
3952     Returpakkerfrapakkeshop1.Checked := true;
3953     PakkeshopNulstil.Visible := false;
3954     InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3955     PanelValg6.Color := clGreen;
3956     PanelValg6.Font.Color := clWhite;
3957     CheckBox1.Enabled := false;
3958     CheckBox2.Enabled := false;
3959     Altidprintepakkelabel1.Enabled := false;
3960     CheckBox2.Checked := false;
3961     Altidprintepakkelabel1.Checked := false;
3962     Sprgefterboghandlernummer1.Checked := false;
3963     CheckBox1.Checked := false;
3964     Sprgefterboghandlernummer1.Enabled := false;
3965     Smpakker1.Enabled := false;
3966     Storepakker1.Enabled := false;
3967     RadioButton1.Enabled := false;
3968     RadioButton2.Enabled := false;
3969     ListBox1.Visible := true;
3970     ListBox1.Items.Clear;
3971     DownloadButton01.Enabled := false;
3972     OpdaterListenButton01.Enabled := true;
3973     EKLoverforsel.Enabled := false;
3974     InitLillePakke();
3975     IndlesScanningLogFil();
3976     if BladhusSted = 0 then
3977     begin
3978     IndlesManglendeScanninger();
3979     end;
3980     IdFTP1.Passive := true;
3981     IdFTP1.PassiveUseControlHost := true;
3982     end;
3983    
3984     procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);
3985     begin
3986     Scanningtype := '3';
3987     NulstilAutomatiskValg();
3988     InitReturFraKunde();
3989     end;
3990    
3991     procedure TMainForm.Storepakker1Click(Sender: TObject);
3992     begin
3993     InitStorPakke();
3994     end;
3995    
3996     procedure TMainForm.Smpakker1Click(Sender: TObject);
3997     begin
3998     InitLillePakke();
3999     end;
4000    
4001     procedure TMainForm.InitLillePakke();
4002     begin
4003     RadioButton2.Checked := true;
4004     Smpakker1.Checked := true;
4005     // 20150310: start
4006     // Stregkode := '';
4007     // 20150310: slut
4008     end;
4009    
4010     procedure TMainForm.InitStorPakke();
4011     begin
4012     RadioButton1.Checked := true;
4013     Storepakker1.Checked := true;
4014     // 20150310: start
4015     // Stregkode := '';
4016     // 20150310: slut
4017     end;
4018    
4019     /// <summary>
4020     /// This function reads the file resource of "FileName" and returns
4021     /// the version number as formatted text.</summary>
4022     /// <example>
4023     /// Sto_GetFmtFileVersion() = '4.13.128.0'
4024     /// Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'
4025     /// </example>
4026     /// <remarks>If "Fmt" is invalid, the function may raise an
4027     /// EConvertError exception.</remarks>
4028     /// <param name="FileName">Full path to exe or dll. If an empty
4029     /// string is passed, the function uses the filename of the
4030     /// running exe or dll.</param>
4031     /// <param name="Fmt">Format string, you can use at most four integer
4032     /// values.</param>
4033     /// <returns>Formatted version number of file, '' if no version
4034     /// resource found.</returns>
4035     function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';
4036     const Fmt: String = '%d.%d.%d.%d'): String;
4037     var
4038     sFileName: String;
4039     iBufferSize: DWORD;
4040     iDummy: DWORD;
4041     pBuffer: Pointer;
4042     pFileInfo: Pointer;
4043     iVer: array[1..4] of Word;
4044     S : String;
4045     begin
4046     // set default value
4047     Result := '';
4048     // get filename of exe/dll if no filename is specified
4049     sFileName := Trim(FileName);
4050     if (sFileName = '') then
4051     sFileName := GetModuleName(HInstance);
4052     // get size of version info (0 if no version info exists)
4053     iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
4054     if (iBufferSize > 0) then
4055     begin
4056     GetMem(pBuffer, iBufferSize);
4057     try
4058     // get fixed file info (language independent)
4059     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
4060     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
4061     // read version blocks
4062     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
4063     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
4064     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
4065     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
4066     finally
4067     FreeMem(pBuffer);
4068     end;
4069     // format result string
4070     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
4071    
4072     // Hvorfor virker ovenstående ikke ???
4073     S := '';
4074     Str(iVer[1],Result);
4075     S := S+Result+'.';
4076     Str(iVer[2],Result);
4077     S := S+Result+'.';
4078     Str(iVer[3],Result);
4079     S := S+Result+'.';
4080     Str(iVer[4],Result);
4081     S := S+Result+'';
4082     Result := S;
4083     end;
4084     end;
4085    
4086     procedure TMainForm.PlaySound(filename : PWideChar);
4087     begin
4088     if (filename <> '') then
4089     begin
4090     sndPlaySound(filename,
4091     SND_NODEFAULT Or SND_ASYNC);
4092     end;
4093     end;
4094    
4095     procedure TMainForm.Testlyd1Click(Sender: TObject);
4096     begin
4097     if AlarmLyd <> '' then
4098     begin
4099     PlaySound(PWideChar(AlarmLyd));
4100     end
4101     else
4102     begin
4103     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
4104     end;
4105     end;
4106    
4107     procedure TMainForm.Testlyd2Click(Sender: TObject);
4108     begin
4109     // 20150317: start
4110     if (PakkeshopText1.Caption = 'Tjekkode') then
4111     begin
4112     if ScannetOkTilTjekkodeLyd <> '' then
4113     begin
4114     PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
4115     end
4116     else
4117     begin
4118     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
4119     end;
4120     exit;
4121     end;
4122     // 20150317: slut
4123    
4124     if Smpakker1.Checked then
4125     if ScannetOkLyd <> '' then
4126     begin
4127     PlaySound(PWideChar(ScannetOkLyd));
4128     end
4129     else
4130     begin
4131     // 20150317: start
4132     // MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);
4133     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
4134     // 20150317: slut
4135     end;
4136     if Storepakker1.Checked then
4137     if ScannetOkStorLyd <> '' then
4138     begin
4139     PlaySound(PWideChar(ScannetOkStorLyd));
4140     end
4141     else
4142     begin
4143     // 20150317: start
4144     // MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);
4145     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
4146     // 20150317: slut
4147     end;
4148     end;
4149    
4150    
4151     procedure TMainForm.Budlevering1Click(Sender: TObject);
4152     begin
4153     Scanningtype := '4';
4154     NulstilAutomatiskValg();
4155     InitDirektelevering();
4156     end;
4157    
4158     procedure TMainForm.Button1Click(Sender: TObject);
4159     begin;
4160     CheckCode();
4161     end;
4162    
4163     procedure TMainForm.EKLoverforselClick(Sender: TObject);
4164     var
4165     WebSvar : String;
4166     URLStr : String;
4167     StedKode : String;
4168     Node: IXMLNode;
4169     I: Integer;
4170     status, kommentar : String;
4171    
4172     begin
4173     EKLoverforsel.Enabled := false;
4174    
4175     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
4176     logTekst := 'Overfører de scannede pakker til EKL';
4177     SkrivScanningLogFil(logTekst);
4178     StedKode := Sted;
4179     URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
4180     // 20150330: start
4181     if PanelValg5.Color = clGreen then
4182     begin
4183     URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
4184     end;
4185     // 20150330: slut
4186    
4187     try
4188     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4189     WebSvar := IdHTTP1.Get(URLStr);
4190     except
4191     on e:EIdConnClosedGracefully do
4192     begin
4193     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4194     WebSvar := IdHTTP1.Get(URLStr);
4195     end;
4196     on e:exception do
4197     begin
4198     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4199     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4200     SkrivScanningLogFil(logTekst);
4201     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4202     end;
4203     end;
4204     try
4205     XMLDocument1.LoadFromXML(WebSvar);
4206     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4207     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4208     if Node.NodeType = ntElement then begin
4209     if Node.NodeName = 'Status' then begin
4210     if not VarIsNull(Node.NodeValue) then
4211     status := Node.NodeValue;
4212     end;
4213     if Node.NodeName = 'Kommentar' then begin
4214     if not VarIsNull(Node.NodeValue) then
4215     kommentar := Node.NodeValue;
4216     end;
4217     end;
4218     end;
4219    
4220     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
4221     logTekst := 'Overførsel til EKL: ' + status;
4222     SkrivScanningLogFil(logTekst);
4223    
4224     except on e:exception do
4225     begin
4226     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
4227     logTekst := 'Overførsel til EKL: ' + status;
4228     SkrivScanningLogFil(logTekst);
4229     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4230     logTekst := 'Fejl i XML-format: '+e.Message;
4231     SkrivScanningLogFil(logTekst);
4232     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4233     end;
4234     end;
4235    
4236     EKLoverforsel.Enabled := true;
4237    
4238     ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4239    
4240     // Hvis der var fejl i overførslen skal dette fejlmeldes her
4241     if status = 'Fejl' then
4242     begin // Her skal komme en alarm og rød skærm
4243     PlaySound(PWideChar(AlarmLyd));
4244     MainForm.Color := clRed;
4245     RutenummerST.Caption := 'EKL overførsel';
4246     BoghandlerNavnST.Caption := 'Fejl:';
4247     if (pos('Deadlock', Kommentar) > 0) then
4248     begin
4249     RutenummerST.Caption := 'EKL overførsel fejlet';
4250     BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
4251     end;
4252     KommentarST.Caption := Kommentar;
4253     PakkeshopNulstil.Visible := true;
4254     end;
4255    
4256     end;
4257    
4258     procedure TMainForm.CheckCode();
4259     var
4260     Barcode, Svar : String;
4261     ClickedOK : Boolean;
4262     begin
4263     ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
4264     if ClickedOk then
4265     begin
4266     { if (BarCodeValid(Barcode)) then
4267     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4268     else
4269     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4270     }
4271     // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
4272     { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
4273     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4274     else
4275     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4276     }
4277     Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
4278    
4279     MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
4280     CheckCode();
4281     end;
4282    
4283     end;
4284    
4285     function TMainForm.BarCodeValid (ACode: string): boolean;
4286     var
4287     I: integer;
4288     SumOdd, SumEven: integer;
4289     ADigit, AChecksumDigit: integer;
4290     begin
4291     SumOdd := 0;
4292     SumEven := 0;
4293     for I := 1 to (Length (ACode) - 1) do begin
4294     ADigit := StrToIntDef (ACode [I], 0);
4295     if (I MOD 2 = 0) then begin
4296     SumEven := SumEven + ADigit;
4297     end else begin
4298     SumOdd := SumOdd + ADigit;
4299     end; {if}
4300     end; {for}
4301     AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);
4302     Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);
4303     end; {--BarCodeValid--}
4304    
4305     { used for EAN 8/13 }
4306     function TMainForm.CheckSumModulo10(const data:string):string;
4307     var i,fak,sum : Integer;
4308     begin
4309     sum := 0;
4310     fak := Length(data);
4311     for i:=1 to Length(data) do
4312     begin
4313     if (fak mod 2) = 0 then
4314     sum := sum + (StrToInt(data[i])*1)
4315     else
4316     sum := sum + (StrToInt(data[i])*3);
4317     dec(fak);
4318     end;
4319     if (sum mod 10) = 0 then
4320     result := data+'0'
4321     else
4322     result := data+IntToStr(10-(sum mod 10));
4323     end;
4324    
4325     //
4326     // Bladhus ***
4327     //
4328     procedure TMainForm.DownloadBladhusRuteskiftfil();
4329     const
4330     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4331    
4332     var
4333     filnavn_input : string;
4334     filnavn_output : string;
4335     buttonSelected : Integer;
4336    
4337     begin
4338     filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
4339     filnavn_output := BladhusRuteskiftfil_lokal;
4340    
4341     case BladhusSted of
4342     00 : begin;
4343     end;
4344     01 : begin;
4345     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4346     if buttonSelected = mrOK then
4347     begin
4348     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4349     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4350     SkrivScanningLogFil(logTekst);
4351     try
4352     try
4353    
4354     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4355     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4356     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4357     IdFTP1.Connect;
4358    
4359     //IdFTP1.TransferType := ftASCII;
4360     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4361     try
4362     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4363     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4364     except on e:EIdConnClosedGracefully do
4365     begin
4366     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4367     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4368     end;
4369     end;
4370     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4371    
4372     ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4373     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4374     SkrivScanningLogFil(logTekst);
4375    
4376     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4377     logTekst := 'Ruteskift fil tjekkes.';
4378     SkrivScanningLogFil(logTekst);
4379    
4380     finally
4381     IdFTP1.Disconnect;
4382     end;
4383    
4384     except on e:exception do
4385     begin
4386     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4387     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4388     SkrivScanningLogFil(logTekst);
4389     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4390     [e.Message
4391     + CrLf + 'Host: '+IdFTP1.host
4392     + CrLf + 'Username: '+IdFTP1.Username
4393     ]
4394     );
4395     end;
4396     end;
4397     end
4398     else
4399     begin
4400     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4401     logTekst := 'Download af ruteskiftfil annulleret';
4402     SkrivScanningLogFil(logTekst);
4403     end;
4404     IndlesRuteskiftFil(filnavn_output);
4405     end;
4406     02 : begin;
4407     end;
4408     03 : begin;
4409     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4410     if buttonSelected = mrOK then
4411     begin
4412     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4413     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4414     SkrivScanningLogFil(logTekst);
4415     try
4416     try
4417    
4418     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4419     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4420     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4421     IdFTP1.Connect;
4422    
4423     //IdFTP1.TransferType := ftASCII;
4424     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4425     try
4426     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4427     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4428     except on e:EIdConnClosedGracefully do
4429     begin
4430     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4431     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4432     end;
4433     end;
4434     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4435    
4436     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4437     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4438     SkrivScanningLogFil(logTekst);
4439    
4440     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4441     logTekst := 'Ruteskift fil tjekkes.';
4442     SkrivScanningLogFil(logTekst);
4443    
4444     finally
4445     IdFTP1.Disconnect;
4446     end;
4447    
4448     except on e:exception do
4449     begin
4450     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4451     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4452     SkrivScanningLogFil(logTekst);
4453     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4454     [e.Message
4455     + CrLf + 'Host: '+IdFTP1.host
4456     + CrLf + 'Username: '+IdFTP1.Username
4457     ]
4458     );
4459     end;
4460     end;
4461     end
4462     else
4463     begin
4464     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4465     logTekst := 'Download af ruteskiftfil annulleret';
4466     SkrivScanningLogFil(logTekst);
4467     end;
4468     IndlesRuteskiftFil(filnavn_output);
4469     end;
4470     04 : begin;
4471     end;
4472     else
4473     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
4474     end;
4475    
4476     end;
4477    
4478     procedure TMainForm.DownloadBladhusKontrolfil();
4479     const
4480     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4481    
4482     var
4483     filnavn_input : string;
4484     filnavn_output : string;
4485     buttonSelected : Integer;
4486    
4487     begin
4488     filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
4489     filnavn_output := BladhusKontrolfil_lokal;
4490    
4491     case BladhusSted of
4492     01 :
4493     begin;
4494     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4495     if buttonSelected = mrOK then
4496     begin
4497     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4498     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4499     SkrivScanningLogFil(logTekst);
4500     try
4501     try
4502    
4503     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4504     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4505     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4506     IdFTP1.Connect;
4507    
4508     //IdFTP1.TransferType := ftASCII;
4509     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4510     try
4511     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4512     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4513     except on e:EIdConnClosedGracefully do
4514     begin
4515     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4516     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4517     end;
4518     end;
4519     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4520    
4521     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4522     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4523     SkrivScanningLogFil(logTekst);
4524    
4525     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4526     logTekst := 'Rute kontrol fil tjekkes.';
4527     SkrivScanningLogFil(logTekst);
4528    
4529     finally
4530     IdFTP1.Disconnect;
4531     end;
4532    
4533     except on e:exception do
4534     begin
4535     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4536     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4537     SkrivScanningLogFil(logTekst);
4538     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4539     [e.Message
4540     + CrLf + 'Host: '+IdFTP1.host
4541     + CrLf + 'Username: '+IdFTP1.Username
4542     ]
4543     );
4544     end;
4545     end;
4546     end
4547     else
4548     begin
4549     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4550     logTekst := 'Download af kontrolfil annulleret';
4551     SkrivScanningLogFil(logTekst);
4552     end;
4553     IndlesKontrolFil(filnavn_output);
4554     end;
4555     02 : begin;
4556     end;
4557     03 : begin;
4558     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4559     if buttonSelected = mrOK then
4560     begin
4561     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4562     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4563     SkrivScanningLogFil(logTekst);
4564     try
4565     try
4566    
4567     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4568     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4569     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4570     IdFTP1.Connect;
4571    
4572     //IdFTP1.TransferType := ftASCII;
4573     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4574     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4575    
4576     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4577     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4578     SkrivScanningLogFil(logTekst);
4579    
4580     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4581     logTekst := 'Rute kontrol fil tjekkes.';
4582     SkrivScanningLogFil(logTekst);
4583    
4584     finally
4585     IdFTP1.Disconnect;
4586     end;
4587    
4588     except on e:exception do
4589     begin
4590     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4591     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4592     SkrivScanningLogFil(logTekst);
4593     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4594     [e.Message
4595     + CrLf + 'Host: '+IdFTP1.host
4596     + CrLf + 'Username: '+IdFTP1.Username
4597     ]
4598     );
4599     end;
4600     end;
4601     end
4602     else
4603     begin
4604     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4605     logTekst := 'Download af kontrolfil annulleret';
4606     SkrivScanningLogFil(logTekst);
4607     end;
4608     IndlesKontrolFil(filnavn_output);
4609     end;
4610     04 : begin;
4611     end;
4612     else
4613     ShowMessage('Ukendt Bladhus sted ???') ;
4614     end;
4615    
4616     end;
4617    
4618     procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
4619     const
4620     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4621    
4622     var
4623     testsystem : String;
4624    
4625     begin
4626     testsystem := '';
4627     if (Pos('omdeling.info',Url) = 0) then
4628     begin
4629     testsystem := 'TEST_';
4630     end;
4631     filnavn_output := testsystem + filnavn_output;
4632    
4633     ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
4634     logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
4635     SkrivScanningLogFil(logTekst);
4636     try
4637     try
4638    
4639     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4640     IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
4641     IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
4642     IdFTP1.Connect;
4643    
4644     //IdFTP1.TransferType := ftASCII;
4645     try
4646     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4647     IdFTP1.ChangeDir('fraScannerprogram');
4648     IdFTP1.Put(filnavn_input, filnavn_output, True);
4649     except on e:EIdConnClosedGracefully do
4650     begin
4651     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4652     IdFTP1.Put(filnavn_input, filnavn_output, True);
4653     end;
4654     end;
4655     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4656    
4657     logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
4658     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4659     SkrivScanningLogFil(logTekst);
4660    
4661     finally
4662     IdFTP1.Disconnect;
4663     end;
4664    
4665     except on e:exception do
4666     begin
4667     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4668     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4669     SkrivScanningLogFil(logTekst);
4670     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4671     [e.Message
4672     + CrLf + 'Host: '+IdFTP1.host
4673     + CrLf + 'Username: '+IdFTP1.Username
4674     ]
4675     );
4676     end;
4677     end;
4678     end;
4679    
4680     procedure TMainForm.UploadLogfilTilDAO();
4681     const
4682     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4683    
4684     var
4685     idag, imorgen : TDateTime;
4686     imorgenYmd : string;
4687     logFilnavn : string;
4688     filnavn_input : string;
4689     filnavn_output : string;
4690     buttonSelected : Integer;
4691     openDialog : TOpenDialog;
4692    
4693     begin
4694     idag := Now;
4695     imorgen := IncDay(idag, 1); //adds 1 day(s)
4696     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4697     if (FormatDateTime('hh:nn',idag) < '12:00') then
4698     begin
4699     imorgen := idag;
4700     end;
4701     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4702     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4703     filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4704     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4705    
4706     buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4707     if buttonSelected = mrOK then
4708     begin
4709     SendFilTilDao('Log', filnavn_input, filnavn_output);
4710     end
4711     else
4712     begin
4713     buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4714     if buttonSelected = mrOK then
4715     begin
4716     // Create the open dialog object - assign to our open dialog variable
4717     openDialog := TOpenDialog.Create(self);
4718    
4719     // Set up the starting directory to be the current one
4720     openDialog.InitialDir := GetCurrentDir + '\Logs';
4721    
4722     // Only allow existing files to be selected
4723     openDialog.Options := [ofFileMustExist];
4724    
4725     // Allow only .log files to be selected
4726     openDialog.Filter := 'Log filer|*.log';
4727    
4728     // Display the open file dialog
4729     if openDialog.Execute then
4730     begin
4731     filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4732     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4733     SendFilTilDao('Log', filnavn_input, filnavn_output);
4734     end
4735     else
4736     begin
4737     logTekst := 'Upload af log fil annulleret';
4738     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4739     SkrivScanningLogFil(logTekst);
4740     end;
4741    
4742     // Free up the dialog
4743     openDialog.Free;
4744     end
4745     else
4746     begin
4747     logTekst := 'Upload af log fil annulleret';
4748     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4749     SkrivScanningLogFil(logTekst);
4750     end;
4751     end;
4752    
4753     end;
4754    
4755     procedure TMainForm.UploadInifilTilDAO();
4756     const
4757     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4758    
4759     var
4760     idag, imorgen : TDateTime;
4761     imorgenYmd : string;
4762     iniFilnavn : string;
4763     filnavn_input : string;
4764     filnavn_output : string;
4765     buttonSelected : Integer;
4766    
4767     begin
4768     idag := Now;
4769     imorgen := IncDay(idag, 1); //adds 1 day(s)
4770     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4771     if (FormatDateTime('hh:nn',idag) < '12:00') then
4772     begin
4773     imorgen := idag;
4774     end;
4775     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4776     iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4777     filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4778     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4779    
4780     buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4781     if buttonSelected = mrOK then
4782     begin
4783     SendFilTilDao('Ini', filnavn_input, filnavn_output);
4784     end
4785     else
4786     begin
4787     logTekst := 'Upload af ini fil annulleret';
4788     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4789     SkrivScanningLogFil(logTekst);
4790     end;
4791    
4792     end;
4793    
4794     procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4795     begin
4796     UploadLogfilTilDAO();
4797     UploadInifilTilDAO();
4798     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4799     end;
4800    
4801     procedure TMainForm.DownloadButton01Click(Sender: TObject);
4802     begin
4803     DownloadBladhusKontrolfil();
4804     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4805     end;
4806    
4807     procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);
4808     const
4809     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4810    
4811     begin
4812     IndlesManglendeScanninger();
4813     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4814     end;
4815    
4816     procedure TMainForm.DownloadButton03Click(Sender: TObject);
4817     begin
4818     if (getProddag() = 'lørdag') then
4819     begin
4820     DownloadBladhusRuteskiftfil();
4821     end;
4822     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4823     end;
4824    
4825     function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;
4826     var
4827     S2: string;
4828     begin
4829     Result := 0;
4830     S2 := S + Border;
4831     repeat
4832     SetLength(A, Length(A) + 1);
4833     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);
4834     Delete(S2, 1,Length(a[Result] + Border));
4835     Inc(Result);
4836     until S2 = '';
4837     end;
4838    
4839     procedure TMainForm.IndlesManglendeScanninger();
4840     var
4841     WebSvar : String;
4842     URLStr : String;
4843     StedKode : String;
4844     Node: IXMLNode;
4845     I: Integer;
4846     stregkode, modtagernavn, modtageradresse, kommentar : string;
4847     pakketype, tjekkodestatus : String;
4848     pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4849     pakketyper : TStrings;
4850     antlin : Integer;
4851     // 20150306: start
4852     antlinIdag, antlinSenere : Integer;
4853     // 20150306: slut
4854     XmlFelter : TStrings;
4855    
4856     begin
4857     XmlFelter := TStringList.Create;
4858     pakketyper := TStringList.Create;
4859     linienr := 0;
4860     ListBox2.Clear;
4861     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4862     logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4863     SkrivScanningLogFil(logTekst);
4864     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4865     begin
4866     StedKode := BladhusStedKode[BladhusSted];
4867     end
4868     else
4869     begin
4870     StedKode := Sted;
4871     end;
4872    
4873     // 20150310: start
4874     (*
4875     if Returpakkerfrapakkeshop1.Checked then
4876     begin
4877     URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4878     end
4879     else if Pakkeshoplevering1.Checked then
4880     begin
4881     URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4882     end
4883     else if Pakkernormal1.Checked then
4884     begin
4885     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4886     end
4887     else
4888     begin
4889     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4890     end;
4891     *)
4892     if (Scanningtype = '6') then
4893     begin
4894     URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4895     end
4896     else if (Scanningtype = '5') then
4897     begin
4898     URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4899     end
4900     else if (Scanningtype = '1') then
4901     begin
4902     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4903     end
4904     else if (Scanningtype = '4') then
4905     begin
4906     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4907     end
4908     else
4909     begin
4910     exit;
4911     end;
4912     // 20150310: slut
4913    
4914     try
4915     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4916     // URLStr := string(Utf8Encode(URLStr));
4917     WebSvar := IdHTTP1.Get(URLStr);
4918     except
4919     on e:EIdConnClosedGracefully do
4920     begin
4921     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4922     WebSvar := IdHTTP1.Get(URLStr);
4923     end;
4924     on e:exception do
4925     begin
4926     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4927     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4928     SkrivScanningLogFil(logTekst);
4929     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4930     end;
4931     end;
4932     try
4933     XMLDocument1.LoadFromXML(WebSvar);
4934    
4935     // 20150206: start
4936     antlin := 0;
4937     antlinIdag := 0;
4938     antlinSenere := 0;
4939     // 20150306: slut
4940     antalFelterFundet := 0;
4941     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4942     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4943     if Node.NodeType = ntElement then begin
4944     if Node.NodeName = 'Stregkode' then
4945     begin
4946     antlin := antlin + 1;
4947     // 20150306: start
4948     if not VarIsNull(Node.NodeValue) then
4949     begin
4950     if (pos('(', Node.NodeValue) = 0) then
4951     begin
4952     antlinIdag := antlinIdag + 1;
4953     end
4954     else
4955     begin
4956     antlinSenere := antlinSenere + 1;
4957     end;
4958     end;
4959     // 20150306: slut
4960     end;
4961     end;
4962     if (XmlFelter.values[Node.NodeName] <> '') then
4963     XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)
4964     else
4965     XmlFelter.values[Node.NodeName] := '1';
4966    
4967     end;
4968     antalLiniefelter := XmlFelter.Count;
4969     antalFelterFundet := 0;
4970     SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4971     SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4972     // 20150206: start
4973     // logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';
4974     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4975     if (antlinSenere > 0) then
4976     begin
4977     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4978     end;
4979     logTekst := logTekst + '.';
4980     // 20150306: slut
4981     SkrivScanningLogFil(logTekst);
4982     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4983     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4984     if Node.NodeType = ntElement then begin
4985     if Node.NodeName = 'Stregkode' then begin
4986     if not VarIsNull(Node.NodeValue) then
4987     stregkode := Node.NodeValue;
4988     antalFelterFundet := antalFelterFundet + 1;
4989     end;
4990     if Node.NodeName = 'ModtagerNavn' then begin
4991     if not VarIsNull(Node.NodeValue) then
4992     modtagernavn := Node.NodeValue;
4993     antalFelterFundet := antalFelterFundet + 1;
4994     end;
4995     if Node.NodeName = 'ModtagerAdresse' then begin
4996     if not VarIsNull(Node.NodeValue) then
4997     modtageradresse := Node.NodeValue;
4998     antalFelterFundet := antalFelterFundet + 1;
4999     end;
5000     if Node.NodeName = 'Kommentar' then begin
5001     if not VarIsNull(Node.NodeValue) then
5002     kommentar := Node.NodeValue;
5003     antalFelterFundet := antalFelterFundet + 1;
5004     end;
5005     if Node.NodeName = 'PakkeType' then begin
5006     if not VarIsNull(Node.NodeValue) then
5007     pakketype := Node.NodeValue;
5008     antalFelterFundet := antalFelterFundet + 1;
5009     if (pakketyper.values[pakketype] <> '') then
5010     pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)
5011     else
5012     pakketyper.values[pakketype] := '1';
5013     end;
5014     if Node.NodeName = 'TjekkodeStatus' then begin
5015     if not VarIsNull(Node.NodeValue) then
5016     tjekkodestatus := Node.NodeValue;
5017     antalFelterFundet := antalFelterFundet + 1;
5018     if (tjekkodestatus = '-1') then
5019     begin
5020     // 20150306: start
5021     // stregkoderMedTjekkodeArray[linienr] := stregkode;
5022     if (pos(' ', stregkode) > 0) then
5023     begin
5024     stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
5025     end
5026     else
5027     begin
5028     stregkoderMedTjekkodeArray[linienr] := stregkode;
5029     end;
5030     // 20150306: slut
5031     linienr := linienr + 1;
5032     end;
5033     end;
5034     if antalFelterFundet = antalLiniefelter then
5035     begin
5036     if (ScanningType = '1') then
5037     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
5038     else if (ScanningType = '4') then
5039     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
5040     else if (ScanningType = '5') then
5041     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
5042     else
5043     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
5044     antalFelterFundet := 0;
5045     tjekkodestatus := '';
5046     end;
5047     end;
5048     end;
5049     for pakketypeix := 0 to pakketyper.Count-1 do
5050     begin
5051     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');
5052     end;
5053    
5054     // Free up the list object
5055     pakketyper.Free;
5056     // 20150306: start
5057     // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
5058     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
5059     if (antlinSenere > 0) then
5060     begin
5061     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
5062     end;
5063     logTekst := logTekst + '.';
5064     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
5065     // 20150306: slut
5066     // 20150309: start
5067     if (antlinSenere > 0) then
5068     begin
5069     StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
5070     end
5071     else
5072     begin
5073     StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
5074     end;
5075     // 20150309: slut
5076    
5077     // 20150310: start
5078     if (Scanningtype = '1') then
5079     begin
5080     //antlinIdag := 9876; // til test af boksens udseende ved stort tal
5081     PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
5082     if (antlinIdag + antlinSenere > 0) then
5083     begin
5084     PanelManglendePakker1.Visible := true;
5085     end
5086     else
5087     begin
5088     PanelManglendePakker1.Visible := false;
5089     end;
5090     end;
5091    
5092     if (Scanningtype = '2') then
5093     begin
5094     PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
5095     if (antlinIdag + antlinSenere > 0) then
5096     begin
5097     PanelManglendePakker2.Visible := true;
5098     end
5099     else
5100     begin
5101     PanelManglendePakker2.Visible := false;
5102     end;
5103     end;
5104    
5105     if (Scanningtype = '3') then
5106     begin
5107     PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
5108     if (antlinIdag + antlinSenere > 0) then
5109     begin
5110     PanelManglendePakker3.Visible := true;
5111     end
5112     else
5113     begin
5114     PanelManglendePakker3.Visible := false;
5115     end;
5116     end;
5117    
5118     if (Scanningtype = '4') then
5119     begin
5120     PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
5121     if (antlinIdag + antlinSenere > 0) then
5122     begin
5123     PanelManglendePakker4.Visible := true;
5124     end
5125     else
5126     begin
5127     PanelManglendePakker4.Visible := false;
5128     end;
5129     end;
5130    
5131     if (Scanningtype = '5') then
5132     begin
5133     PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
5134     if (antlinIdag + antlinSenere > 0) then
5135     begin
5136     PanelManglendePakker5.Visible := true;
5137     end
5138     else
5139     begin
5140     PanelManglendePakker5.Visible := false;
5141     end;
5142     end;
5143    
5144     if (Scanningtype = '6') then
5145     begin
5146     PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
5147     if (antlinIdag + antlinSenere > 0) then
5148     begin
5149     PanelManglendePakker6.Visible := true;
5150     end
5151     else
5152     begin
5153     PanelManglendePakker6.Visible := false;
5154     end;
5155     end;
5156     // 20150310: slut
5157    
5158     except on e:exception do
5159     begin
5160     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
5161     logTekst := 'Fejl i XML-format: '+e.Message;
5162     SkrivScanningLogFil(logTekst);
5163     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
5164     end;
5165     end;
5166    
5167     end;
5168    
5169     procedure TMainForm.IndlesScanningLogFil();
5170     var
5171     SomeTxtFile : TextFile;
5172     buffer : string;
5173     S: string;
5174     idag, imorgen : TDateTime;
5175     imorgenYmd : string;
5176     logFilnavn : string;
5177    
5178     begin
5179     idag := Now;
5180     imorgen := IncDay(idag, 1); //adds 1 day(s)
5181     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5182     if (FormatDateTime('hh:nn',idag) < '12:00') then
5183     begin
5184     imorgen := idag;
5185     end;
5186     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5187     logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
5188     if FileExists(logFilnavn) then
5189     begin
5190     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
5191     logTekst := logFilnavn+' indlæses.';
5192     SkrivScanningLogFil(logTekst);
5193     AssignFile(SomeTxtFile, logFilnavn);
5194     try
5195     Reset(SomeTxtFile);
5196     while not EOF(SomeTxtFile) do
5197     begin
5198     ReadLn(SomeTxtFile, buffer) ;
5199     S := buffer;
5200     ListBox1.Items.Insert(0, S);
5201     end;
5202     finally
5203     CloseFile(SomeTxtFile);
5204     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
5205     ListBox1.Items.Insert(0,'');
5206     ListBox1.Items.Insert(0,'');
5207     ListBox1.Items.Insert(0,'');
5208     ListBox1.Items.Insert(0,'');
5209     ListBox1.Items.Insert(0,'');
5210     ListBox1.Items.Insert(0,'');
5211     end;
5212     end;
5213     end;
5214    
5215     procedure TMainForm.SkrivScanningLogFil(var tekst : string);
5216     var
5217     SomeTxtFile : TextFile;
5218     buffer : string;
5219     S: string;
5220     idag, imorgen : TDateTime;
5221     imorgenYmd : string;
5222     logFilnavn : string;
5223     error : Integer;
5224    
5225     begin
5226     if (SkrivLog = '1') then
5227     begin
5228     idag := Now;
5229     imorgen := IncDay(idag, 1); //adds 1 day(s)
5230     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5231     if (FormatDateTime('hh:nn',idag) < '12:00') then
5232     begin
5233     imorgen := idag;
5234     end;
5235     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
5236     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
5237     // Get the current directory
5238     // dir := GetCurrentDir;
5239     // ShowMessage('Current directory = '+dir);
5240     // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
5241     // ShowMessage('logFilnavn = '+logFilnavn);
5242    
5243     if not DirectoryExists('Logs') then
5244     begin
5245     CreateDir('Logs');
5246     end;
5247    
5248     AssignFile(SomeTxtFile, logFilnavn);
5249     if FileExists(logFilnavn) then
5250     begin
5251     try
5252     try
5253     Append(SomeTxtFile);
5254     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5255     except on e:exception do
5256     //ShowMessageFmt('File create failed with error %d',[error]);
5257     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
5258     end;
5259     finally
5260     CloseFile(SomeTxtFile);
5261     end;
5262     end
5263     else
5264     begin
5265     try
5266     try
5267     ReWrite(SomeTxtFile);
5268     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
5269     except on e:exception do
5270     // ShowMessageFmt('File create failed with error %d',[error]);
5271     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
5272     end;
5273     finally
5274     CloseFile(SomeTxtFile);
5275     end;
5276     end;
5277     end;
5278     end;
5279    
5280     procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
5281     var
5282     SomeTxtFile : TextFile;
5283     buffer : string;
5284     linnr : integer;
5285     S: string;
5286     A: TStrArray;
5287     idag, imorgen : TDateTime;
5288     imorgenYmd : string;
5289    
5290     begin
5291     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5292     logTekst := filnavn+' indlæses.';
5293     SkrivScanningLogFil(logTekst);
5294     SetLength(ruteHverdagArray, 1);
5295     SetLength(ruteLordagArray, 1);
5296     idag := Now;
5297     imorgen := IncDay(idag, 1); //adds 1 day(s)
5298     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5299     if (FormatDateTime('hh:nn',idag) < '12:00') then
5300     begin
5301     imorgen := idag;
5302     end;
5303     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5304     if FileExists(filnavn) then
5305     begin
5306     AssignFile(SomeTxtFile, filnavn);
5307     linnr := 0;
5308     try
5309     Reset(SomeTxtFile);
5310     while not EOF(SomeTxtFile) do
5311     begin
5312     ReadLn(SomeTxtFile, buffer) ;
5313     S := buffer;
5314     SetLength(A,0);
5315     Explode(A, ';', S);
5316     if (length(A) < 2) then
5317     begin
5318     Explode(A, ',', S);
5319     end;
5320     if (length(A) > 1) then
5321     begin
5322     SetLength(ruteHverdagArray, linnr+1);
5323     SetLength(ruteLordagArray, linnr+1);
5324     ruteHverdagArray[linnr] := A[0];
5325     ruteLordagArray[linnr] := A[1];
5326     linnr := linnr+1;
5327     end;
5328     end;
5329     finally
5330     //ShowMessage(IntToStr(length(A)));
5331     CloseFile(SomeTxtFile);
5332     //ShowMessage(IntToStr(length(ruteHverdagArray)));
5333     if (linnr > 0) then
5334     begin
5335     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5336     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5337     SkrivScanningLogFil(logTekst);
5338     end
5339     else
5340     begin
5341     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5342     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5343     SkrivScanningLogFil(logTekst);
5344     PlaySound(PWideChar(AlarmLyd));
5345     end;
5346     end;
5347     end
5348     else
5349     begin
5350     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
5351     logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
5352     SkrivScanningLogFil(logTekst);
5353     PlaySound(PWideChar(AlarmLyd));
5354     end;
5355     end;
5356    
5357     procedure TMainForm.IndlesKontrolFil(var filnavn : string);
5358     var
5359     SomeTxtFile : TextFile;
5360     buffer : string;
5361     linnr : integer;
5362     S: string;
5363     A: TStrArray;
5364     idag, imorgen : TDateTime;
5365     imorgenYmd : string;
5366    
5367     begin
5368     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5369     logTekst := filnavn+' indlæses.';
5370     SkrivScanningLogFil(logTekst);
5371     SetLength(ruteArray, 1);
5372     SetLength(korelisteArray, 1);
5373     idag := Now;
5374     imorgen := IncDay(idag, 1); //adds 1 day(s)
5375     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5376     if (FormatDateTime('hh:nn',idag) < '12:00') then
5377     begin
5378     imorgen := idag;
5379     end;
5380     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5381     if FileExists(filnavn) then
5382     begin
5383     AssignFile(SomeTxtFile, filnavn);
5384     linnr := 0;
5385     try
5386     Reset(SomeTxtFile);
5387     while not EOF(SomeTxtFile) do
5388     begin
5389     ReadLn(SomeTxtFile, buffer) ;
5390     S := buffer;
5391     SetLength(A,0);
5392     Explode(A, ';', S);
5393     if (length(A) < 3) then
5394     begin
5395     Explode(A, ',', S);
5396     end;
5397     if (A[0]=imorgenYmd) then
5398     begin
5399     if (length(A) > 2) then
5400     begin
5401     SetLength(ruteArray, linnr+1);
5402     SetLength(korelisteArray, linnr+1);
5403     ruteArray[linnr] := A[1];
5404     korelisteArray[linnr] := A[2];
5405     linnr := linnr+1;
5406     end;
5407     end;
5408     end;
5409     finally
5410     //ShowMessage(IntToStr(length(A)));
5411     CloseFile(SomeTxtFile);
5412     //ShowMessage(IntToStr(length(ruteArray)));
5413     if (linnr > 0) then
5414     begin
5415     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5416     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5417     SkrivScanningLogFil(logTekst);
5418     end
5419     else
5420     begin
5421     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5422     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5423     SkrivScanningLogFil(logTekst);
5424     PlaySound(PWideChar(AlarmLyd));
5425     end;
5426     end;
5427     end
5428     else
5429     begin
5430     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
5431     logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
5432     SkrivScanningLogFil(logTekst);
5433     PlaySound(PWideChar(AlarmLyd));
5434     end;
5435     end;
5436    
5437     //
5438     // Bladhus ***
5439     //
5440     function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
5441     var
5442     i : Integer;
5443     svar : String;
5444    
5445     begin
5446     //ShowMessage('Køreliste 1: '+korelisteArray[0]);
5447     // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
5448     // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
5449     //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
5450    
5451     svar := 'Køreliste ikke i kontrolfil';
5452     case BladhusSted of
5453     01 :
5454     begin;
5455     for i := 0 to length(ruteArray)-1 do
5456     begin
5457     if (Koreliste=ruteArray[i]) then
5458     begin
5459     svar := korelisteArray[i]; // returnerer den forventede køreliste
5460     end;
5461     end;
5462     end;
5463     // 02 : begin;
5464     //ShowMessage('02') ;
5465     // end;
5466     03 : begin;
5467     for i := 0 to length(ruteArray)-1 do
5468     begin
5469     if (Koreliste=ruteArray[i]) then
5470     begin
5471     svar := korelisteArray[i]; // returnerer den forventede køreliste
5472     end;
5473     end;
5474     end;
5475     // 04 : begin;
5476     //ShowMessage('04') ;
5477     // end;
5478     else
5479     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5480     end;
5481     if (RuteNummer = 'Rutenr') then // fra printertest funktionen
5482     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5483    
5484     result := svar;
5485     end;
5486    
5487     function TMainForm.getProddato() : TDate;
5488     var
5489     idag, imorgen : TDateTime;
5490     imorgenYmd : string;
5491    
5492     begin
5493     idag := Now;
5494     imorgen := IncDay(idag, 1); //adds 1 day(s)
5495     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5496     if (FormatDateTime('hh:nn',idag) < '12:00') then
5497     begin
5498     imorgen := idag;
5499     end;
5500     imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
5501     result := StrToDateTime(imorgenYmd);
5502     end;
5503    
5504     function TMainForm.getProddag() : String;
5505     begin
5506     // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
5507     result := LongDayNames[DayOfWeek(getProddato())];
5508     //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
5509     end;
5510    
5511     function TMainForm.retRutenummer(rutenummer : String) : String;
5512     var
5513     i : Integer;
5514     svar : String;
5515    
5516     begin
5517     svar := rutenummer;
5518     case BladhusSted of
5519     01 :
5520     begin;
5521     //ShowMessage('01') ;
5522     end;
5523     // 02 : begin;
5524     //ShowMessage('02') ;
5525     // end;
5526     03 : begin;
5527     for i := 0 to length(ruteHverdagArray)-1 do
5528     begin
5529     if (rutenummer=ruteHverdagArray[i]) then
5530     begin
5531     svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
5532     end;
5533     end;
5534     end;
5535     // 04 : begin;
5536     //ShowMessage('04') ;
5537     // end;
5538     else
5539     svar := rutenummer; // Dette svarer til at rute ikke skal ændres
5540     end;
5541     result := svar;
5542     end;
5543    
5544     function TMainForm.GetCurrentPrinterHandle: THandle;
5545     var
5546     Device, Driver, Port: array[0..255] of Char;
5547     hDeviceMode: THandle;
5548     begin
5549     Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
5550     if not OpenPrinter(@Device, Result, nil) then
5551     RaiseLastWin32Error;
5552     end;
5553    
5554     function TMainForm.SavePChar(p: PChar): PChar;
5555     const
5556     error: PChar = 'Nil';
5557     begin
5558     if not Assigned(p) then
5559     Result := error
5560     else
5561     Result := p;
5562     end;
5563    
5564     procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5565     begin
5566     if Scanogstjekkoden1.Checked then
5567     begin
5568     CheckBox3.Checked := true;
5569     end
5570     else
5571     begin
5572     CheckBox3.Checked := false;
5573     end;
5574     end;
5575    
5576     function TMainForm.AdobeReaderExists: Boolean;
5577     var
5578     AReg: TRegistry;
5579     begin
5580     result:= false;
5581     AReg := TRegistry.Create;
5582     AReg.RootKey := HKEY_LOCAL_MACHINE;
5583     if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then
5584     result:= True;
5585     AReg.Free;
5586     end;
5587    
5588     procedure TMainForm.CheckPrintQue(tjektype : string);
5589     type
5590     TJobs = array [0..1000] of JOB_INFO_1;
5591     PJobs = ^TJobs;
5592     var
5593     hPrinter: THandle;
5594     bytesNeeded, numJobs, i: Cardinal;
5595     pJ: PJobs;
5596     printerTxt, statusTxt, dokumentTxt: String;
5597     begin
5598    
5599     // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1
5600     // 'Test' skal vise alarmlinie, samt opdatere listbox1
5601     // 'Timer' skal kun vise alarmlinie
5602    
5603     if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5604     begin
5605     printerTxt := 'Der er fravalgt printer i dette program';
5606     ListBox1.Items.Insert(0,printerTxt);
5607     SkrivScanningLogFil(printerTxt);
5608     end
5609     else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
5610     begin
5611     printerTxt := 'Der er ikke installeret en printer på denne PC';
5612     ListBox1.Items.Insert(0,printerTxt);
5613     SkrivScanningLogFil(printerTxt);
5614     end
5615     else
5616     begin
5617     hPrinter := GetCurrentPrinterHandle;
5618     try
5619     EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);
5620     pJ := AllocMem(bytesNeeded);
5621     if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then
5622     RaiseLastWin32Error;
5623    
5624     if numJobs = 0 then
5625     begin
5626     if (tjektype = 'Test') then
5627     begin
5628     logTekst := printerTxt + ': Ingen dokumenter i kø';
5629     ListBox1.Items.Insert(0,logTekst);
5630     SkrivScanningLogFil(logTekst);
5631     end;
5632     PrinterstatusStaticText1.Caption := '';
5633     PrinterstatusStaticText1.Color := MainForm.Color;
5634     end
5635     else // så er der kø til printeren
5636     begin
5637     printerTxt := SavePChar(pJ^[0].pPrinterName);
5638     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5639     begin
5640     logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;
5641     ListBox1.Items.Insert(0,logTekst);
5642     SkrivScanningLogFil(logTekst);
5643     end;
5644     for i := 0 to Pred(numJobs) do
5645     begin
5646     printerTxt := SavePChar(pJ^[i].pPrinterName);
5647     statusTxt := 'Ukendt';
5648     if (IntToStr(pJ^[i].Status) = '0') then
5649     statusTxt := 'Venter...';
5650     if (IntToStr(pJ^[i].Status) = '4096') then
5651     statusTxt := 'Printer...';
5652     if (IntToStr(pJ^[i].Status) = '8210') then
5653     statusTxt := 'Printerfejl';
5654     if (IntToStr(pJ^[i].Status) = '8214') then
5655     statusTxt := 'Sletter print...';
5656    
5657     dokumentTxt := SavePChar(pJ^[i].pDocument);
5658     if (dokumentTxt = '') then
5659     dokumentTxt := 'Uden navn';
5660    
5661     if (tjektype = 'Opstart') or (tjektype = 'Test') then
5662     begin
5663     logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',
5664     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);
5665     ListBox1.Items.Insert(0,logTekst);
5666     SkrivScanningLogFil(logTekst);
5667     end;
5668    
5669     if (i = 0) then
5670     begin
5671     PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;
5672     PrinterstatusStaticText1.Font.Color := clBlack;
5673     PrinterstatusStaticText1.Color := MainForm.Color;
5674     PrinterstatusStaticText1.Transparent := True;
5675     if (numJobs > 3) then
5676     begin
5677     PrinterstatusStaticText1.Font.Color := clRed;
5678     PrinterstatusStaticText1.Color := clWhite;
5679     PrinterstatusStaticText1.Transparent := true;
5680     end;
5681     end;
5682    
5683     end;
5684     end
5685     finally
5686     ClosePrinter(hPrinter);
5687     end;
5688     end;
5689     end;
5690    
5691     function TMainForm.CheckUrl(url:string):boolean;
5692     var
5693     hSession, hfile, hRequest: hInternet;
5694     dwindex,dwcodelen :dword;
5695     dwcode:array[1..20] of char;
5696     res : pchar;
5697     begin
5698     if pos('http://',lowercase(url))=0 then
5699     url := 'http://'+url;
5700     Result := false;
5701     hSession := InternetOpen('InetURL:/1.0',
5702     INTERNET_OPEN_TYPE_PRECONFIG,
5703     nil,
5704     nil,
5705     0);
5706     if assigned(hsession) then
5707     begin
5708     hfile := InternetOpenUrl(hsession,
5709     pchar(url),
5710     nil,
5711     0,
5712     INTERNET_FLAG_RELOAD,
5713     0);
5714     dwIndex := 0;
5715     dwCodeLen := 10;
5716     HttpQueryInfo(hfile,
5717     HTTP_QUERY_STATUS_CODE,
5718     @dwcode,
5719     dwcodeLen,
5720     dwIndex);
5721     res := pchar(@dwcode);
5722     result:= (res ='200') or (res ='302');
5723     if assigned(hfile) then
5724     InternetCloseHandle(hfile);
5725     InternetCloseHandle(hsession);
5726     end;
5727    
5728     end;
5729    
5730     // 20150310: start
5731     procedure TMainForm.RoundCornerOf(Control: TWinControl);
5732     var
5733     R: TRect;
5734     Rgn: HRGN;
5735     begin
5736     with Control do
5737     begin
5738     R := ClientRect;
5739     // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;
5740     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;
5741     // rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;
5742     Perform(EM_GETRECT, 0, lParam(@r)) ;
5743     InflateRect(r, - 4, - 4) ;
5744     Perform(EM_SETRECTNP, 0, lParam(@r)) ;
5745     SetWindowRgn(Handle, rgn, True) ;
5746     Invalidate;
5747     end;
5748     end;
5749     // 20150310: slut
5750    
5751     end.
5752    

  ViewVC Help
Powered by ViewVC 1.1.20