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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20