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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3048 - (hide annotations) (download)
Mon Jun 13 09:12:26 2016 UTC (7 years, 11 months ago) by torben
File size: 169109 byte(s)
Set connect and read timeout on Http client.

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

  ViewVC Help
Powered by ViewVC 1.1.20