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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2660 - (hide annotations) (download)
Sun Aug 23 14:45:16 2015 UTC (8 years, 9 months ago) by torben
File size: 191742 byte(s)
Silence warnings
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     PlaySound(PWideChar(AlarmLyd));
1625     //List1msg := 'SQL fejl: ' + Kommentar;
1626     //ListBox1.Items.Insert(0,List1Msg);
1627     MainForm.Color := clRed;
1628     //KommentarST.Caption := List1msg;
1629     PakkeshopNulstil.Visible := true;
1630     exit;
1631     end;
1632     if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
1633     begin
1634     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1635     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
1636     if pakkeErScannet = 0 then
1637     begin
1638     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
1639     end;
1640     if pakkeErScannet = 0 then
1641     begin
1642     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
1643     end;
1644     pakkeForkertSted := pos('burde være hos', Kommentar);
1645     tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1646     if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1647     begin
1648     PlaySound(PWideChar(AlarmLyd));
1649     PakkeshopNulstil.Visible := true;
1650     MainForm.Color := clRed;
1651     end;
1652     end;
1653     if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1654     begin
1655     MainForm.Color := HexToTColor(Farve);
1656     if Storepakker1.Checked then
1657     begin
1658     PlaySound(PWideChar(ScannetOkStorLyd));
1659     end
1660     else
1661     begin
1662     PlaySound(PWideChar(ScannetOkLyd));
1663     end;
1664     PakkeshopNulstil.Visible := false;
1665     end
1666     else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1667     begin
1668     MainForm.Color := HexToTColor(Farve);
1669     if Storepakker1.Checked then
1670     begin
1671     PlaySound(PWideChar(ScannetOkStorLyd));
1672     end
1673     else
1674     begin
1675     PlaySound(PWideChar(ScannetOkLyd));
1676     end;
1677     PakkeshopNulstil.Visible := false;
1678     end
1679     else if Copy(Kommentar,1,8) = 'OPRETTET' then
1680     begin
1681 torben 2659 VisAlarmSkaerm( 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages' );
1682 torben 2645 end
1683     else if Kommentar = StregKode then // budlevering til 'Ukendt tur'
1684     begin
1685     end
1686     else
1687     begin
1688     MainForm.Color := clRed;
1689     PlaySound(PWideChar(AlarmLyd));
1690     PakkeshopNulstil.Visible := true;
1691     end;
1692     if not PakkeshopNulstil.Visible then
1693     begin
1694 torben 2659
1695 torben 2645 If (Budlevering1.Checked) then
1696     begin
1697     if Storepakker1.Checked then
1698     begin
1699     PlaySound(PWideChar(ScannetOkStorLyd));
1700     end
1701     else
1702     begin
1703     PlaySound(PWideChar(ScannetOkLyd));
1704     end;
1705     InitLillePakke();
1706     end;
1707     end;
1708 torben 2659
1709 torben 2645 SletStregkodelinieFraListboks2(StregKode);
1710 torben 2659
1711 torben 2645 PakkeshopStregkode := '';
1712     PakkeshopTjekkode := '';
1713     BoghandlerStregkode := '';
1714     BoghandlerTjekkode := '';
1715     finally
1716     Stregkode := '';
1717     end
1718     end
1719     end
1720     else
1721     begin
1722     if (Key <> #22) then
1723     begin
1724     Stregkode := Stregkode + Key;
1725     end;
1726     StregkodeST.Caption := StregKode;
1727     end;
1728    
1729     if Key = #8 then // backspace key
1730     begin
1731     StregKode := LeftStr(StregKode,Length(StregKode)-2);
1732     end;
1733    
1734     if Key = #27 then // esc key
1735     begin
1736     Stregkode := '';
1737     end;
1738    
1739     Key := #0;
1740    
1741 torben 2656 end; //End of OnKeyPress
1742 torben 2645
1743     procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1744     const
1745     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
1746     var
1747     WebSvar : String;
1748     URLStr : String;
1749     begin
1750     if UrlSendPrograminfo <> '' then
1751     begin
1752     URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1753     try
1754     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
1755     WebSvar := IdHTTP1.Get(URLStr);
1756     //IdHTTP1.Disconnect();
1757     except on e:exception do
1758     begin
1759     // ShowMessage(e.Message);
1760     // raise exception.CreateFmt('Fejl i forbindelse til server: %s',[e.Message]);
1761     logTekst := 'Der er opstået en fejl i kommunikationen med serveren.' + crlf + crlf + 'Programmet afsluttes... ' + crlf + crlf + 'Program rutine: SendTilServeren' + crlf + 'Fejl: ' + e.Message;
1762     ShowMessage(logTekst);
1763     SkrivScanningLogFil(logTekst);
1764     // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1765     UrlSendPrograminfo := '';
1766     Application.Terminate;
1767     end;
1768     end;
1769     if (WebSvar <> '') and (pos('Error', WebSvar) > 0) then
1770     begin
1771     ShowMessage(WebSvar);
1772     end;
1773     end;
1774     end;
1775    
1776     procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1777     var
1778     i : Integer;
1779     wrkAntal : String;
1780     wrkAntalIdag, wrkAntalSenere : Integer;
1781    
1782 torben 2656
1783 torben 2645 begin
1784     if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then
1785     begin
1786     for i := ListBox2.items.count-1 downto 0 do
1787     if pos(StregKode,ListBox2.items[i]) <> 0 then
1788     begin
1789 torben 2656
1790 torben 2645 // Ajourføring af tæller for manglende pakker (scanninger)
1791     wrkAntal := StaticTextManglendePakker.Caption;
1792     if (pos('/', wrkAntal) > 0) then // både pakker idag og senere
1793     begin
1794     wrkAntal := wrkAntal + '/'; // tilføjer '/' sidst i feltet af hensyn til split funktionen
1795     wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));
1796     // ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1797     // ShowMessage(SPLIT('data/another/','/',3));
1798     // ShowMessage(SPLIT('data/another','/',3));
1799     wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));
1800     end
1801     else // kun idag
1802     begin
1803     wrkAntalIdag := StrToInt(wrkAntal);
1804     end;
1805     if pos(StregKode + ' (',ListBox2.items[i]) <> 0 then // pakke til senere levering
1806     begin
1807     //ShowMessage('Senere ' + IntToStr(wrkAntalIdag) + ' ' + IntToStr(wrkAntalSenere));
1808     wrkAntalSenere := wrkAntalSenere - 1;
1809     // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1810     end
1811     else
1812     begin
1813     // ShowMessage('Idag');
1814     wrkAntalIdag := wrkAntalIdag - 1;
1815     // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1816     end;
1817     if (wrkAntalSenere > 0) then
1818     begin
1819     StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1820     end
1821     else
1822     begin
1823     StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1824     end;
1825    
1826     if (Scanningtype = '1') then
1827     begin
1828     PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1829     if (wrkAntalIdag + wrkAntalSenere > 0) then
1830     begin
1831     PanelManglendePakker1.Visible := true;
1832     end
1833     else
1834     begin
1835     PanelManglendePakker1.Visible := false;
1836     end;
1837     end;
1838    
1839     if (Scanningtype = '2') then
1840     begin
1841     PanelManglendePakker2.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1842     if (wrkAntalIdag + wrkAntalSenere > 0) then
1843     begin
1844     PanelManglendePakker2.Visible := true;
1845     end
1846     else
1847     begin
1848     PanelManglendePakker2.Visible := false;
1849     end;
1850     end;
1851    
1852     if (Scanningtype = '3') then
1853     begin
1854     PanelManglendePakker3.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1855     if (wrkAntalIdag + wrkAntalSenere > 0) then
1856     begin
1857     PanelManglendePakker3.Visible := true;
1858     end
1859     else
1860     begin
1861     PanelManglendePakker3.Visible := false;
1862     end;
1863     end;
1864    
1865     if (Scanningtype = '4') then
1866     begin
1867     PanelManglendePakker4.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1868     if (wrkAntalIdag + wrkAntalSenere > 0) then
1869     begin
1870     PanelManglendePakker4.Visible := true;
1871     end
1872     else
1873     begin
1874     PanelManglendePakker4.Visible := false;
1875     end;
1876     end;
1877    
1878     if (Scanningtype = '5') then
1879     begin
1880     PanelManglendePakker5.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1881     if (wrkAntalIdag + wrkAntalSenere > 0) then
1882     begin
1883     PanelManglendePakker5.Visible := true;
1884     end
1885     else
1886     begin
1887     PanelManglendePakker5.Visible := false;
1888     end;
1889     end;
1890    
1891     if (Scanningtype = '6') then
1892     begin
1893     PanelManglendePakker6.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1894     if (wrkAntalIdag + wrkAntalSenere > 0) then
1895     begin
1896     PanelManglendePakker6.Visible := true;
1897     end
1898     else
1899     begin
1900     PanelManglendePakker6.Visible := false;
1901     end;
1902     end;
1903     // 20150310: slut
1904     ListBox2.items.delete(i);
1905     end;
1906     end;
1907     end;
1908    
1909     procedure TMainForm.StartScreen();
1910     begin
1911     if Org_RuteNummerST = '' then
1912     Org_RuteNummerST := RuteNummerST.Caption;
1913     if Org_BoghandlerNavnST = '' then
1914     Org_BoghandlerNavnST := BoghandlerNavnST.Caption;
1915     if Org_KommentarST = '' then
1916     Org_KommentarST := KommentarST.Caption;
1917     RuteNummerST.Caption := Org_RuteNummerST;
1918     BoghandlerNavnST.Caption := Org_BoghandlerNavnST;
1919     KommentarST.Caption := Org_KommentarST;
1920     end;
1921    
1922     procedure TMainForm.InitScreen();
1923     begin
1924     RuteNummerST.Caption := '';
1925     KommentarST.Caption := '';
1926     BoghandlerNavnST.Caption := '';
1927     end;
1928    
1929     procedure TMainForm.InitBladhus();
1930    
1931     begin
1932     Altidprintepakkelabel1.Enabled := false;
1933     Pakkernormal1.Visible := false;
1934     ReturpakkerfraDAO1.Visible := false;
1935     Returpakkerfraboghandler1.Visible := false;
1936     Sprgefterboghandlernummer1.Enabled := false;
1937     ListBox1.Visible := true;
1938     // TestFunktionen := '1';
1939     // 20150317: start
1940     (*
1941     if TestFunktionen = '1' then
1942     begin
1943     Testforbindelsen1.Visible := true;
1944     Testprinter1.Visible := true;
1945     Testlyd1.Visible := true;
1946     Testlyd2.Visible := true;
1947     end
1948     else if TestFunktionen = '2' then
1949     begin
1950     Testforbindelsen1.Enabled := false;
1951     Testprinter1.Enabled := false;
1952     Testlyd1.Enabled := false;
1953     Testlyd2.Enabled := false;
1954     end
1955     else
1956     begin
1957     Testforbindelsen1.Visible := false;
1958     Testprinter1.Visible := false;
1959     Testlyd1.Visible := false;
1960     Testlyd2.Visible := false;
1961     end;
1962     Testprinter1.Visible := false;
1963     AlarmLyd := 'Sounds\Alarm.wav';
1964     if not FileExists(AlarmLyd) then
1965     begin
1966     AlarmLyd := '';
1967     end;
1968     ScannetOkLyd := 'Sounds\Ok.wav';
1969     if not FileExists(ScannetOkLyd) then
1970     begin
1971     ScannetOkLyd := '';
1972     end;
1973     ScannetOkStorLyd := 'Sounds\Ok_stor.wav';
1974     if not FileExists(ScannetOkStorLyd) then
1975     begin
1976     ScannetOkStorLyd := '';
1977     end;
1978     *)
1979     // 20150317: slut
1980     if Budlevering1.Checked then
1981     begin
1982     IndlesScanningLogFil();
1983     end;
1984    
1985     //
1986     // Bladhus ***
1987     //
1988     case BladhusSted of
1989     01 :
1990     begin; // NS
1991     Testprinter1.Visible := true;
1992     DownloadButton01.Enabled := true;
1993     OpdaterListenButton01.Enabled := true;
1994     IdFTP1.Passive := true;
1995     IdFTP1.PassiveUseControlHost := true;
1996     BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
1997     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
1998     DownloadBladhusKontrolfil();
1999     IndlesManglendeScanninger();
2000     end;
2001     02 :
2002     begin; // BK
2003     Testprinter1.Visible := true;
2004     Smpakker1.Enabled := true;
2005     Storepakker1.Enabled := true;
2006 torben 2655 radioStorPakke.Enabled := true;
2007     radioLillePakke.Enabled := true;
2008 torben 2645 DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2009     OpdaterListenButton01.Enabled := true;
2010     IdFTP1.Passive := true;
2011     IdFTP1.PassiveUseControlHost := true;
2012     IndlesManglendeScanninger();
2013     end;
2014     03 :
2015     begin; // FD
2016     Testprinter1.Visible := true;
2017     if (getProddag() = 'lørdag') then
2018     begin
2019     DownloadButton03.Visible := false;
2020     end
2021     else
2022     begin
2023     DownloadButton03.Visible := false;
2024     end;
2025     DownloadButton01.Enabled := true;
2026     OpdaterListenButton01.Enabled := true;
2027     IdFTP1.Passive := true;
2028     IdFTP1.PassiveUseControlHost := true;
2029     BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
2030     BladhusRuteskiftfil_lokal := 'RuteSkift.txt';
2031     if (getProddag() = 'lørdag') then
2032     begin
2033     //DownloadBladhusRuteskiftfil(); // Skal ikke bruges endnu
2034     end;
2035     BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
2036     BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2037     DownloadBladhusKontrolfil();
2038     IndlesManglendeScanninger();
2039     end;
2040     04 : begin; // DBK
2041     Testprinter1.Visible := true;
2042     Smpakker1.Enabled := true;
2043     Storepakker1.Enabled := true;
2044 torben 2655 radioStorPakke.Enabled := true;
2045     radioLillePakke.Enabled := true;
2046 torben 2645 DownloadButton01.Enabled := false; // kontrolfil bruges ikke her
2047     OpdaterListenButton01.Enabled := true;
2048     IdFTP1.Passive := true;
2049     IdFTP1.PassiveUseControlHost := true;
2050     end;
2051     else
2052     //ShowMessage('Ukendt Bladhus sted ???') ;
2053     end;
2054    
2055     end;
2056    
2057     procedure TMainForm.HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
2058     var
2059     WebSvar : String;
2060     URLStr : String;
2061     pakkestorrelse : String;
2062     PrintNyLabelInteger : Integer;
2063     begin
2064 torben 2655 if radioStorPakke.Checked then
2065 torben 2645 begin
2066     pakkestorrelse := 'Stor';
2067     end;
2068 torben 2655 if radioLillePakke.Checked then
2069 torben 2645 begin
2070     pakkestorrelse := 'Lille';
2071     end;
2072     if Pakkernormal1.Checked then
2073     begin
2074     if (BoghandlerTjekkode = '') then
2075     begin
2076     BoghandlerTjekkode := '-1';
2077     end;
2078     URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2079     end
2080     else if ReturpakkerfraDAO1.Checked then
2081     begin
2082     URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2083     end
2084     else if Returpakkerfraboghandler1.Checked then
2085     begin
2086     URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2087     end
2088     else if Budlevering1.Checked then
2089     begin
2090     URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2091     end
2092     else if Pakkeshoplevering1.Checked then
2093     begin
2094     URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2095     end
2096     else if Returpakkerfrapakkeshop1.Checked then
2097     begin
2098     URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2099     end
2100     else
2101     begin
2102     exit;
2103     end;
2104     try
2105     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2106     WebSvar := IdHTTP1.Get(URLStr);
2107     //IdHTTP1.Disconnect();
2108     except on e:EIdConnClosedGracefully do
2109     begin
2110     // Her skal vi ikke gøre noget - men vi skal forespørge igen
2111     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer';
2112     SkrivScanningLogFil(logTekst);
2113     try
2114     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2115     WebSvar := IdHTTP1.Get(URLStr);
2116     except on e:EIdConnClosedGracefully do
2117     begin
2118     logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer igen';
2119     SkrivScanningLogFil(logTekst);
2120     WebSvar := IdHTTP1.Get(URLStr);
2121     end;
2122     end;
2123     end;
2124     end;
2125     XMLDocument1.LoadFromXML(WebSvar);
2126     try
2127     if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
2128     begin
2129     RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2130     Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2131     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2132     BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2133     PrintNyLabel := False;
2134 torben 2656
2135 torben 2645 if Pakkeshoplevering1.Checked then
2136     begin
2137     try
2138     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2139     except on e:exception do
2140     PrintNyLabelInteger := 0;
2141     end;
2142     if (PrintNyLabelInteger = 1) then
2143     begin
2144     PrintNyLabel := True;
2145     end;
2146     // 20150310: start
2147     end;
2148     // 20150310: slut
2149     end
2150     else
2151     begin
2152     RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
2153     Koreliste := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Koreliste').Text;
2154     Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2155     BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2156     Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2157     if Budlevering1.Checked then
2158     begin
2159     try
2160     SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
2161     except on e:exception do
2162     SmsKode := '';
2163     end;
2164     try
2165     DBKbane := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('DBKbane').Text;
2166     except on e:exception do
2167     DBKbane := '';
2168     end;
2169     end;
2170     PrintNyLabel := False;
2171     try
2172     PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('PrintPakkeLabel').Text);
2173     except on e:exception do
2174     PrintNyLabelInteger := 0;
2175     end;
2176     PrintNyLabel := False;
2177     if (PrintNyLabelInteger = 1) then
2178     begin
2179     PrintNyLabel := True;
2180     end;
2181     end;
2182     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2183     begin
2184     if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2185     begin
2186     Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2187     PrintNyLabel := False;
2188     end;
2189     end
2190     else if (Budlevering1.Checked) and (Leveringssted <> Sted) then
2191     begin
2192     if (Leveringssted = 'E') and (Sted = 'DBK') then
2193     begin
2194     // Det er ok at DBK scanner pakker til E (Schenker)
2195     end
2196     else
2197     begin
2198     Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2199     PrintNyLabel := False;
2200     end;
2201     end;
2202     except on e:exception do
2203     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
2204     end;
2205     end;
2206    
2207    
2208     procedure TMainForm.UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghNr : String);
2209     var
2210     List1Msg, List1Pakkestorrelse : String;
2211     begin
2212     RuteNummerST.Caption := RuteNummer;
2213     KommentarST.Caption := Kommentar;
2214     KommentarST.Caption := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2215     KommentarST.Caption := StringReplace(KommentarST.Caption, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2216     //Label1.Caption := Kommentar; // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2217     BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2218     List1msg := TimeToStr(now) + '; ';
2219     if Pakkeshoplevering1.Checked then
2220     List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2221     List1Pakkestorrelse := '';
2222 torben 2655 if radioStorPakke.Checked then
2223 torben 2645 begin
2224     List1Pakkestorrelse := 'Stor pakke';
2225     end;
2226 torben 2655 if radioLillePakke.Checked then
2227 torben 2645 begin
2228     List1Pakkestorrelse := 'Lille pakke';
2229     end;
2230     List1msg := List1msg + BoghandlerNavn + '; ';
2231     if ReturpakkerfraDAO1.Checked then
2232     begin
2233     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2234     end;
2235     if Returpakkerfraboghandler1.Checked then
2236     begin
2237     List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2238     end;
2239     if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then
2240     List1msg := List1msg + '; ' + List1Pakkestorrelse;
2241     if length(BoghNr) > 0 then
2242     begin
2243     List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2244     end;
2245     if Budlevering1.Checked then
2246     begin
2247     List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2248 torben 2655 if (radioStorPakke.Checked) then
2249 torben 2645 begin
2250     List1msg := List1msg + '; Stor pakke';
2251     end;
2252 torben 2655 if (radioLillePakke.Checked) then
2253 torben 2645 begin
2254     List1msg := List1msg + '; Lille pakke';
2255     end;
2256     end;
2257     if Returpakkerfrapakkeshop1.Checked then
2258     begin
2259     List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2260     end;
2261     if Pakkernormal1.Checked then
2262     begin
2263     if (Kommentar = '***** Kommentar *****') // fra test printer funktionen
2264     or (BoghandlerNavn = 'Forbindelse ok') // fra test forbindelse funktionen
2265     or (BoghandlerNavn = 'Fejl i forbindelse til server') then // fra test forbindelse funktionen
2266     begin
2267     List1msg := List1msg + '; ' + Stregkode + '; ' + Kommentar;
2268     end
2269     else
2270     begin
2271     List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2272     end;
2273     end;
2274     ListBox1.Items.Insert(0,List1Msg);
2275     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2276     SkrivScanningLogFil(logTekst);
2277     end;
2278    
2279     procedure TMainForm.UploadButton01Click(Sender: TObject);
2280     begin
2281     UploadLogfilTilDAO();
2282     UploadInifilTilDAO();
2283     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
2284     end;
2285    
2286     procedure TMainForm.PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2287     var
2288     ClickedOK: Boolean;
2289     pakkeErScannet : Integer;
2290     pakkeForkertSted : Integer;
2291     List1Msg : String;
2292     kontrolKoreliste : string;
2293     nytRuteNummer, nyFarve : String;
2294     begin
2295     if Budlevering1.Checked then
2296     RuteNummerST.Color := HexToTColor(Farve);
2297    
2298     pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2299     if pakkeErScannet = 0 then
2300     begin
2301     pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2302     end;
2303     if pakkeErScannet = 0 then
2304     begin
2305     pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2306     end;
2307     pakkeForkertSted := pos('burde være hos', Kommentar);
2308    
2309 torben 2656
2310 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
2311 torben 2656
2312 torben 2645 begin
2313     if (RuteNummer = 'Ukendt') then
2314     begin
2315     repeat
2316     begin
2317     ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2318     end
2319     until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2320     if not ClickedOK then
2321     begin
2322     exit;
2323     end;
2324     if (Length(BoghandlerNummer) > 2) then
2325     begin
2326     InitScreen();
2327     HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2328     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2329     end;
2330     end;
2331     end
2332     else
2333     if Budlevering1.Checked then
2334     begin
2335     if (BoghandlerNavn = 'Ukendt pakke') then
2336     begin
2337     PrintNyLabel := false;
2338 torben 2656
2339 torben 2645 PlaySound(PWideChar(AlarmLyd));
2340     MainForm.Color := clRed;
2341     PakkeshopNulstil.Visible := true;
2342 torben 2656
2343 torben 2645 end
2344     else
2345     begin
2346     nytRuteNummer := retRutenummer(RuteNummer);
2347     if (nytRuteNummer <> RuteNummer) then
2348     begin
2349     PrintNyLabel := true;
2350     RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2351     nyFarve := Farve;
2352     RuteNummerST.Color := HexToTColor(nyFarve);
2353     List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2354     RuteNummer := nytRuteNummer;
2355     ListBox1.Items.Insert(0,List1Msg);
2356     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2357     SkrivScanningLogFil(logTekst);
2358 torben 2656
2359 torben 2645 if (PrinterNavn = 'Ingen') then
2360     begin
2361     PrintNyLabel := false;
2362     end;
2363 torben 2656
2364 torben 2645 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2365     begin
2366     PlaySound(PWideChar(AlarmLyd));
2367     MainForm.Color := clRed;
2368     PakkeshopNulstil.Visible := true;
2369     end;
2370 torben 2656
2371 torben 2645 end;
2372     kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2373     if (kontrolKoreliste <> RuteNummer) then
2374     begin
2375     PrintNyLabel := true;
2376     List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2377     if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2378     begin
2379     PrintNyLabel := false;
2380     RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2381     end
2382     else
2383     begin
2384     RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2385     end;
2386     ListBox1.Items.Insert(0,List1Msg);
2387     logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2388     SkrivScanningLogFil(logTekst);
2389 torben 2656
2390 torben 2645 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2391     begin
2392     PlaySound(PWideChar(AlarmLyd));
2393     MainForm.Color := clRed;
2394     PakkeshopNulstil.Visible := true;
2395     end;
2396 torben 2656
2397 torben 2645 end;
2398     end;
2399    
2400     end;
2401    
2402     if Budlevering1.Checked then
2403     begin
2404     case BladhusSted of
2405     00 : begin;
2406     // 20150304: start
2407     // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2408     // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2409     // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2410     // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2411     if PrintNyLabel or (RuteNummer = 'Rutenr') then
2412     // 20150304: slut
2413     begin
2414     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2415     end;
2416     end;
2417     01 : begin;
2418     if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2419     // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2420     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2421     begin
2422     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2423     end;
2424     end;
2425     02 : begin;
2426     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2427     begin
2428     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2429     end;
2430     end;
2431     03 : begin;
2432     if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2433     // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2434     // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2435     begin
2436     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2437     end;
2438     end;
2439     04 : begin;
2440     if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2441     begin
2442     SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2443     end;
2444     end;
2445     else
2446     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2447     end;
2448     end;
2449    
2450     // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2451     if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2452     begin
2453     exit;
2454     end;
2455    
2456 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
2457 torben 2645 begin
2458     end
2459     else
2460     begin
2461 torben 2652 if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2462 torben 2645 begin
2463     logTekst := 'Printer label type ';
2464 torben 2652 if (chkAltidPrintLabel.Checked) then
2465 torben 2645 begin
2466     logTekst := logTekst + 'Alle ';
2467     end
2468     else if (PrintNyLabel) then
2469     begin
2470     logTekst := logTekst + 'Rute ';
2471     end
2472     else
2473     begin
2474     logTekst := logTekst + 'Ukendt ';
2475     end;
2476     logTekst := logTekst + ' for '+BoghandlerNavn;
2477     SkrivScanningLogFil(logTekst);
2478     with Printer do
2479     begin
2480     BeginDoc;
2481     Canvas.Font.Size := FontSizeRute;
2482     if (Length(RuteNummer) > 7) then
2483     begin
2484     Canvas.Font.Size := FontSizeRuteLille;
2485     end;
2486     Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2487     Canvas.Font.Size := FontSizeKommentar;
2488     Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2489     if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then
2490     begin
2491     Kommentar := '';
2492     end;
2493     if (BoghandlerNavn = 'PAKKE ER SCANNET') then
2494     begin
2495     BoghandlerNavn := '';
2496     end;
2497     Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2498     Canvas.Font.Size := FontSizeBoghandler;
2499     Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2500     EndDoc;
2501     end;
2502     end;
2503     end;
2504    
2505     end;
2506    
2507     procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2508     begin
2509     with Printer do
2510     begin
2511     BeginDoc;
2512     Canvas.Font.Size := FontSizeRuteLille;
2513     if (kontrolKoreliste <> '') then
2514     begin
2515     Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);
2516     end
2517     else
2518     begin
2519     Canvas.TextOut(XPosRute,YPosRute, RuteNummer);
2520     end;
2521     Canvas.Font.Size := FontSizeKorelisteLille;
2522     Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);
2523     if (Sted = 'DBK') or (Sted = '04') then
2524     begin
2525     Canvas.Font.Size := FontSizeSorteringsfelt1;
2526     Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane); // sorteringsoplysning 1
2527     Canvas.Font.Size := FontSizeSorteringsfelt1;
2528     Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted); // sorteringsoplysning 2
2529     end;
2530     Canvas.Font.Size := FontSizeKommentar;
2531 torben 2656
2532 torben 2645 Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2533     Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);
2534 torben 2656
2535 torben 2645 Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar); // Kan ikke lave linieskift (se tidligere kommentar om samme)
2536     if SmsKode <> '' then
2537     begin
2538     Canvas.Font.Size := FontSizeSmskode;
2539     Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));
2540     end;
2541     Canvas.Font.Size := FontSizeBoghandler;
2542     Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);
2543     EndDoc;
2544     end;
2545     end;
2546    
2547    
2548 torben 2655 procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2549 torben 2645 begin
2550     Storepakker1.Checked := true;
2551 torben 2655 radioStorPakke.Checked := true;
2552 torben 2645 end;
2553    
2554 torben 2655 procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2555 torben 2645 begin
2556     Smpakker1.Checked := true;
2557 torben 2655 radioLillePakke.Checked := true;
2558 torben 2645 end;
2559    
2560    
2561 torben 2653 procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2562 torben 2645 begin
2563 torben 2653 if chkSporgEfterKunde.Checked then
2564 torben 2645 begin
2565     Sprgefterboghandlernummer1.Checked := true;
2566     end
2567     else
2568     begin
2569     Sprgefterboghandlernummer1.Checked := false;
2570     end;
2571     end;
2572    
2573    
2574 torben 2652 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2575 torben 2645 begin
2576 torben 2652 if chkAltidPrintLabel.Checked then
2577 torben 2645 begin
2578     Altidprintepakkelabel1.Checked := true;
2579     end
2580     else
2581     begin
2582     Altidprintepakkelabel1.Checked := false;
2583     end;
2584    
2585     end;
2586    
2587 torben 2654 procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2588 torben 2645 begin
2589 torben 2654 if chkScanTjekkode.Checked then
2590 torben 2645 begin
2591     Scanogstjekkoden1.Checked := true;
2592     end
2593     else
2594     begin
2595     Scanogstjekkoden1.Checked := false;
2596     end;
2597     end;
2598    
2599     procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);
2600     begin
2601     Scanningtype := '5';
2602     InitPakkeshoplevering();
2603     NulstilAutomatiskValg();
2604     end;
2605    
2606     procedure TMainForm.NulstilAutomatiskValg();
2607     begin
2608     Automatiskvalg1.Checked := false;
2609     PanelValgA.Color := clBtnFace;
2610     PanelValgA.Font.Color := clWindowText;
2611 torben 2656
2612 torben 2645 if (SpecialVersionSted = '01')
2613 torben 2656 or (SpecialVersionSted = '02')
2614     or (SpecialVersionSted = '03')
2615     or (SpecialVersionSted = '04') then
2616 torben 2645 begin
2617     // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2618     PanelValgA.Enabled := false;
2619     PanelValgA.Font.Color := clInactiveCaption;
2620     Automatiskvalg1.Enabled := false;
2621     end;
2622     // 20150317: slut
2623     end;
2624    
2625     procedure TMainForm.TjekkerUrls();
2626     const
2627     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2628     var
2629     urlFejl : Integer;
2630     begin
2631     urlFejl := 0;
2632     //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2633     ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2634    
2635     // Tjekker urls
2636     logTekst := 'Tjekker urls.';
2637     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2638     SkrivScanningLogFil(logTekst);
2639    
2640     // Tjekker UrlNormal
2641     if PanelValg1.Enabled = true then
2642     begin
2643     if CheckUrl(UrlNormal) then
2644     begin
2645     logTekst := 'UrlNormal accepteret: ' + UrlNormal;
2646     SkrivScanningLogFil(logTekst);
2647     end
2648     else
2649     begin
2650     inc(urlFejl); // Optæller antal fejl
2651     logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;
2652     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2653     if TjekUrls = '1' then
2654     begin
2655     TjekUrls := '-'; // markerer at der var fejl
2656     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2657     end;
2658     SkrivScanningLogFil(logTekst);
2659     if TjekUrls = '1' then
2660     begin
2661     ShowMessage(logTekst);
2662     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2663     Application.Terminate;
2664     exit;
2665     end;
2666     end;
2667     end;
2668    
2669     // Tjekker UrlReturDAO
2670     if PanelValg2.Enabled = true then
2671     begin
2672     if CheckUrl(UrlReturDAO) then
2673     begin
2674     logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;
2675     SkrivScanningLogFil(logTekst);
2676     end
2677     else
2678     begin
2679     inc(urlFejl); // Optæller antal fejl
2680     logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;
2681     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2682     if TjekUrls = '1' then
2683     begin
2684     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2685     end;
2686     SkrivScanningLogFil(logTekst);
2687     if TjekUrls = '1' then
2688     begin
2689     ShowMessage(logTekst);
2690     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2691     Application.Terminate;
2692     exit;
2693     end;
2694     end;
2695     end;
2696    
2697     // Tjekker UrlReturBoghandler
2698     if PanelValg3.Enabled = true then
2699     begin
2700     if CheckUrl(UrlReturBoghandler) then
2701     begin
2702     logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;
2703     SkrivScanningLogFil(logTekst);
2704     end
2705     else
2706     begin
2707     inc(urlFejl); // Optæller antal fejl
2708     logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;
2709     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2710     if TjekUrls = '1' then
2711     begin
2712     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2713     end;
2714     SkrivScanningLogFil(logTekst);
2715     if TjekUrls = '1' then
2716     begin
2717     ShowMessage(logTekst);
2718     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2719     Application.Terminate;
2720     exit;
2721     end;
2722     end;
2723     end;
2724    
2725     // Tjekker UrlBudlevering
2726     if PanelValg4.Enabled = true then
2727     begin
2728     if CheckUrl(UrlBudlevering) then
2729     begin
2730     logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;
2731     SkrivScanningLogFil(logTekst);
2732     end
2733     else
2734     begin
2735     inc(urlFejl); // Optæller antal fejl
2736     logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;
2737     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2738     if TjekUrls = '1' then
2739     begin
2740     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2741     end;
2742     SkrivScanningLogFil(logTekst);
2743     if TjekUrls = '1' then
2744     begin
2745     ShowMessage(logTekst);
2746     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2747     Application.Terminate;
2748     exit;
2749     end;
2750     end;
2751     end;
2752    
2753     // Tjekker UrlPakkeshoplevering
2754     if PanelValg5.Enabled = true then
2755     begin
2756     if CheckUrl(UrlPakkeshoplevering) then
2757     begin
2758     logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;
2759     SkrivScanningLogFil(logTekst);
2760     end
2761     else
2762     begin
2763     inc(urlFejl); // Optæller antal fejl
2764     logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;
2765     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2766     if TjekUrls = '1' then
2767     begin
2768     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2769     end;
2770     SkrivScanningLogFil(logTekst);
2771     if TjekUrls = '1' then
2772     begin
2773     ShowMessage(logTekst);
2774     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2775     Application.Terminate;
2776     exit;
2777     end;
2778     end;
2779     end;
2780    
2781     // Tjekker UrlReturPakkeshop
2782     if PanelValg6.Enabled = true then
2783     begin
2784     if CheckUrl(UrlReturPakkeshop) then
2785     begin
2786     logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;
2787     SkrivScanningLogFil(logTekst);
2788     end
2789     else
2790     begin
2791     inc(urlFejl); // Optæller antal fejl
2792     logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;
2793     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2794     if TjekUrls = '1' then
2795     begin
2796     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2797     end;
2798     SkrivScanningLogFil(logTekst);
2799     if TjekUrls = '1' then
2800     begin
2801     ShowMessage(logTekst);
2802     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2803     Application.Terminate;
2804     exit;
2805     end;
2806     end;
2807     end;
2808    
2809     // Tjekker UrlManglendeScanninger
2810     if (PanelValg1.Enabled = true)
2811     or (PanelValg4.Enabled = true) then
2812     begin
2813     if CheckUrl(UrlManglendeScanninger) then
2814     begin
2815     logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;
2816     SkrivScanningLogFil(logTekst);
2817     end
2818     else
2819     begin
2820     inc(urlFejl); // Optæller antal fejl
2821     logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;
2822     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2823     if TjekUrls = '1' then
2824     begin
2825     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2826     end;
2827     SkrivScanningLogFil(logTekst);
2828     if TjekUrls = '1' then
2829     begin
2830     ShowMessage(logTekst);
2831     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2832     Application.Terminate;
2833     exit;
2834     end;
2835     end;
2836     end;
2837    
2838     // Tjekker UrlPakkeshopManglendeScanninger
2839     if PanelValg5.Enabled = true then
2840     begin
2841     if CheckUrl(UrlPakkeshopManglendeScanninger) then
2842     begin
2843     logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;
2844     SkrivScanningLogFil(logTekst);
2845     end
2846     else
2847     begin
2848     inc(urlFejl); // Optæller antal fejl
2849     logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;
2850     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2851     if TjekUrls = '1' then
2852     begin
2853     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2854     end;
2855     SkrivScanningLogFil(logTekst);
2856     if TjekUrls = '1' then
2857     begin
2858     ShowMessage(logTekst);
2859     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2860     Application.Terminate;
2861     exit;
2862     end;
2863     end;
2864     end;
2865    
2866     // Tjekker UrlPakkeshopManglendeReturScanninger
2867     if PanelValg6.Enabled = true then
2868     begin
2869     if CheckUrl(UrlPakkeshopManglendeReturScanninger) then
2870     begin
2871     logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;
2872     SkrivScanningLogFil(logTekst);
2873     end
2874     else
2875     begin
2876     inc(urlFejl); // Optæller antal fejl
2877     logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;
2878     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2879     if TjekUrls = '1' then
2880     begin
2881     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2882     end;
2883     SkrivScanningLogFil(logTekst);
2884     if TjekUrls = '1' then
2885     begin
2886     ShowMessage(logTekst);
2887     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2888     Application.Terminate;
2889     exit;
2890     end;
2891     end;
2892     end;
2893    
2894     // Tjekker UrlEKLoverforsel
2895     if PanelValg1.Enabled = true then
2896     begin
2897     if CheckUrl(UrlEKLoverforsel) then
2898     begin
2899     logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;
2900     SkrivScanningLogFil(logTekst);
2901     end
2902     else
2903     begin
2904     inc(urlFejl); // Optæller antal fejl
2905     logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;
2906     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2907     if TjekUrls = '1' then
2908     begin
2909     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2910     end;
2911     SkrivScanningLogFil(logTekst);
2912     if TjekUrls = '1' then
2913     begin
2914     ShowMessage(logTekst);
2915     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2916     Application.Terminate;
2917     exit;
2918     end;
2919     end;
2920     end;
2921    
2922 torben 2656
2923 torben 2645 // Tjekker UrlEKLoverforselPakkeshop
2924     if PanelValg5.Enabled = true then
2925     begin
2926     if CheckUrl(UrlEKLoverforselPakkeshop) then
2927     begin
2928     logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;
2929     SkrivScanningLogFil(logTekst);
2930     end
2931     else
2932     begin
2933     inc(urlFejl); // Optæller antal fejl
2934     logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;
2935     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2936     if TjekUrls = '1' then
2937     begin
2938     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2939     end;
2940     SkrivScanningLogFil(logTekst);
2941     if TjekUrls = '1' then
2942     begin
2943     ShowMessage(logTekst);
2944     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2945     Application.Terminate;
2946     exit;
2947     end;
2948     end;
2949     end;
2950    
2951 torben 2656
2952 torben 2645 // Tjekker UrlFindPakketype
2953     if CheckUrl(UrlFindPakketype) then
2954     begin
2955     logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;
2956     SkrivScanningLogFil(logTekst);
2957     end
2958     else
2959     begin
2960     inc(urlFejl); // Optæller antal fejl
2961     logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;
2962     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2963     if TjekUrls = '1' then
2964     begin
2965     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2966     end;
2967     SkrivScanningLogFil(logTekst);
2968     if TjekUrls = '1' then
2969     begin
2970     ShowMessage(logTekst);
2971     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2972     Application.Terminate;
2973     exit;
2974     end;
2975     end;
2976    
2977     // Tjekker UrlSendPrograminfo
2978     if CheckUrl(UrlSendPrograminfo) then
2979     begin
2980     logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;
2981     SkrivScanningLogFil(logTekst);
2982     end
2983     else
2984     begin
2985     inc(urlFejl); // Optæller antal fejl
2986     logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;
2987     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2988     if TjekUrls = '1' then
2989     begin
2990     logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2991     end;
2992     SkrivScanningLogFil(logTekst);
2993     if TjekUrls = '1' then
2994     begin
2995     ShowMessage(logTekst);
2996     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2997     Application.Terminate;
2998     exit;
2999     end;
3000     end;
3001    
3002     if urlFejl > 0 then
3003     begin
3004     TjekUrls := '-'; // markerer at der var fejl
3005     end
3006     else
3007     begin
3008     logTekst := 'urls er ok';
3009     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3010     SkrivScanningLogFil(logTekst);
3011     end;
3012    
3013     end;
3014    
3015     function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;
3016     var
3017     LocalFileTime: TFileTime;
3018     SystemTime: TSystemTime;
3019     begin
3020     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;
3021     FileTimeToSystemTime(LocalFileTime, SystemTime) ;
3022     Result := SystemTimeToDateTime(SystemTime) ;
3023     end;
3024    
3025     procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
3026     var
3027     SR: TSearchRec;
3028     dt: TDateTime;
3029     CreationTime: TFileTime;
3030     dtCreation: TDateTime;
3031     BemTxt : String;
3032     begin
3033     logTekst := 'Logfiler tjekkes for sletning.';
3034     SkrivScanningLogFil(logTekst);
3035     FileList.Insert(0,logTekst);
3036     if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
3037     begin
3038     repeat
3039     if (SR.Attr <> faDirectory) then
3040     begin
3041     dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
3042     CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
3043     dtCreation := FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
3044     // Selvom creation date godt kan være forskellig fra modified date,
3045     // skal vi alligevel altid tjekke filens alder ud fra modified date
3046     // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
3047     BemTxt := '';
3048     if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
3049     begin
3050     BemTxt := ' (skal slettes)';
3051     end;
3052     logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
3053     if DaysBetween(dtCreation, dt) > 1 then
3054     begin
3055     logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
3056     end;
3057     FileList.Insert(0,logTekst);
3058     SkrivScanningLogFil(logTekst);
3059     if BemTxt = ' (skal slettes)' then
3060     begin
3061     if DeleteFile(Path + SR.Name) then
3062     begin
3063     logTekst := 'Logfil er slettet.';
3064     FileList.Insert(0,logTekst);
3065     SkrivScanningLogFil(logTekst);
3066     end
3067     else
3068     begin
3069     logTekst := 'Logfil kunne IKKE slettes.';
3070     FileList.Insert(0,logTekst);
3071     SkrivScanningLogFil(logTekst);
3072     end;
3073     end;
3074     end;
3075     until FindNext(SR) <> 0;
3076     FindClose(SR);
3077     end;
3078     end;
3079    
3080     procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);
3081     begin
3082     PakkeshopStregkode := '';
3083     PakkeshopTjekkode := '';
3084     PakkeshopNulstil.Visible := false;
3085     PakkeshopText1.Caption := 'Stregkode';
3086     BoghandlerStregkode := '';
3087     BoghandlerTjekkode := '';
3088     Stregkode := '';
3089     // 20150312: start
3090     if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
3091     begin
3092     ShowMessage('Programmet afbrydes...');
3093     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3094     Application.Terminate;
3095     exit;
3096     end;
3097     // 20150312: slut
3098     InitScreen();
3099     // MainForm.Color := HexToTColor(Farve);
3100     if Farve <> '' then
3101     begin
3102     MainForm.Color := HexToTColor(Farve);
3103     // 20150312: start
3104     (*
3105     end
3106     else
3107     begin
3108     ShowMessage('Programmet afbrydes...');
3109     UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
3110     Application.Terminate;
3111     *)
3112     // 20150312: slut
3113     end;
3114     if (Budlevering1.Checked) then
3115     begin
3116     InitLillePakke();
3117     end;
3118     PrinterstatusStaticText1.Caption := '';
3119     PrinterstatusStaticText1.Color := MainForm.Color;
3120     end;
3121    
3122 torben 2650
3123 torben 2645 procedure TMainForm.PanelValg1Click(Sender: TObject);
3124     begin
3125     Scanningtype := '1';
3126     InitNatxpresslevering();
3127     NulstilAutomatiskValg();
3128     end;
3129    
3130     procedure TMainForm.PanelValg2Click(Sender: TObject);
3131     begin
3132     Scanningtype := '2';
3133     InitReturFraDao();
3134     NulstilAutomatiskValg();
3135     end;
3136    
3137     procedure TMainForm.PanelValg3Click(Sender: TObject);
3138     begin
3139     Scanningtype := '3';
3140     InitReturFraKunde();
3141     NulstilAutomatiskValg();
3142     end;
3143    
3144     procedure TMainForm.PanelValg4Click(Sender: TObject);
3145     begin
3146     Scanningtype := '4';
3147     InitDirektelevering();
3148     NulstilAutomatiskValg();
3149     end;
3150    
3151     procedure TMainForm.PanelValg5Click(Sender: TObject);
3152     begin
3153     Scanningtype := '5';
3154     InitPakkeshoplevering();
3155     NulstilAutomatiskValg();
3156     end;
3157    
3158     procedure TMainForm.PanelValg6Click(Sender: TObject);
3159     begin
3160     Scanningtype := '6';
3161     InitReturFraPakkeshop();
3162     NulstilAutomatiskValg();
3163     end;
3164    
3165 torben 2650
3166     procedure TMainForm.PanelValg7Click(Sender: TObject);
3167     begin
3168     Scanningtype := '7';
3169     InitIndleveringskode();
3170     NulstilAutomatiskValg();
3171    
3172     end;
3173    
3174 torben 2645 procedure TMainForm.PanelValgAClick(Sender: TObject);
3175     begin
3176     // 20150311: start
3177     (*
3178     if PanelValgA.Color = clBtnFace then
3179     begin
3180     AutomatiskValg1.Checked := true;
3181     PanelValgA.Color := clGreen;
3182     PanelValgA.Font.Color := clWhite;
3183     end
3184     else
3185     begin
3186     AutomatiskValg1.Checked := false;
3187     PanelValgA.Color := clBtnFace;
3188     PanelValgA.Font.Color := clWindowText;
3189     end;
3190     *)
3191     // Skal ikke toggle men bare sætte funktionen on
3192     // Fravælges ved at vælge en scanningstype
3193     AutomatiskValg1.Checked := true;
3194     PanelValgA.Color := clGreen;
3195     PanelValgA.Font.Color := clWhite;
3196     // 20150311: slut
3197     end;
3198    
3199     procedure TMainForm.Pakkernormal1Click(Sender: TObject);
3200     begin
3201     Scanningtype := '1';
3202     NulstilAutomatiskValg();
3203     InitNatxpresslevering();
3204     end;
3205    
3206     procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
3207     var
3208     RuteNummer : String;
3209     Kommentar : String;
3210     BoghandlerNavn : String;
3211     Koreliste : String;
3212     Falsk : Boolean;
3213     SmsKode : String;
3214     DBKbane : String;
3215     Leveringssted : String;
3216     orgTjekUrls : String;
3217     begin
3218     orgTjekUrls := TjekUrls;
3219     if (TjekUrls = '1') or (TjekUrls = '2') then
3220     begin
3221     TjekkerUrls();
3222     end;
3223     if TjekUrls = '-' then
3224     begin
3225     //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
3226     RuteNummer := '';
3227     Kommentar := 'Se log vinduet';
3228     BoghandlerNavn := 'Fejl i forbindelse til server';
3229     Koreliste := '';
3230     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3231     // Her kommer en alarm og rød skærm
3232     PlaySound(PWideChar(AlarmLyd));
3233     MainForm.Color := clRed;
3234     PakkeshopNulstil.Visible := true;
3235     end
3236     else
3237     begin
3238     Falsk := False;
3239 torben 2660
3240 torben 2645 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
3241     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3242     SmsKode := '999999';
3243     DBKbane := '999';
3244     Leveringssted := 'XXX';
3245     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3246     FocusControl(StregkodeST);
3247     end;
3248     TjekUrls := orgTjekUrls;
3249    
3250     end;
3251    
3252     procedure TMainForm.Testprinter1Click(Sender: TObject);
3253     var
3254     RuteNummer : String;
3255     Kommentar : String;
3256     BoghandlerNavn : String;
3257     Koreliste : String;
3258     Falsk : Boolean;
3259     SmsKode : String;
3260     DBKbane : String;
3261     Leveringssted : String;
3262     begin
3263     RuteNummer := 'Rutenr';
3264     Kommentar := '***** Kommentar *****';
3265     BoghandlerNavn := 'Modtagernavn';
3266     Falsk := False;
3267    
3268 torben 2660
3269 torben 2645 if (Printer.Printers.Count = 0) then
3270     begin
3271     ShowMessage('Der er ikke installeret en printer på denne PC.');
3272     end
3273     else if PrinterNavn = 'Ingen' then
3274     begin
3275     ShowMessage('Der er fravalgt printer i dette program.');
3276     end
3277     else
3278     begin
3279     UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3280     SmsKode := '999999';
3281     DBKbane := '999';
3282     Leveringssted := 'XXX';
3283     PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3284     CheckPrintQue('Test');
3285     end;
3286     FocusControl(StregkodeST);
3287     end;
3288    
3289     procedure TMainForm.Timer1Timer(Sender: TObject);
3290     begin
3291     if (TjekPrinter = '1') then
3292     begin
3293     CheckPrintQue('Timer');
3294     end
3295     else
3296     begin
3297     PrinterstatusStaticText1.Caption := '';
3298     PrinterstatusStaticText1.Color := MainForm.Color;
3299     end;
3300     end;
3301    
3302     {
3303     VERY fast split function
3304     this function returns part of a string based on
3305     constant defineable delimiters, such as ";". So
3306     SPLIT('this is a test ',' ',3) = 'is' or
3307     SPLIT('data;another;yet;again;more;',';',4) = 'yet'
3308    
3309     Split function shifts index integer by two to
3310     be compatible with commonly used PD split function
3311     gpl 2004 / Juhani Suhonen
3312     }
3313     function TMainForm.split(input: string; schar: Char; s: Integer): string;
3314     var
3315     c: array of Integer;
3316     b, t: Integer;
3317     begin
3318     Dec(s, 2); // for compatibility with very old & slow split function
3319     t := 0; // variable T needs to be initialized...
3320     setlength(c, Length(input));
3321     for b := 0 to pred(High(c)) do
3322     begin
3323     c[b + 1] := posex(schar, input, succ(c[b]));
3324     // BREAK LOOP if posex looped (position before previous)
3325     // or wanted position reached..
3326     if (c[b + 1] < c[b]) or (s < t) then break
3327     else
3328     Inc(t);
3329     end;
3330     Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));
3331     end;
3332    
3333     procedure TMainForm.Om1Click(Sender: TObject);
3334     const
3335     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3336     var
3337     tekst, filversion : String;
3338     begin
3339    
3340     filversion := Sto_GetFmtFileVersion('','');
3341     tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
3342    
3343     tekst := tekst+crlf+crlf;
3344     tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
3345     tekst := tekst+crlf;
3346    
3347     if SpecialVersionSted = '' then
3348     begin
3349     tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
3350     end;
3351    
3352     if SpecialVersionSted <> '' then
3353     begin
3354     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
3355     begin
3356     if Stednavn = '' then
3357     begin
3358     tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
3359     end
3360     else
3361     begin
3362     tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';
3363     end;
3364     end
3365     else
3366     begin
3367     tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';
3368     end;
3369     end;
3370    
3371     if (Pos('omdeling.info',Url) = 0) then
3372     begin
3373     tekst := tekst+crlf+crlf;
3374     tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3375     tekst := tekst+crlf+crlf;
3376     tekst := tekst+crlf+crlf+'Url: '+url;
3377     end;
3378    
3379     MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3380    
3381     end;
3382    
3383     procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3384     Rect: TRect; State: TOwnerDrawState);
3385     var
3386     ListBox1MaxLinLgd,i : Integer;
3387     myColor: TColor;
3388     myBrush: TBrush;
3389     begin
3390     ListBox1MaxLinLgd := 0;
3391     myBrush := TBrush.Create;
3392     with (Control as TListBox).Canvas do
3393     begin
3394     if not Odd(Index) then
3395     myColor := clWhite
3396     else
3397     myColor := clSilver;
3398    
3399     if odSelected in State then
3400     begin
3401     myColor := MainForm.Color;
3402     font.Color := clBlack;
3403     end;
3404    
3405     myBrush.Style := bsSolid;
3406     myBrush.Color := myColor;
3407     Windows.FillRect(handle, Rect, myBrush.Handle) ;
3408     Brush.Style := bsClear;
3409     TextOut(Rect.Left, Rect.Top,
3410     (Control as TListBox).Items[Index]) ;
3411     MyBrush.Free;
3412     end;
3413    
3414     for i := 0 to (ListBox1.Items.Count - 1) do
3415     if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3416     ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3417     ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3418     end;
3419    
3420     procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3421     begin
3422    
3423     Application.Terminate;
3424    
3425     end;
3426    
3427     procedure TMainForm.Manual1Click(Sender: TObject);
3428     var
3429     fileName : string;
3430     begin
3431     fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3432    
3433     if FileExists(fileName) then
3434     begin
3435     if AdobeReaderExists then
3436     begin
3437     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3438     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3439     end
3440     else
3441     begin
3442     ShowMessage('Acrobat Reader er ikke installeret!');
3443     end;
3444     end
3445     else
3446     begin
3447     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3448     end;
3449     end;
3450    
3451     procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3452     var
3453     fileName : string;
3454     begin
3455     fileName := 'Docs\Manual_0.pdf';
3456    
3457     if FileExists(fileName) then
3458     begin
3459     if AdobeReaderExists then
3460     begin
3461     //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3462     ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3463     end
3464     else
3465     begin
3466     ShowMessage('Acrobat Reader er ikke installeret!');
3467     end;
3468     end
3469     else
3470     begin
3471     ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3472     end;
3473     end;
3474    
3475     procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3476     begin
3477    
3478     if Sprgefterboghandlernummer1.Checked then
3479     begin
3480 torben 2653 chkSporgEfterKunde.Checked := true;
3481 torben 2645 end
3482     else
3483     begin
3484 torben 2653 chkSporgEfterKunde.Checked := false;
3485 torben 2645 end;
3486    
3487    
3488     end;
3489    
3490     procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);
3491     begin
3492     Scanningtype := '2';
3493     NulstilAutomatiskValg();
3494     InitReturFraDao();
3495     end;
3496    
3497     procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);
3498     begin
3499     Scanningtype := '6';
3500     InitReturFraPakkeshop();
3501     NulstilAutomatiskValg();
3502     end;
3503    
3504     procedure TMainForm.InitNatxpresslevering();
3505     begin
3506     AutomatiskTjekkodeStyring1.Enabled := true;
3507     PakkeshopNulstil.Visible := false;
3508     Pakkernormal1.Checked := true;
3509     InitForm(FarveNormal,TitelNormal,UrlNormal);
3510     PanelValg1.Color := clGreen;
3511     PanelValg1.Font.Color := clWhite;
3512 torben 2653
3513 torben 2652 chkAltidPrintLabel.Enabled := true;
3514 torben 2645 Altidprintepakkelabel1.Enabled := true;
3515     Altidprintepakkelabel1.Checked := false;
3516 torben 2652 chkAltidPrintLabel.Checked := false;
3517 torben 2645 Sprgefterboghandlernummer1.Checked := false;
3518 torben 2653 chkSporgEfterKunde.Checked := false;
3519 torben 2645 Sprgefterboghandlernummer1.Enabled := true;
3520     Smpakker1.Enabled := false;
3521     Storepakker1.Enabled := false;
3522 torben 2655 radioStorPakke.Enabled := false;
3523     radioLillePakke.Enabled := false;
3524 torben 2645 ListBox1.Visible := true;
3525     OpdaterListenButton01.Enabled := true;
3526     EKLoverforsel.Enabled := true;
3527     InitLillePakke();
3528     ListBox1.Items.Clear;
3529     if BladhusSted = 0 then
3530     begin
3531     IndlesScanningLogFil();
3532     IndlesManglendeScanninger();
3533     end;
3534     end;
3535    
3536     procedure TMainForm.InitReturFraDao();
3537     begin
3538     AutomatiskTjekkodeStyring1.Enabled := false;
3539     ReturpakkerfraDAO1.Checked := true;
3540     PakkeshopNulstil.Visible := false;
3541     InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3542     PanelValg2.Color := clGreen;
3543     PanelValg2.Font.Color := clWhite;
3544 torben 2653
3545 torben 2652 chkAltidPrintLabel.Enabled := false;
3546 torben 2645 Altidprintepakkelabel1.Enabled := false;
3547 torben 2652
3548 torben 2645 Altidprintepakkelabel1.Checked := false;
3549     Sprgefterboghandlernummer1.Checked := false;
3550 torben 2653 chkSporgEfterKunde.Checked := false;
3551 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3552     Smpakker1.Enabled := true;
3553     Storepakker1.Enabled := true;
3554 torben 2655 radioStorPakke.Enabled := true;
3555     radioLillePakke.Enabled := true;
3556 torben 2645 ListBox1.Visible := true;
3557     ListBox1.Items.Clear;
3558     ListBox2.Items.Clear;
3559     EKLoverforsel.Enabled := false;
3560     InitLillePakke();
3561     end;
3562    
3563     procedure TMainForm.InitReturFraKunde();
3564     begin
3565     AutomatiskTjekkodeStyring1.Enabled := false;
3566     Returpakkerfraboghandler1.Checked := true;
3567     PakkeshopNulstil.Visible := false;
3568     InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3569     PanelValg3.Color := clGreen;
3570     PanelValg3.Font.Color := clWhite;
3571 torben 2653
3572 torben 2652 chkAltidPrintLabel.Enabled := false;
3573 torben 2645 Altidprintepakkelabel1.Enabled := false;
3574     Altidprintepakkelabel1.Checked := false;
3575     Sprgefterboghandlernummer1.Checked := false;
3576 torben 2653 chkSporgEfterKunde.Checked := false;
3577 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3578     Smpakker1.Enabled := true;
3579     Storepakker1.Enabled := true;
3580 torben 2655 radioStorPakke.Enabled := true;
3581     radioLillePakke.Enabled := true;
3582 torben 2645 ListBox1.Visible := true;
3583     ListBox1.Items.Clear;
3584     ListBox2.Items.Clear;
3585     EKLoverforsel.Enabled := false;
3586     InitLillePakke();
3587     end;
3588    
3589     procedure TMainForm.InitDirektelevering();
3590     begin
3591     AutomatiskTjekkodeStyring1.Enabled := false;
3592     Budlevering1.Checked := true;
3593     PakkeshopNulstil.Visible := false;
3594     InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3595     PanelValg4.Color := clGreen;
3596     PanelValg4.Font.Color := clWhite;
3597 torben 2653
3598 torben 2652 chkAltidPrintLabel.Enabled := false;
3599 torben 2645 Altidprintepakkelabel1.Enabled := false;
3600 torben 2652
3601 torben 2645 Altidprintepakkelabel1.Checked := false;
3602     Sprgefterboghandlernummer1.Checked := false;
3603 torben 2653 chkSporgEfterKunde.Checked := false;
3604 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3605     Smpakker1.Enabled := true;
3606     Storepakker1.Enabled := true;
3607 torben 2655 radioStorPakke.Enabled := true;
3608     radioLillePakke.Enabled := true;
3609 torben 2645 ListBox1.Visible := true;
3610     ListBox1.Items.Clear;
3611     DownloadButton01.Enabled := false;
3612     OpdaterListenButton01.Enabled := true;
3613     DownloadButton03.Visible := false;
3614     EKLoverforsel.Enabled := false;
3615     IdFTP1.Passive := true;
3616     IdFTP1.PassiveUseControlHost := true;
3617     if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3618     begin
3619     IndlesScanningLogFil();
3620     IndlesManglendeScanninger();
3621     end;
3622    
3623     end;
3624    
3625     procedure TMainForm.InitPakkeshoplevering();
3626     begin
3627     AutomatiskTjekkodeStyring1.Enabled := true;
3628     Pakkeshoplevering1.Checked := true;
3629     PakkeshopNulstil.Visible := false;
3630     InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3631     PanelValg5.Color := clGreen;
3632     PanelValg5.Font.Color := clWhite;
3633 torben 2653
3634 torben 2652 chkAltidPrintLabel.Enabled := false;
3635 torben 2645 Altidprintepakkelabel1.Enabled := false;
3636 torben 2652
3637 torben 2645 Altidprintepakkelabel1.Checked := false;
3638     Sprgefterboghandlernummer1.Checked := false;
3639 torben 2653 chkSporgEfterKunde.Checked := false;
3640 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3641     Smpakker1.Enabled := false;
3642     Storepakker1.Enabled := false;
3643 torben 2655 radioStorPakke.Enabled := false;
3644     radioLillePakke.Enabled := false;
3645 torben 2645 ListBox1.Visible := true;
3646     ListBox1.Items.Clear;
3647     DownloadButton01.Enabled := false;
3648     OpdaterListenButton01.Enabled := true;
3649 torben 2656
3650 torben 2645 EKLoverforsel.Enabled := true;
3651 torben 2656
3652 torben 2645 InitLillePakke();
3653     IndlesScanningLogFil();
3654     if BladhusSted = 0 then
3655     begin
3656     IndlesManglendeScanninger();
3657     end;
3658     IdFTP1.Passive := true;
3659     IdFTP1.PassiveUseControlHost := true;
3660     end;
3661    
3662     procedure TMainForm.InitReturFraPakkeshop();
3663     begin
3664     AutomatiskTjekkodeStyring1.Enabled := false;
3665     Returpakkerfrapakkeshop1.Checked := true;
3666     PakkeshopNulstil.Visible := false;
3667     InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3668     PanelValg6.Color := clGreen;
3669     PanelValg6.Font.Color := clWhite;
3670 torben 2653
3671 torben 2652 chkAltidPrintLabel.Enabled := false;
3672 torben 2645 Altidprintepakkelabel1.Enabled := false;
3673 torben 2652
3674 torben 2645 Altidprintepakkelabel1.Checked := false;
3675     Sprgefterboghandlernummer1.Checked := false;
3676 torben 2653 chkSporgEfterKunde.Checked := false;
3677 torben 2645 Sprgefterboghandlernummer1.Enabled := false;
3678     Smpakker1.Enabled := false;
3679     Storepakker1.Enabled := false;
3680 torben 2655 radioStorPakke.Enabled := false;
3681     radioLillePakke.Enabled := false;
3682 torben 2645 ListBox1.Visible := true;
3683     ListBox1.Items.Clear;
3684     DownloadButton01.Enabled := false;
3685     OpdaterListenButton01.Enabled := true;
3686     EKLoverforsel.Enabled := false;
3687     InitLillePakke();
3688     IndlesScanningLogFil();
3689     if BladhusSted = 0 then
3690     begin
3691     IndlesManglendeScanninger();
3692     end;
3693     IdFTP1.Passive := true;
3694     IdFTP1.PassiveUseControlHost := true;
3695     end;
3696    
3697     procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);
3698     begin
3699     Scanningtype := '3';
3700     NulstilAutomatiskValg();
3701     InitReturFraKunde();
3702     end;
3703    
3704 torben 2650 procedure TMainForm.InitIndleveringskode();
3705     begin
3706     AutomatiskTjekkodeStyring1.Enabled := false;
3707     Returpakkerfrapakkeshop1.Checked := true;
3708     PakkeshopNulstil.Visible := false;
3709 torben 2656 InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3710 torben 2650 PanelValg7.Color := clGreen;
3711     PanelValg7.Font.Color := clWhite;
3712 torben 2653
3713 torben 2652 chkAltidPrintLabel.Enabled := false;
3714 torben 2650 Altidprintepakkelabel1.Enabled := false;
3715 torben 2652
3716 torben 2650 Altidprintepakkelabel1.Checked := false;
3717     Sprgefterboghandlernummer1.Checked := false;
3718 torben 2656 Sprgefterboghandlernummer1.Enabled := false;
3719 torben 2653 chkSporgEfterKunde.Checked := false;
3720 torben 2656
3721    
3722    
3723 torben 2650 Smpakker1.Enabled := false;
3724     Storepakker1.Enabled := false;
3725 torben 2655 radioStorPakke.Enabled := false;
3726     radioLillePakke.Enabled := false;
3727 torben 2650 ListBox1.Visible := true;
3728 torben 2656 ListBox1.Items.Clear();
3729    
3730 torben 2650 DownloadButton01.Enabled := false;
3731     OpdaterListenButton01.Enabled := true;
3732     EKLoverforsel.Enabled := false;
3733     InitLillePakke();
3734     IndlesScanningLogFil();
3735     if BladhusSted = 0 then
3736     begin
3737     IndlesManglendeScanninger();
3738     end;
3739     IdFTP1.Passive := true;
3740     IdFTP1.PassiveUseControlHost := true;
3741     end;
3742    
3743    
3744 torben 2645 procedure TMainForm.Storepakker1Click(Sender: TObject);
3745     begin
3746     InitStorPakke();
3747     end;
3748    
3749     procedure TMainForm.Smpakker1Click(Sender: TObject);
3750     begin
3751     InitLillePakke();
3752     end;
3753    
3754     procedure TMainForm.InitLillePakke();
3755     begin
3756 torben 2655 radioLillePakke.Checked := true;
3757 torben 2645 Smpakker1.Checked := true;
3758     // Stregkode := '';
3759     end;
3760    
3761     procedure TMainForm.InitStorPakke();
3762     begin
3763 torben 2655 radioStorPakke.Checked := true;
3764 torben 2645 Storepakker1.Checked := true;
3765     // 20150310: start
3766     // Stregkode := '';
3767     // 20150310: slut
3768     end;
3769    
3770     /// <summary>
3771     /// This function reads the file resource of "FileName" and returns
3772     /// the version number as formatted text.</summary>
3773     /// <example>
3774     /// Sto_GetFmtFileVersion() = '4.13.128.0'
3775     /// Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'
3776     /// </example>
3777     /// <remarks>If "Fmt" is invalid, the function may raise an
3778     /// EConvertError exception.</remarks>
3779     /// <param name="FileName">Full path to exe or dll. If an empty
3780     /// string is passed, the function uses the filename of the
3781     /// running exe or dll.</param>
3782     /// <param name="Fmt">Format string, you can use at most four integer
3783     /// values.</param>
3784     /// <returns>Formatted version number of file, '' if no version
3785     /// resource found.</returns>
3786     function TMainForm.Sto_GetFmtFileVersion(const FileName: String = '';
3787     const Fmt: String = '%d.%d.%d.%d'): String;
3788     var
3789     sFileName: String;
3790     iBufferSize: DWORD;
3791     iDummy: DWORD;
3792     pBuffer: Pointer;
3793     pFileInfo: Pointer;
3794     iVer: array[1..4] of Word;
3795     S : String;
3796     begin
3797     // set default value
3798     Result := '';
3799     // get filename of exe/dll if no filename is specified
3800     sFileName := Trim(FileName);
3801     if (sFileName = '') then
3802     sFileName := GetModuleName(HInstance);
3803     // get size of version info (0 if no version info exists)
3804     iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
3805     if (iBufferSize > 0) then
3806     begin
3807     GetMem(pBuffer, iBufferSize);
3808     try
3809     // get fixed file info (language independent)
3810     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
3811     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
3812     // read version blocks
3813     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
3814     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
3815     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
3816     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
3817     finally
3818     FreeMem(pBuffer);
3819     end;
3820     // format result string
3821     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
3822    
3823     // Hvorfor virker ovenstående ikke ???
3824     S := '';
3825 torben 2660 Str(iVer[1], Result);
3826 torben 2645 S := S+Result+'.';
3827 torben 2660 Str(iVer[2], Result);
3828 torben 2645 S := S+Result+'.';
3829 torben 2660 Str(iVer[3], Result);
3830 torben 2645 S := S+Result+'.';
3831 torben 2660 Str(iVer[4], Result);
3832 torben 2645 S := S+Result+'';
3833     Result := S;
3834     end;
3835     end;
3836    
3837     procedure TMainForm.PlaySound(filename : PWideChar);
3838     begin
3839     if (filename <> '') then
3840     begin
3841     sndPlaySound(filename,
3842     SND_NODEFAULT Or SND_ASYNC);
3843     end;
3844     end;
3845    
3846     procedure TMainForm.Testlyd1Click(Sender: TObject);
3847     begin
3848     if AlarmLyd <> '' then
3849     begin
3850     PlaySound(PWideChar(AlarmLyd));
3851     end
3852     else
3853     begin
3854     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3855     end;
3856     end;
3857    
3858     procedure TMainForm.Testlyd2Click(Sender: TObject);
3859     begin
3860     if (PakkeshopText1.Caption = 'Tjekkode') then
3861     begin
3862     if ScannetOkTilTjekkodeLyd <> '' then
3863     begin
3864     PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
3865     end
3866     else
3867     begin
3868     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3869     end;
3870     exit;
3871     end;
3872    
3873     if Smpakker1.Checked then
3874     if ScannetOkLyd <> '' then
3875     begin
3876     PlaySound(PWideChar(ScannetOkLyd));
3877     end
3878     else
3879     begin
3880     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3881     end;
3882     if Storepakker1.Checked then
3883     if ScannetOkStorLyd <> '' then
3884     begin
3885     PlaySound(PWideChar(ScannetOkStorLyd));
3886     end
3887     else
3888     begin
3889     MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3890     end;
3891     end;
3892    
3893    
3894     procedure TMainForm.Budlevering1Click(Sender: TObject);
3895     begin
3896     Scanningtype := '4';
3897     NulstilAutomatiskValg();
3898     InitDirektelevering();
3899     end;
3900    
3901     procedure TMainForm.Button1Click(Sender: TObject);
3902     begin;
3903     CheckCode();
3904     end;
3905    
3906     procedure TMainForm.EKLoverforselClick(Sender: TObject);
3907     var
3908     WebSvar : String;
3909     URLStr : String;
3910     StedKode : String;
3911     Node: IXMLNode;
3912     I: Integer;
3913     status, kommentar : String;
3914    
3915     begin
3916     EKLoverforsel.Enabled := false;
3917    
3918     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3919     logTekst := 'Overfører de scannede pakker til EKL';
3920     SkrivScanningLogFil(logTekst);
3921     StedKode := Sted;
3922     URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3923     // 20150330: start
3924     if PanelValg5.Color = clGreen then
3925     begin
3926     URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3927     end;
3928     // 20150330: slut
3929    
3930     try
3931     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3932     WebSvar := IdHTTP1.Get(URLStr);
3933     except
3934     on e:EIdConnClosedGracefully do
3935     begin
3936     // Her skal vi ikke gøre noget - men vi skal forespørge igen
3937     WebSvar := IdHTTP1.Get(URLStr);
3938     end;
3939     on e:exception do
3940     begin
3941     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
3942     logTekst := 'Fejl i web forespørgsel: '+e.Message;
3943     SkrivScanningLogFil(logTekst);
3944     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
3945     end;
3946     end;
3947     try
3948     XMLDocument1.LoadFromXML(WebSvar);
3949     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
3950     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
3951     if Node.NodeType = ntElement then begin
3952     if Node.NodeName = 'Status' then begin
3953     if not VarIsNull(Node.NodeValue) then
3954     status := Node.NodeValue;
3955     end;
3956     if Node.NodeName = 'Kommentar' then begin
3957     if not VarIsNull(Node.NodeValue) then
3958     kommentar := Node.NodeValue;
3959     end;
3960     end;
3961     end;
3962    
3963     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
3964     logTekst := 'Overførsel til EKL: ' + status;
3965     SkrivScanningLogFil(logTekst);
3966    
3967     except on e:exception do
3968     begin
3969     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
3970     logTekst := 'Overførsel til EKL: ' + status;
3971     SkrivScanningLogFil(logTekst);
3972     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
3973     logTekst := 'Fejl i XML-format: '+e.Message;
3974     SkrivScanningLogFil(logTekst);
3975     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
3976     end;
3977     end;
3978    
3979     EKLoverforsel.Enabled := true;
3980    
3981     ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3982    
3983     // Hvis der var fejl i overførslen skal dette fejlmeldes her
3984     if status = 'Fejl' then
3985     begin // Her skal komme en alarm og rød skærm
3986     PlaySound(PWideChar(AlarmLyd));
3987     MainForm.Color := clRed;
3988     RutenummerST.Caption := 'EKL overførsel';
3989     BoghandlerNavnST.Caption := 'Fejl:';
3990     if (pos('Deadlock', Kommentar) > 0) then
3991     begin
3992     RutenummerST.Caption := 'EKL overførsel fejlet';
3993     BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3994     end;
3995     KommentarST.Caption := Kommentar;
3996     PakkeshopNulstil.Visible := true;
3997     end;
3998    
3999     end;
4000    
4001     procedure TMainForm.CheckCode();
4002     var
4003     Barcode, Svar : String;
4004     ClickedOK : Boolean;
4005     begin
4006     ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
4007     if ClickedOk then
4008     begin
4009     { if (BarCodeValid(Barcode)) then
4010     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4011     else
4012     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4013     }
4014     // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
4015     { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
4016     MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
4017     else
4018     MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
4019     }
4020     Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
4021    
4022     MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
4023     CheckCode();
4024     end;
4025    
4026     end;
4027    
4028     function TMainForm.BarCodeValid (ACode: string): boolean;
4029     var
4030     I: integer;
4031     SumOdd, SumEven: integer;
4032     ADigit, AChecksumDigit: integer;
4033     begin
4034     SumOdd := 0;
4035     SumEven := 0;
4036     for I := 1 to (Length (ACode) - 1) do begin
4037     ADigit := StrToIntDef (ACode [I], 0);
4038     if (I MOD 2 = 0) then begin
4039     SumEven := SumEven + ADigit;
4040     end else begin
4041     SumOdd := SumOdd + ADigit;
4042     end; {if}
4043     end; {for}
4044     AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);
4045     Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);
4046     end; {--BarCodeValid--}
4047    
4048     { used for EAN 8/13 }
4049     function TMainForm.CheckSumModulo10(const data:string):string;
4050     var i,fak,sum : Integer;
4051     begin
4052     sum := 0;
4053     fak := Length(data);
4054     for i:=1 to Length(data) do
4055     begin
4056     if (fak mod 2) = 0 then
4057     sum := sum + (StrToInt(data[i])*1)
4058     else
4059     sum := sum + (StrToInt(data[i])*3);
4060     dec(fak);
4061     end;
4062     if (sum mod 10) = 0 then
4063     result := data+'0'
4064     else
4065     result := data+IntToStr(10-(sum mod 10));
4066     end;
4067    
4068     //
4069     // Bladhus ***
4070     //
4071     procedure TMainForm.DownloadBladhusRuteskiftfil();
4072     const
4073     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4074    
4075     var
4076     filnavn_input : string;
4077     filnavn_output : string;
4078     buttonSelected : Integer;
4079    
4080     begin
4081     filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
4082     filnavn_output := BladhusRuteskiftfil_lokal;
4083    
4084     case BladhusSted of
4085     00 : begin;
4086     end;
4087     01 : begin;
4088     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4089     if buttonSelected = mrOK then
4090     begin
4091     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4092     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4093     SkrivScanningLogFil(logTekst);
4094     try
4095     try
4096    
4097     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4098     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4099     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4100     IdFTP1.Connect;
4101    
4102     //IdFTP1.TransferType := ftASCII;
4103     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4104     try
4105     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4106     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4107     except on e:EIdConnClosedGracefully do
4108     begin
4109     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4110     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4111     end;
4112     end;
4113     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4114    
4115     ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4116     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4117     SkrivScanningLogFil(logTekst);
4118    
4119     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4120     logTekst := 'Ruteskift fil tjekkes.';
4121     SkrivScanningLogFil(logTekst);
4122    
4123     finally
4124     IdFTP1.Disconnect;
4125     end;
4126    
4127     except on e:exception do
4128     begin
4129     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4130     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4131     SkrivScanningLogFil(logTekst);
4132     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4133     [e.Message
4134     + CrLf + 'Host: '+IdFTP1.host
4135     + CrLf + 'Username: '+IdFTP1.Username
4136     ]
4137     );
4138     end;
4139     end;
4140     end
4141     else
4142     begin
4143     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4144     logTekst := 'Download af ruteskiftfil annulleret';
4145     SkrivScanningLogFil(logTekst);
4146     end;
4147     IndlesRuteskiftFil(filnavn_output);
4148     end;
4149     02 : begin;
4150     end;
4151     03 : begin;
4152     buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4153     if buttonSelected = mrOK then
4154     begin
4155     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4156     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4157     SkrivScanningLogFil(logTekst);
4158     try
4159     try
4160    
4161     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4162     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4163     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4164     IdFTP1.Connect;
4165    
4166     //IdFTP1.TransferType := ftASCII;
4167     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4168     try
4169     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4170     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4171     except on e:EIdConnClosedGracefully do
4172     begin
4173     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4174     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4175     end;
4176     end;
4177     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4178    
4179     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
4180     logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
4181     SkrivScanningLogFil(logTekst);
4182    
4183     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
4184     logTekst := 'Ruteskift fil tjekkes.';
4185     SkrivScanningLogFil(logTekst);
4186    
4187     finally
4188     IdFTP1.Disconnect;
4189     end;
4190    
4191     except on e:exception do
4192     begin
4193     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4194     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4195     SkrivScanningLogFil(logTekst);
4196     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4197     [e.Message
4198     + CrLf + 'Host: '+IdFTP1.host
4199     + CrLf + 'Username: '+IdFTP1.Username
4200     ]
4201     );
4202     end;
4203     end;
4204     end
4205     else
4206     begin
4207     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
4208     logTekst := 'Download af ruteskiftfil annulleret';
4209     SkrivScanningLogFil(logTekst);
4210     end;
4211     IndlesRuteskiftFil(filnavn_output);
4212     end;
4213     04 : begin;
4214     end;
4215     else
4216     ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
4217     end;
4218    
4219     end;
4220    
4221     procedure TMainForm.DownloadBladhusKontrolfil();
4222     const
4223     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4224    
4225     var
4226     filnavn_input : string;
4227     filnavn_output : string;
4228     buttonSelected : Integer;
4229    
4230     begin
4231     filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
4232     filnavn_output := BladhusKontrolfil_lokal;
4233    
4234     case BladhusSted of
4235     01 :
4236     begin;
4237     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4238     if buttonSelected = mrOK then
4239     begin
4240     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4241     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4242     SkrivScanningLogFil(logTekst);
4243     try
4244     try
4245    
4246     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4247     IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
4248     IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
4249     IdFTP1.Connect;
4250    
4251     //IdFTP1.TransferType := ftASCII;
4252     // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4253     try
4254     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4255     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4256     except on e:EIdConnClosedGracefully do
4257     begin
4258     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4259     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4260     end;
4261     end;
4262     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4263    
4264     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4265     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4266     SkrivScanningLogFil(logTekst);
4267    
4268     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4269     logTekst := 'Rute kontrol fil tjekkes.';
4270     SkrivScanningLogFil(logTekst);
4271    
4272     finally
4273     IdFTP1.Disconnect;
4274     end;
4275    
4276     except on e:exception do
4277     begin
4278     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4279     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4280     SkrivScanningLogFil(logTekst);
4281     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4282     [e.Message
4283     + CrLf + 'Host: '+IdFTP1.host
4284     + CrLf + 'Username: '+IdFTP1.Username
4285     ]
4286     );
4287     end;
4288     end;
4289     end
4290     else
4291     begin
4292     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4293     logTekst := 'Download af kontrolfil annulleret';
4294     SkrivScanningLogFil(logTekst);
4295     end;
4296     IndlesKontrolFil(filnavn_output);
4297     end;
4298     02 : begin;
4299     end;
4300     03 : begin;
4301     buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
4302     if buttonSelected = mrOK then
4303     begin
4304     ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
4305     logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
4306     SkrivScanningLogFil(logTekst);
4307     try
4308     try
4309    
4310     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4311     IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
4312     IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
4313     IdFTP1.Connect;
4314    
4315     //IdFTP1.TransferType := ftASCII;
4316     IdFTP1.Get(filnavn_input, filnavn_output, True, False);
4317     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4318    
4319     ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
4320     logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
4321     SkrivScanningLogFil(logTekst);
4322    
4323     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
4324     logTekst := 'Rute kontrol fil tjekkes.';
4325     SkrivScanningLogFil(logTekst);
4326    
4327     finally
4328     IdFTP1.Disconnect;
4329     end;
4330    
4331     except on e:exception do
4332     begin
4333     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4334     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4335     SkrivScanningLogFil(logTekst);
4336     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4337     [e.Message
4338     + CrLf + 'Host: '+IdFTP1.host
4339     + CrLf + 'Username: '+IdFTP1.Username
4340     ]
4341     );
4342     end;
4343     end;
4344     end
4345     else
4346     begin
4347     ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
4348     logTekst := 'Download af kontrolfil annulleret';
4349     SkrivScanningLogFil(logTekst);
4350     end;
4351     IndlesKontrolFil(filnavn_output);
4352     end;
4353     04 : begin;
4354     end;
4355     else
4356     ShowMessage('Ukendt Bladhus sted ???') ;
4357     end;
4358    
4359     end;
4360    
4361     procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
4362     const
4363     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4364    
4365     var
4366     testsystem : String;
4367    
4368     begin
4369     testsystem := '';
4370     if (Pos('omdeling.info',Url) = 0) then
4371     begin
4372     testsystem := 'TEST_';
4373     end;
4374     filnavn_output := testsystem + filnavn_output;
4375    
4376     ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
4377     logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
4378     SkrivScanningLogFil(logTekst);
4379     try
4380     try
4381    
4382     IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
4383     IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
4384     IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
4385     IdFTP1.Connect;
4386    
4387     //IdFTP1.TransferType := ftASCII;
4388     try
4389     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4390     IdFTP1.ChangeDir('fraScannerprogram');
4391     IdFTP1.Put(filnavn_input, filnavn_output, True);
4392     except on e:EIdConnClosedGracefully do
4393     begin
4394     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4395     IdFTP1.Put(filnavn_input, filnavn_output, True);
4396     end;
4397     end;
4398     // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
4399    
4400     logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
4401     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4402     SkrivScanningLogFil(logTekst);
4403    
4404     finally
4405     IdFTP1.Disconnect;
4406     end;
4407    
4408     except on e:exception do
4409     begin
4410     ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
4411     logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
4412     SkrivScanningLogFil(logTekst);
4413     raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
4414     [e.Message
4415     + CrLf + 'Host: '+IdFTP1.host
4416     + CrLf + 'Username: '+IdFTP1.Username
4417     ]
4418     );
4419     end;
4420     end;
4421     end;
4422    
4423     procedure TMainForm.UploadLogfilTilDAO();
4424     const
4425     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4426    
4427     var
4428     idag, imorgen : TDateTime;
4429     imorgenYmd : string;
4430     logFilnavn : string;
4431     filnavn_input : string;
4432     filnavn_output : string;
4433     buttonSelected : Integer;
4434     openDialog : TOpenDialog;
4435    
4436     begin
4437     idag := Now;
4438     imorgen := IncDay(idag, 1); //adds 1 day(s)
4439     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4440     if (FormatDateTime('hh:nn',idag) < '12:00') then
4441     begin
4442     imorgen := idag;
4443     end;
4444     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4445     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4446     filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4447     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4448    
4449     buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4450     if buttonSelected = mrOK then
4451     begin
4452     SendFilTilDao('Log', filnavn_input, filnavn_output);
4453     end
4454     else
4455     begin
4456     buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4457     if buttonSelected = mrOK then
4458     begin
4459     // Create the open dialog object - assign to our open dialog variable
4460     openDialog := TOpenDialog.Create(self);
4461    
4462     // Set up the starting directory to be the current one
4463     openDialog.InitialDir := GetCurrentDir + '\Logs';
4464    
4465     // Only allow existing files to be selected
4466     openDialog.Options := [ofFileMustExist];
4467    
4468     // Allow only .log files to be selected
4469     openDialog.Filter := 'Log filer|*.log';
4470    
4471     // Display the open file dialog
4472     if openDialog.Execute then
4473     begin
4474     filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4475     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4476     SendFilTilDao('Log', filnavn_input, filnavn_output);
4477     end
4478     else
4479     begin
4480     logTekst := 'Upload af log fil annulleret';
4481     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4482     SkrivScanningLogFil(logTekst);
4483     end;
4484    
4485     // Free up the dialog
4486     openDialog.Free;
4487     end
4488     else
4489     begin
4490     logTekst := 'Upload af log fil annulleret';
4491     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4492     SkrivScanningLogFil(logTekst);
4493     end;
4494     end;
4495    
4496     end;
4497    
4498     procedure TMainForm.UploadInifilTilDAO();
4499     const
4500     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4501    
4502     var
4503     idag, imorgen : TDateTime;
4504     imorgenYmd : string;
4505     iniFilnavn : string;
4506     filnavn_input : string;
4507     filnavn_output : string;
4508     buttonSelected : Integer;
4509    
4510     begin
4511     idag := Now;
4512     imorgen := IncDay(idag, 1); //adds 1 day(s)
4513     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4514     if (FormatDateTime('hh:nn',idag) < '12:00') then
4515     begin
4516     imorgen := idag;
4517     end;
4518     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4519     iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4520     filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4521     filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4522    
4523     buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4524     if buttonSelected = mrOK then
4525     begin
4526     SendFilTilDao('Ini', filnavn_input, filnavn_output);
4527     end
4528     else
4529     begin
4530     logTekst := 'Upload af ini fil annulleret';
4531     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4532     SkrivScanningLogFil(logTekst);
4533     end;
4534    
4535     end;
4536    
4537     procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4538     begin
4539     UploadLogfilTilDAO();
4540     UploadInifilTilDAO();
4541     ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4542     end;
4543    
4544     procedure TMainForm.DownloadButton01Click(Sender: TObject);
4545     begin
4546     DownloadBladhusKontrolfil();
4547     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4548     end;
4549    
4550     procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);
4551     const
4552     crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4553    
4554     begin
4555     IndlesManglendeScanninger();
4556     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4557     end;
4558    
4559     procedure TMainForm.DownloadButton03Click(Sender: TObject);
4560     begin
4561     if (getProddag() = 'lørdag') then
4562     begin
4563     DownloadBladhusRuteskiftfil();
4564     end;
4565     ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4566     end;
4567    
4568     function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;
4569     var
4570     S2: string;
4571     begin
4572     Result := 0;
4573     S2 := S + Border;
4574     repeat
4575     SetLength(A, Length(A) + 1);
4576     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);
4577     Delete(S2, 1,Length(a[Result] + Border));
4578     Inc(Result);
4579     until S2 = '';
4580     end;
4581    
4582     procedure TMainForm.IndlesManglendeScanninger();
4583     var
4584     WebSvar : String;
4585     URLStr : String;
4586     StedKode : String;
4587     Node: IXMLNode;
4588     I: Integer;
4589     stregkode, modtagernavn, modtageradresse, kommentar : string;
4590     pakketype, tjekkodestatus : String;
4591     pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4592     pakketyper : TStrings;
4593     antlin : Integer;
4594 torben 2656
4595 torben 2645 antlinIdag, antlinSenere : Integer;
4596 torben 2656
4597 torben 2645 XmlFelter : TStrings;
4598    
4599     begin
4600     XmlFelter := TStringList.Create;
4601     pakketyper := TStringList.Create;
4602     linienr := 0;
4603     ListBox2.Clear;
4604     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4605     logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4606     SkrivScanningLogFil(logTekst);
4607     if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4608     begin
4609     StedKode := BladhusStedKode[BladhusSted];
4610     end
4611     else
4612     begin
4613     StedKode := Sted;
4614     end;
4615    
4616 torben 2656
4617 torben 2645 if (Scanningtype = '6') then
4618     begin
4619     URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);
4620     end
4621     else if (Scanningtype = '5') then
4622     begin
4623     URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);
4624     end
4625     else if (Scanningtype = '1') then
4626     begin
4627     URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);
4628     end
4629     else if (Scanningtype = '4') then
4630     begin
4631     URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4632     end
4633     else
4634     begin
4635     exit;
4636     end;
4637     // 20150310: slut
4638    
4639     try
4640     //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4641     // URLStr := string(Utf8Encode(URLStr));
4642     WebSvar := IdHTTP1.Get(URLStr);
4643     except
4644     on e:EIdConnClosedGracefully do
4645     begin
4646     // Her skal vi ikke gøre noget - men vi skal forespørge igen
4647     WebSvar := IdHTTP1.Get(URLStr);
4648     end;
4649     on e:exception do
4650     begin
4651     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4652     logTekst := 'Fejl i web forespørgsel: '+e.Message;
4653     SkrivScanningLogFil(logTekst);
4654     raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4655     end;
4656     end;
4657     try
4658     XMLDocument1.LoadFromXML(WebSvar);
4659    
4660 torben 2656
4661 torben 2645 antlin := 0;
4662     antlinIdag := 0;
4663     antlinSenere := 0;
4664 torben 2656
4665 torben 2645 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4666     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4667     if Node.NodeType = ntElement then begin
4668     if Node.NodeName = 'Stregkode' then
4669     begin
4670     antlin := antlin + 1;
4671     // 20150306: start
4672     if not VarIsNull(Node.NodeValue) then
4673     begin
4674     if (pos('(', Node.NodeValue) = 0) then
4675     begin
4676     antlinIdag := antlinIdag + 1;
4677     end
4678     else
4679     begin
4680     antlinSenere := antlinSenere + 1;
4681     end;
4682     end;
4683     // 20150306: slut
4684     end;
4685     end;
4686     if (XmlFelter.values[Node.NodeName] <> '') then
4687     XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)
4688     else
4689     XmlFelter.values[Node.NodeName] := '1';
4690    
4691     end;
4692     antalLiniefelter := XmlFelter.Count;
4693     antalFelterFundet := 0;
4694     SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4695     SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4696 torben 2656
4697 torben 2645 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4698     if (antlinSenere > 0) then
4699     begin
4700     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4701     end;
4702     logTekst := logTekst + '.';
4703 torben 2656
4704 torben 2645 SkrivScanningLogFil(logTekst);
4705     for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4706     Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4707     if Node.NodeType = ntElement then begin
4708     if Node.NodeName = 'Stregkode' then begin
4709     if not VarIsNull(Node.NodeValue) then
4710     stregkode := Node.NodeValue;
4711     antalFelterFundet := antalFelterFundet + 1;
4712     end;
4713     if Node.NodeName = 'ModtagerNavn' then begin
4714     if not VarIsNull(Node.NodeValue) then
4715     modtagernavn := Node.NodeValue;
4716     antalFelterFundet := antalFelterFundet + 1;
4717     end;
4718     if Node.NodeName = 'ModtagerAdresse' then begin
4719     if not VarIsNull(Node.NodeValue) then
4720     modtageradresse := Node.NodeValue;
4721     antalFelterFundet := antalFelterFundet + 1;
4722     end;
4723     if Node.NodeName = 'Kommentar' then begin
4724     if not VarIsNull(Node.NodeValue) then
4725     kommentar := Node.NodeValue;
4726     antalFelterFundet := antalFelterFundet + 1;
4727     end;
4728     if Node.NodeName = 'PakkeType' then begin
4729     if not VarIsNull(Node.NodeValue) then
4730     pakketype := Node.NodeValue;
4731     antalFelterFundet := antalFelterFundet + 1;
4732     if (pakketyper.values[pakketype] <> '') then
4733     pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)
4734     else
4735     pakketyper.values[pakketype] := '1';
4736     end;
4737     if Node.NodeName = 'TjekkodeStatus' then begin
4738     if not VarIsNull(Node.NodeValue) then
4739     tjekkodestatus := Node.NodeValue;
4740     antalFelterFundet := antalFelterFundet + 1;
4741     if (tjekkodestatus = '-1') then
4742     begin
4743     // 20150306: start
4744     // stregkoderMedTjekkodeArray[linienr] := stregkode;
4745     if (pos(' ', stregkode) > 0) then
4746     begin
4747     stregkoderMedTjekkodeArray[linienr] := split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4748     end
4749     else
4750     begin
4751     stregkoderMedTjekkodeArray[linienr] := stregkode;
4752     end;
4753 torben 2656 linienr := linienr + 1;
4754 torben 2645 end;
4755     end;
4756     if antalFelterFundet = antalLiniefelter then
4757     begin
4758     if (ScanningType = '1') then
4759     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4760     else if (ScanningType = '4') then
4761     ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4762     else if (ScanningType = '5') then
4763     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4764     else
4765     ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4766     antalFelterFundet := 0;
4767     tjekkodestatus := '';
4768     end;
4769     end;
4770     end;
4771     for pakketypeix := 0 to pakketyper.Count-1 do
4772     begin
4773     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');
4774     end;
4775    
4776     // Free up the list object
4777     pakketyper.Free;
4778     // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4779     logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4780     if (antlinSenere > 0) then
4781     begin
4782     logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4783     end;
4784     logTekst := logTekst + '.';
4785     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4786     if (antlinSenere > 0) then
4787     begin
4788     StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4789     end
4790     else
4791     begin
4792     StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4793     end;
4794    
4795     if (Scanningtype = '1') then
4796     begin
4797     //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4798     PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4799     if (antlinIdag + antlinSenere > 0) then
4800     begin
4801     PanelManglendePakker1.Visible := true;
4802     end
4803     else
4804     begin
4805     PanelManglendePakker1.Visible := false;
4806     end;
4807     end;
4808    
4809     if (Scanningtype = '2') then
4810     begin
4811     PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4812     if (antlinIdag + antlinSenere > 0) then
4813     begin
4814     PanelManglendePakker2.Visible := true;
4815     end
4816     else
4817     begin
4818     PanelManglendePakker2.Visible := false;
4819     end;
4820     end;
4821    
4822     if (Scanningtype = '3') then
4823     begin
4824     PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4825     if (antlinIdag + antlinSenere > 0) then
4826     begin
4827     PanelManglendePakker3.Visible := true;
4828     end
4829     else
4830     begin
4831     PanelManglendePakker3.Visible := false;
4832     end;
4833     end;
4834    
4835     if (Scanningtype = '4') then
4836     begin
4837     PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4838     if (antlinIdag + antlinSenere > 0) then
4839     begin
4840     PanelManglendePakker4.Visible := true;
4841     end
4842     else
4843     begin
4844     PanelManglendePakker4.Visible := false;
4845     end;
4846     end;
4847    
4848     if (Scanningtype = '5') then
4849     begin
4850     PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4851     if (antlinIdag + antlinSenere > 0) then
4852     begin
4853     PanelManglendePakker5.Visible := true;
4854     end
4855     else
4856     begin
4857     PanelManglendePakker5.Visible := false;
4858     end;
4859     end;
4860    
4861     if (Scanningtype = '6') then
4862     begin
4863     PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4864     if (antlinIdag + antlinSenere > 0) then
4865     begin
4866     PanelManglendePakker6.Visible := true;
4867     end
4868     else
4869     begin
4870     PanelManglendePakker6.Visible := false;
4871     end;
4872     end;
4873    
4874     except on e:exception do
4875     begin
4876     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4877     logTekst := 'Fejl i XML-format: '+e.Message;
4878     SkrivScanningLogFil(logTekst);
4879     raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4880     end;
4881     end;
4882    
4883     end;
4884    
4885     procedure TMainForm.IndlesScanningLogFil();
4886     var
4887     SomeTxtFile : TextFile;
4888     buffer : string;
4889     S: string;
4890     idag, imorgen : TDateTime;
4891     imorgenYmd : string;
4892     logFilnavn : string;
4893    
4894     begin
4895     idag := Now;
4896     imorgen := IncDay(idag, 1); //adds 1 day(s)
4897     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4898     if (FormatDateTime('hh:nn',idag) < '12:00') then
4899     begin
4900     imorgen := idag;
4901     end;
4902     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4903     logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
4904     if FileExists(logFilnavn) then
4905     begin
4906     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
4907     logTekst := logFilnavn+' indlæses.';
4908     SkrivScanningLogFil(logTekst);
4909     AssignFile(SomeTxtFile, logFilnavn);
4910     try
4911     Reset(SomeTxtFile);
4912     while not EOF(SomeTxtFile) do
4913     begin
4914     ReadLn(SomeTxtFile, buffer) ;
4915     S := buffer;
4916     ListBox1.Items.Insert(0, S);
4917     end;
4918     finally
4919     CloseFile(SomeTxtFile);
4920     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
4921     ListBox1.Items.Insert(0,'');
4922     ListBox1.Items.Insert(0,'');
4923     ListBox1.Items.Insert(0,'');
4924     ListBox1.Items.Insert(0,'');
4925     ListBox1.Items.Insert(0,'');
4926     ListBox1.Items.Insert(0,'');
4927     end;
4928     end;
4929     end;
4930    
4931     procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4932     var
4933     SomeTxtFile : TextFile;
4934     idag, imorgen : TDateTime;
4935     imorgenYmd : string;
4936     logFilnavn : string;
4937     error : Integer;
4938    
4939     begin
4940     if (SkrivLog = '1') then
4941     begin
4942     idag := Now;
4943     imorgen := IncDay(idag, 1); //adds 1 day(s)
4944     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4945     if (FormatDateTime('hh:nn',idag) < '12:00') then
4946     begin
4947     imorgen := idag;
4948     end;
4949     imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4950     logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4951     // Get the current directory
4952     // dir := GetCurrentDir;
4953     // ShowMessage('Current directory = '+dir);
4954     // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
4955     // ShowMessage('logFilnavn = '+logFilnavn);
4956    
4957     if not DirectoryExists('Logs') then
4958     begin
4959     CreateDir('Logs');
4960     end;
4961    
4962     AssignFile(SomeTxtFile, logFilnavn);
4963     if FileExists(logFilnavn) then
4964     begin
4965     try
4966     try
4967     Append(SomeTxtFile);
4968     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4969     except on e:exception do
4970     //ShowMessageFmt('File create failed with error %d',[error]);
4971     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
4972     end;
4973     finally
4974     CloseFile(SomeTxtFile);
4975     end;
4976     end
4977     else
4978     begin
4979     try
4980     try
4981     ReWrite(SomeTxtFile);
4982     WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4983     except on e:exception do
4984     // ShowMessageFmt('File create failed with error %d',[error]);
4985     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
4986     end;
4987     finally
4988     CloseFile(SomeTxtFile);
4989     end;
4990     end;
4991     end;
4992     end;
4993    
4994     procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
4995     var
4996     SomeTxtFile : TextFile;
4997     buffer : string;
4998     linnr : integer;
4999     S: string;
5000     A: TStrArray;
5001     idag, imorgen : TDateTime;
5002     imorgenYmd : string;
5003    
5004     begin
5005     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5006     logTekst := filnavn+' indlæses.';
5007     SkrivScanningLogFil(logTekst);
5008     SetLength(ruteHverdagArray, 1);
5009     SetLength(ruteLordagArray, 1);
5010     idag := Now;
5011     imorgen := IncDay(idag, 1); //adds 1 day(s)
5012     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5013     if (FormatDateTime('hh:nn',idag) < '12:00') then
5014     begin
5015     imorgen := idag;
5016     end;
5017     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5018     if FileExists(filnavn) then
5019     begin
5020     AssignFile(SomeTxtFile, filnavn);
5021     linnr := 0;
5022     try
5023     Reset(SomeTxtFile);
5024     while not EOF(SomeTxtFile) do
5025     begin
5026     ReadLn(SomeTxtFile, buffer) ;
5027     S := buffer;
5028     SetLength(A,0);
5029     Explode(A, ';', S);
5030     if (length(A) < 2) then
5031     begin
5032     Explode(A, ',', S);
5033     end;
5034     if (length(A) > 1) then
5035     begin
5036     SetLength(ruteHverdagArray, linnr+1);
5037     SetLength(ruteLordagArray, linnr+1);
5038     ruteHverdagArray[linnr] := A[0];
5039     ruteLordagArray[linnr] := A[1];
5040     linnr := linnr+1;
5041     end;
5042     end;
5043     finally
5044     //ShowMessage(IntToStr(length(A)));
5045     CloseFile(SomeTxtFile);
5046     //ShowMessage(IntToStr(length(ruteHverdagArray)));
5047     if (linnr > 0) then
5048     begin
5049     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5050     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5051     SkrivScanningLogFil(logTekst);
5052     end
5053     else
5054     begin
5055     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5056     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5057     SkrivScanningLogFil(logTekst);
5058     PlaySound(PWideChar(AlarmLyd));
5059     end;
5060     end;
5061     end
5062     else
5063     begin
5064     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
5065     logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
5066     SkrivScanningLogFil(logTekst);
5067     PlaySound(PWideChar(AlarmLyd));
5068     end;
5069     end;
5070    
5071     procedure TMainForm.IndlesKontrolFil(var filnavn : string);
5072     var
5073     SomeTxtFile : TextFile;
5074     buffer : string;
5075     linnr : integer;
5076     S: string;
5077     A: TStrArray;
5078     idag, imorgen : TDateTime;
5079     imorgenYmd : string;
5080    
5081     begin
5082     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
5083     logTekst := filnavn+' indlæses.';
5084     SkrivScanningLogFil(logTekst);
5085     SetLength(ruteArray, 1);
5086     SetLength(korelisteArray, 1);
5087     idag := Now;
5088     imorgen := IncDay(idag, 1); //adds 1 day(s)
5089     // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
5090     if (FormatDateTime('hh:nn',idag) < '12:00') then
5091     begin
5092     imorgen := idag;
5093     end;
5094     imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
5095     if FileExists(filnavn) then
5096     begin
5097     AssignFile(SomeTxtFile, filnavn);
5098     linnr := 0;
5099     try
5100     Reset(SomeTxtFile);
5101     while not EOF(SomeTxtFile) do
5102     begin
5103     ReadLn(SomeTxtFile, buffer) ;
5104     S := buffer;
5105     SetLength(A,0);
5106     Explode(A, ';', S);
5107     if (length(A) < 3) then
5108     begin
5109     Explode(A, ',', S);
5110     end;
5111     if (A[0]=imorgenYmd) then
5112     begin
5113     if (length(A) > 2) then
5114     begin
5115     SetLength(ruteArray, linnr+1);
5116     SetLength(korelisteArray, linnr+1);
5117     ruteArray[linnr] := A[1];
5118     korelisteArray[linnr] := A[2];
5119     linnr := linnr+1;
5120     end;
5121     end;
5122     end;
5123     finally
5124     //ShowMessage(IntToStr(length(A)));
5125     CloseFile(SomeTxtFile);
5126     //ShowMessage(IntToStr(length(ruteArray)));
5127     if (linnr > 0) then
5128     begin
5129     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
5130     logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
5131     SkrivScanningLogFil(logTekst);
5132     end
5133     else
5134     begin
5135     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
5136     logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
5137     SkrivScanningLogFil(logTekst);
5138     PlaySound(PWideChar(AlarmLyd));
5139     end;
5140     end;
5141     end
5142     else
5143     begin
5144     ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
5145     logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
5146     SkrivScanningLogFil(logTekst);
5147     PlaySound(PWideChar(AlarmLyd));
5148     end;
5149     end;
5150    
5151     //
5152     // Bladhus ***
5153     //
5154     function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
5155     var
5156     i : Integer;
5157     svar : String;
5158    
5159     begin
5160     //ShowMessage('Køreliste 1: '+korelisteArray[0]);
5161     // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
5162     // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
5163     //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
5164    
5165     svar := 'Køreliste ikke i kontrolfil';
5166     case BladhusSted of
5167     01 :
5168     begin;
5169     for i := 0 to length(ruteArray)-1 do
5170     begin
5171     if (Koreliste=ruteArray[i]) then
5172     begin
5173     svar := korelisteArray[i]; // returnerer den forventede køreliste
5174     end;
5175     end;
5176     end;
5177     // 02 : begin;
5178     //ShowMessage('02') ;
5179     // end;
5180     03 : begin;
5181     for i := 0 to length(ruteArray)-1 do
5182     begin
5183     if (Koreliste=ruteArray[i]) then
5184     begin
5185     svar := korelisteArray[i]; // returnerer den forventede køreliste
5186     end;
5187     end;
5188     end;
5189     // 04 : begin;
5190     //ShowMessage('04') ;
5191     // end;
5192     else
5193     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5194     end;
5195     if (RuteNummer = 'Rutenr') then // fra printertest funktionen
5196     svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
5197    
5198     result := svar;
5199     end;
5200    
5201 torben 2659 procedure TMainForm.VisAlarmSkaerm(strMessage: string);
5202 torben 2657 begin
5203     //ShowMessage('Ændring ikke tilladt');
5204     // Her skal komme en 'rød skærm' alarm
5205     PlaySound(PWideChar(AlarmLyd));
5206 torben 2659
5207     ListBox1.Items.Insert(0, strMessage);
5208 torben 2657 MainForm.Color := clRed;
5209     RuteNummerST.Caption := '';
5210     BoghandlerNavnST.Caption := '';
5211 torben 2659 KommentarST.Caption := strMessage;
5212 torben 2657 PakkeshopNulstil.Visible := true;
5213     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