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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20