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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20