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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20