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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3108 - (show annotations) (download)
Mon Aug 29 14:03:14 2016 UTC (7 years, 8 months ago) by torben
File size: 163407 byte(s)
Ret fejl i "Uden for specifikation"

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

  ViewVC Help
Powered by ViewVC 1.1.20