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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20