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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20