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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2656 - (hide annotations) (download)
Sun Aug 23 13:09:14 2015 UTC (8 years, 9 months ago) by torben
File size: 198598 byte(s)
Comment cleanup

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

  ViewVC Help
Powered by ViewVC 1.1.20