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

Annotation of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20