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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20