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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20