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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20