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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20