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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20