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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20