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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20