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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20