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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20