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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20