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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20