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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3098 - (show annotations) (download)
Mon Aug 22 18:23:15 2016 UTC (7 years, 8 months ago) by torben
File size: 162756 byte(s)
Disable muligheden for ikke at bruge printer
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 menuDaoDirekte1.Checked then
2227 RuteNummerST.Color := TUtils.HexToTColor(Farve);
2228
2229 pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2230 if pakkeErScannet = 0 then
2231 begin
2232 pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2233 end;
2234 if pakkeErScannet = 0 then
2235 begin
2236 pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2237 end;
2238 pakkeForkertSted := pos('burde være hos', Kommentar);
2239
2240
2241 if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2242
2243 begin
2244 if (RuteNummer = 'Ukendt') then
2245 begin
2246 repeat
2247 begin
2248 ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2249 end
2250 until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2251 if not ClickedOK then
2252 begin
2253 exit;
2254 end;
2255 if (Length(BoghandlerNummer) > 2) then
2256 begin
2257 InitScreen();
2258 HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2259 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2260 end;
2261 end;
2262 end
2263 else
2264 if menuDaoDirekte1.Checked then
2265 begin
2266 if (BoghandlerNavn = 'Ukendt pakke') then
2267 begin
2268 PrintNyLabel := false;
2269
2270 PlaySound(PWideChar(Config.AlarmLyd));
2271 MainForm.Color := clRed;
2272 btnNulstil.Visible := true;
2273
2274 end
2275 else
2276 begin
2277 nytRuteNummer := retRutenummer(RuteNummer);
2278 if (nytRuteNummer <> RuteNummer) then
2279 begin
2280 PrintNyLabel := true;
2281 RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2282 nyFarve := Farve;
2283 RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2284 List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2285 RuteNummer := nytRuteNummer;
2286 ListBox1.Items.Insert(0,List1Msg);
2287 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2288 SkrivScanningLogFil(logTekst);
2289
2290 if (Config.PrinterNavn = 'Ingen') then
2291 begin
2292 PrintNyLabel := false;
2293 end;
2294
2295 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2296 begin
2297 PlaySound(PWideChar(Config.AlarmLyd));
2298 MainForm.Color := clRed;
2299 btnNulstil.Visible := true;
2300 end;
2301
2302 end;
2303 kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2304 if (kontrolKoreliste <> RuteNummer) then
2305 begin
2306 PrintNyLabel := true;
2307 List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2308 if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2309 begin
2310 PrintNyLabel := false;
2311 RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2312 end
2313 else
2314 begin
2315 RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2316 end;
2317 ListBox1.Items.Insert(0,List1Msg);
2318 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2319 SkrivScanningLogFil(logTekst);
2320
2321 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2322 begin
2323 PlaySound(PWideChar(Config.AlarmLyd));
2324 MainForm.Color := clRed;
2325 btnNulstil.Visible := true;
2326 end;
2327
2328 end;
2329 end;
2330
2331 end;
2332
2333 if menuDaoDirekte1.Checked then
2334 begin
2335 case BladhusSted of
2336 00 : begin;
2337 // 20150304: start
2338 // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2339 // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2340 // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2341 // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2342 if PrintNyLabel or (RuteNummer = 'Rutenr') then
2343 // 20150304: slut
2344 begin
2345 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2346 end;
2347 end;
2348 01 : begin;
2349 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2350 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2351 // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2352 begin
2353 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2354 end;
2355 end;
2356 02 : begin;
2357 if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2358 begin
2359 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2360 end;
2361 end;
2362 03 : begin;
2363 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2364 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2365 // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2366 begin
2367 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2368 end;
2369 end;
2370 04 : begin;
2371 if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2372 begin
2373 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2374 end;
2375 end;
2376 else
2377 ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2378 end;
2379 end;
2380
2381 // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2382 if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2383 begin
2384 exit;
2385 end;
2386
2387 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
2388 begin
2389 end
2390 else
2391 begin
2392 if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2393 begin
2394 logTekst := 'Printer label type ';
2395 if (chkAltidPrintLabel.Checked) then
2396 begin
2397 logTekst := logTekst + 'Alle ';
2398 end
2399 else if (PrintNyLabel) then
2400 begin
2401 logTekst := logTekst + 'Rute ';
2402 end
2403 else
2404 begin
2405 logTekst := logTekst + 'Ukendt ';
2406 end;
2407 logTekst := logTekst + ' for '+BoghandlerNavn;
2408 SkrivScanningLogFil(logTekst);
2409
2410 LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2411
2412 end;
2413 end;
2414
2415 end;
2416
2417
2418
2419 procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2420 begin
2421 menuStorePakker.Checked := true;
2422 radioStorPakke.Checked := true;
2423 end;
2424
2425 procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2426 begin
2427 menuSmaaPakker.Checked := true;
2428 radioLillePakke.Checked := true;
2429 end;
2430
2431
2432 procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2433 begin
2434 if chkSporgEfterKunde.Checked then
2435 begin
2436 Sprgefterboghandlernummer1.Checked := true;
2437 end
2438 else
2439 begin
2440 Sprgefterboghandlernummer1.Checked := false;
2441 end;
2442 end;
2443
2444
2445 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2446 begin
2447 if chkAltidPrintLabel.Checked then
2448 begin
2449 Altidprintepakkelabel1.Checked := true;
2450 end
2451 else
2452 begin
2453 Altidprintepakkelabel1.Checked := false;
2454 end;
2455
2456 end;
2457
2458 procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2459 begin
2460 if chkScanTjekkode.Checked then
2461 begin
2462 Scanogstjekkoden1.Checked := true;
2463 end
2464 else
2465 begin
2466 Scanogstjekkoden1.Checked := false;
2467 end;
2468 end;
2469
2470 procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2471 begin
2472 Scanningtype := '5';
2473 InitPakkeshoplevering();
2474 NulstilAutomatiskValg();
2475 end;
2476
2477 procedure TMainForm.NulstilAutomatiskValg();
2478 begin
2479 menuAutomatiskvalg1.Checked := false;
2480 PanelValgA.Color := clBtnFace;
2481 PanelValgA.Font.Color := clWindowText;
2482
2483 if (SpecialVersionSted = '01')
2484 or (SpecialVersionSted = '02')
2485 or (SpecialVersionSted = '03')
2486 or (SpecialVersionSted = '04') then
2487 begin
2488 // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2489 PanelValgA.Enabled := false;
2490 PanelValgA.Font.Color := clInactiveCaption;
2491 menuAutomatiskvalg1.Enabled := false;
2492 end;
2493 // 20150317: slut
2494 end;
2495
2496 procedure TMainForm.TjekkerUrls();
2497 const
2498 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2499 var
2500 urlFejl : Integer;
2501 begin
2502 urlFejl := 0;
2503 //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2504 ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2505
2506 try
2507 // Tjekker urls
2508 logTekst := 'Tjekker urls.';
2509 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2510 SkrivScanningLogFil(logTekst);
2511
2512
2513
2514 // Tjekker UrlNormal
2515 if PanelValg1.Enabled = true then
2516 begin
2517 TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2518 end;
2519
2520 // Tjekker UrlReturDAO
2521 if PanelValg2.Enabled = true then
2522 begin
2523 TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2524 end;
2525
2526 // Tjekker UrlReturBoghandler
2527 if PanelValg3.Enabled = true then
2528 begin
2529 TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2530 end;
2531
2532 // Tjekker UrlBudlevering
2533 if PanelValg4.Enabled = true then
2534 begin
2535 TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2536 end;
2537
2538 // Tjekker UrlPakkeshoplevering
2539 if PanelValg5.Enabled = true then
2540 begin
2541 TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2542 end;
2543
2544 // Tjekker UrlReturPakkeshop
2545 if PanelValg6.Enabled = true then
2546 begin
2547 TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2548 end;
2549
2550 // Tjekker UrlManglendeScanninger
2551 if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2552 begin
2553 TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2554 end;
2555
2556 // Tjekker UrlPakkeshopManglendeScanninger
2557 if PanelValg5.Enabled = true then
2558 begin
2559 TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2560 end;
2561
2562 // Tjekker UrlPakkeshopManglendeReturScanninger
2563 if PanelValg6.Enabled = true then
2564 begin
2565 TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2566 end;
2567
2568 // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2569 if PanelValg7.Enabled = true then
2570 begin
2571 TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2572 TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2573 end;
2574
2575 // Tjekker UrlEKLoverforsel
2576 if PanelValg1.Enabled = true then
2577 begin
2578 TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2579 end;
2580
2581
2582 // Tjekker UrlEKLoverforselPakkeshop
2583 if PanelValg5.Enabled = true then
2584 begin
2585 TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2586 end;
2587
2588
2589 // Tjekker UrlFindPakketype
2590 TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2591
2592 // Tjekker UrlSendPrograminfo
2593 TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2594
2595
2596
2597 logTekst := 'urls er ok';
2598 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2599 SkrivScanningLogFil(logTekst);
2600
2601 Except
2602 Config.TjekUrls := '-'; // markerer at der var fejl
2603
2604 end;
2605 end;
2606
2607 procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2608 const
2609 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2610 begin
2611 if TUtils.CheckUrl(Url) then
2612
2613 begin
2614 logTekst := UrlNavn + ' accepteret: ' + Url;
2615 SkrivScanningLogFil(logTekst);
2616 end
2617 else
2618 begin
2619 inc(urlFejl); // Optæller antal fejl
2620 logTekst := UrlNavn + ' svarer ikke: ' + Url;
2621 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2622 if Config.TjekUrls = '1' then
2623 begin
2624 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2625 end;
2626
2627 SkrivScanningLogFil(logTekst);
2628
2629 if Config.TjekUrls = '1' then
2630 begin
2631 ShowMessage(logTekst);
2632 Config.UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2633 Application.Terminate;
2634
2635 raise Exception.Create('UrlFejl');
2636
2637 end;
2638 end;
2639
2640 end;
2641
2642
2643
2644 procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2645 var
2646 SR: TSearchRec;
2647 dt: TDateTime;
2648 CreationTime: TFileTime;
2649 dtCreation: TDateTime;
2650 BemTxt : String;
2651 begin
2652 logTekst := 'Logfiler tjekkes for sletning.';
2653 SkrivScanningLogFil(logTekst);
2654 FileList.Insert(0,logTekst);
2655 if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
2656 begin
2657 repeat
2658 if (SR.Attr <> faDirectory) then
2659 begin
2660
2661 dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
2662 CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
2663 dtCreation := TUtils.FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
2664 // Selvom creation date godt kan være forskellig fra modified date,
2665 // skal vi alligevel altid tjekke filens alder ud fra modified date
2666 // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
2667 BemTxt := '';
2668 if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
2669 begin
2670 BemTxt := ' (skal slettes)';
2671 end;
2672 logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
2673 if DaysBetween(dtCreation, dt) > 1 then
2674 begin
2675 logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
2676 end;
2677 FileList.Insert(0,logTekst);
2678 SkrivScanningLogFil(logTekst);
2679 if BemTxt = ' (skal slettes)' then
2680 begin
2681 if DeleteFile(Path + SR.Name) then
2682 begin
2683 logTekst := 'Logfil er slettet.';
2684 FileList.Insert(0,logTekst);
2685 SkrivScanningLogFil(logTekst);
2686 end
2687 else
2688 begin
2689 logTekst := 'Logfil kunne IKKE slettes.';
2690 FileList.Insert(0,logTekst);
2691 SkrivScanningLogFil(logTekst);
2692 end;
2693 end;
2694 end;
2695 until FindNext(SR) <> 0;
2696 FindClose(SR);
2697 end;
2698 end;
2699
2700 procedure TMainForm.btnNulstilClick(Sender: TObject);
2701 begin
2702 PakkeshopStregkode := '';
2703 PakkeshopTjekkode := '';
2704 btnNulstil.Visible := false;
2705 PakkeshopText1.Caption := 'Stregkode';
2706 BoghandlerStregkode := '';
2707 BoghandlerTjekkode := '';
2708 Stregkode := '';
2709 // 20150312: start
2710 if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2711 begin
2712 ShowMessage('Programmet afbrydes...');
2713 Config.UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2714 Application.Terminate;
2715 exit;
2716 end;
2717 // 20150312: slut
2718 InitScreen();
2719 // MainForm.Color := HexToTColor(Farve);
2720 if Farve <> '' then
2721 begin
2722 MainForm.Color := TUtils.HexToTColor(Farve);
2723 end;
2724 if (menuDaoDirekte1.Checked) then
2725 begin
2726 InitLillePakke();
2727 end;
2728 PrinterstatusStaticText1.Caption := '';
2729 PrinterstatusStaticText1.Color := MainForm.Color;
2730 end;
2731
2732
2733 procedure TMainForm.PanelValg1Click(Sender: TObject);
2734 begin
2735 Scanningtype := '1';
2736 InitNatxpresslevering();
2737 NulstilAutomatiskValg();
2738 end;
2739
2740 procedure TMainForm.PanelValg2Click(Sender: TObject);
2741 begin
2742 Scanningtype := '2';
2743 InitReturFraDao();
2744 NulstilAutomatiskValg();
2745 end;
2746
2747 procedure TMainForm.PanelValg3Click(Sender: TObject);
2748 begin
2749 Scanningtype := '3';
2750 InitReturFraKunde();
2751 NulstilAutomatiskValg();
2752 end;
2753
2754 procedure TMainForm.PanelValg4Click(Sender: TObject);
2755 begin
2756 Scanningtype := '4';
2757 InitDirektelevering();
2758 NulstilAutomatiskValg();
2759 end;
2760
2761 procedure TMainForm.PanelValg5Click(Sender: TObject);
2762 begin
2763 Scanningtype := '5';
2764 InitPakkeshoplevering();
2765 NulstilAutomatiskValg();
2766 end;
2767
2768 procedure TMainForm.PanelValg6Click(Sender: TObject);
2769 begin
2770 Scanningtype := '6';
2771 InitReturFraPakkeshop();
2772 NulstilAutomatiskValg();
2773 end;
2774
2775
2776 procedure TMainForm.PanelValg7Click(Sender: TObject);
2777 begin
2778 Scanningtype := '7';
2779 InitIndleveringskode();
2780 NulstilAutomatiskValg();
2781
2782 end;
2783
2784 procedure TMainForm.PanelValgAClick(Sender: TObject);
2785 begin
2786 // Skal ikke toggle men bare sætte funktionen on
2787 // Fravælges ved at vælge en scanningstype
2788 menuAutomatiskvalg1.Checked := true;
2789 PanelValgA.Color := clGreen;
2790 PanelValgA.Font.Color := clWhite;
2791
2792
2793
2794 end;
2795
2796 procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2797 begin
2798 Scanningtype := '1';
2799 NulstilAutomatiskValg();
2800 InitNatxpresslevering();
2801 end;
2802
2803 procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
2804 var
2805 RuteNummer : String;
2806 Kommentar : String;
2807 BoghandlerNavn : String;
2808 Koreliste : String;
2809 Falsk : Boolean;
2810 SmsKode : String;
2811 DBKbane : String;
2812 Leveringssted : String;
2813 orgTjekUrls : String;
2814 begin
2815 orgTjekUrls := Config.TjekUrls;
2816 if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2817 begin
2818 TjekkerUrls();
2819 end;
2820 if Config.TjekUrls = '-' then
2821 begin
2822 //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2823 RuteNummer := '';
2824 Kommentar := 'Se log vinduet';
2825 BoghandlerNavn := 'Fejl i forbindelse til server';
2826 Koreliste := '';
2827 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2828 // Her kommer en alarm og rød skærm
2829 PlaySound(PWideChar(Config.AlarmLyd));
2830 MainForm.Color := clRed;
2831 btnNulstil.Visible := true;
2832 end
2833 else
2834 begin
2835 Falsk := False;
2836
2837 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2838 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2839 SmsKode := '999999';
2840 DBKbane := '999';
2841 Leveringssted := 'XXX';
2842 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2843 FocusControl(StregkodeST);
2844 end;
2845 Config.TjekUrls := orgTjekUrls;
2846
2847 end;
2848
2849 procedure TMainForm.Testprinter1Click(Sender: TObject);
2850 var
2851 RuteNummer : String;
2852 Kommentar : String;
2853 BoghandlerNavn : String;
2854 Koreliste : String;
2855 Falsk : Boolean;
2856 SmsKode : String;
2857 DBKbane : String;
2858 Leveringssted : String;
2859 begin
2860 RuteNummer := 'Rutenr';
2861 Kommentar := '***** Kommentar *****';
2862 BoghandlerNavn := 'Modtagernavn';
2863 Falsk := False;
2864
2865
2866 if (LabelPrint.GetPrinterCount() = 0) then
2867 begin
2868 ShowMessage('Der er ikke installeret en printer på denne PC.');
2869 end
2870 // else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2871 // begin
2872 // ShowMessage('Der er fravalgt printer i dette program.');
2873 // end
2874 else
2875 begin
2876 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2877 SmsKode := '999999';
2878 DBKbane := '999';
2879 Leveringssted := 'XXX';
2880 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2881 LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2882 end;
2883 FocusControl(StregkodeST);
2884 end;
2885
2886 procedure TMainForm.Timer1Timer(Sender: TObject);
2887 begin
2888 if (Config.TjekPrinter = '1') then
2889 begin
2890 LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2891 end
2892 else
2893 begin
2894 PrinterstatusStaticText1.Caption := '';
2895 PrinterstatusStaticText1.Color := MainForm.Color;
2896 end;
2897 end;
2898
2899
2900
2901 procedure TMainForm.Om1Click(Sender: TObject);
2902 const
2903 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2904 var
2905 tekst, filversion : String;
2906 begin
2907
2908 filversion := TUtils.Sto_GetFmtFileVersion('');
2909 tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
2910
2911 tekst := tekst+crlf+crlf;
2912 tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
2913 tekst := tekst+crlf;
2914
2915 if SpecialVersionSted = '' then
2916 begin
2917 tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
2918 end;
2919
2920 if SpecialVersionSted <> '' then
2921 begin
2922 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2923 begin
2924 if Stednavn = '' then
2925 begin
2926 tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
2927 end
2928 else
2929 begin
2930 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2931 end;
2932 end
2933 else
2934 begin
2935 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2936 end;
2937 end;
2938
2939 if (Pos('omdeling.info',Url) = 0) then
2940 begin
2941 tekst := tekst+crlf+crlf;
2942 tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
2943 tekst := tekst+crlf+crlf;
2944 tekst := tekst+crlf+crlf+'Url: ' + Url;
2945 end;
2946
2947 MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2948
2949 end;
2950
2951
2952 procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2953 Rect: TRect; State: TOwnerDrawState);
2954 var
2955 ListBox1MaxLinLgd,i : Integer;
2956 myColor: TColor;
2957 myBrush: TBrush;
2958 begin
2959 ListBox1MaxLinLgd := 0;
2960 myBrush := TBrush.Create;
2961 with (Control as TListBox).Canvas do
2962 begin
2963 if not Odd(Index) then
2964 myColor := clWhite
2965 else
2966 myColor := clSilver;
2967
2968 if odSelected in State then
2969 begin
2970 myColor := MainForm.Color;
2971 font.Color := clBlack;
2972 end;
2973
2974 myBrush.Style := bsSolid;
2975 myBrush.Color := myColor;
2976 Windows.FillRect(handle, Rect, myBrush.Handle) ;
2977 Brush.Style := bsClear;
2978 TextOut(Rect.Left, Rect.Top,
2979 (Control as TListBox).Items[Index]) ;
2980 MyBrush.Free;
2981 end;
2982
2983 for i := 0 to (ListBox1.Items.Count - 1) do
2984 if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
2985 ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
2986 ListBox1.ScrollWidth := ListBox1MaxLinLgd;
2987 end;
2988
2989 procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
2990 begin
2991
2992 Application.Terminate;
2993
2994 end;
2995
2996 procedure TMainForm.Manual1Click(Sender: TObject);
2997 var
2998 fileName : string;
2999 begin
3000 fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3001
3002 if FileExists(fileName) then
3003 begin
3004 if TUtils.AdobeReaderExists then
3005 begin
3006 //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3007 ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3008 end
3009 else
3010 begin
3011 ShowMessage('Acrobat Reader er ikke installeret!');
3012 end;
3013 end
3014 else
3015 begin
3016 ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3017 end;
3018 end;
3019
3020 procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3021 var
3022 fileName : string;
3023 begin
3024 fileName := 'Docs\Manual_0.pdf';
3025
3026 if FileExists(fileName) then
3027 begin
3028 if TUtils.AdobeReaderExists then
3029 begin
3030 //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3031 ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3032 end
3033 else
3034 begin
3035 ShowMessage('Adobe Reader er ikke installeret!');
3036 end;
3037 end
3038 else
3039 begin
3040 ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3041 end;
3042 end;
3043
3044 procedure TMainForm.menuIndleveringClick(Sender: TObject);
3045 begin
3046 Scanningtype := '7';
3047 NulstilAutomatiskValg();
3048 InitIndleveringskode();
3049 end;
3050
3051 procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3052 begin
3053
3054 if Sprgefterboghandlernummer1.Checked then
3055 begin
3056 chkSporgEfterKunde.Checked := true;
3057 end
3058 else
3059 begin
3060 chkSporgEfterKunde.Checked := false;
3061 end;
3062
3063
3064 end;
3065
3066 procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3067 begin
3068 Scanningtype := '2';
3069 NulstilAutomatiskValg();
3070 InitReturFraDao();
3071 end;
3072
3073 procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3074 begin
3075 Scanningtype := '6';
3076 InitReturFraPakkeshop();
3077 NulstilAutomatiskValg();
3078 end;
3079
3080 procedure TMainForm.InitNatxpresslevering();
3081 begin
3082 menuAutomatiskTjekkodeStyring.Enabled := true;
3083 btnNulstil.Visible := false;
3084 menuNatXpress1.Checked := true;
3085 InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3086 PanelValg1.Color := clGreen;
3087 PanelValg1.Font.Color := clWhite;
3088
3089 chkAltidPrintLabel.Enabled := true;
3090 Altidprintepakkelabel1.Enabled := true;
3091 Altidprintepakkelabel1.Checked := false;
3092 chkAltidPrintLabel.Checked := false;
3093 Sprgefterboghandlernummer1.Checked := false;
3094 chkSporgEfterKunde.Checked := false;
3095 Sprgefterboghandlernummer1.Enabled := true;
3096 menuSmaaPakker.Enabled := false;
3097 menuStorePakker.Enabled := false;
3098 radioStorPakke.Enabled := false;
3099 radioLillePakke.Enabled := false;
3100 ListBox1.Visible := true;
3101 BtnOpdaterListen.Enabled := true;
3102 BtnEKLoverforsel.Enabled := true;
3103 InitLillePakke();
3104 ListBox1.Items.Clear;
3105
3106 chkForstorTilDirekte.Checked := false;
3107 chkForstorTilDirekte.Enabled := false;
3108
3109 if BladhusSted = 0 then
3110 begin
3111 IndlesScanningLogFil();
3112 IndlesManglendeScanninger();
3113 end;
3114 end;
3115
3116 procedure TMainForm.InitReturFraDao();
3117 begin
3118 menuAutomatiskTjekkodeStyring.Enabled := false;
3119 menuNatxpressReturDAO1.Checked := true;
3120 btnNulstil.Visible := false;
3121 InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3122 PanelValg2.Color := clGreen;
3123 PanelValg2.Font.Color := clWhite;
3124
3125 chkAltidPrintLabel.Enabled := false;
3126 Altidprintepakkelabel1.Enabled := false;
3127
3128 Altidprintepakkelabel1.Checked := false;
3129 Sprgefterboghandlernummer1.Checked := false;
3130 chkSporgEfterKunde.Checked := false;
3131 Sprgefterboghandlernummer1.Enabled := false;
3132 menuSmaaPakker.Enabled := true;
3133 menuStorePakker.Enabled := true;
3134 radioStorPakke.Enabled := true;
3135 radioLillePakke.Enabled := true;
3136 ListBox1.Visible := true;
3137 ListBox1.Items.Clear;
3138 ListBox2.Items.Clear;
3139 BtnEKLoverforsel.Enabled := false;
3140
3141 chkForstorTilDirekte.Checked := false;
3142 chkForstorTilDirekte.Enabled := false;
3143
3144 InitLillePakke();
3145 end;
3146
3147 procedure TMainForm.InitReturFraKunde();
3148 begin
3149 menuAutomatiskTjekkodeStyring.Enabled := false;
3150 menuNatxpressReturfraKunde1.Checked := true;
3151 btnNulstil.Visible := false;
3152 InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3153 PanelValg3.Color := clGreen;
3154 PanelValg3.Font.Color := clWhite;
3155
3156 chkAltidPrintLabel.Enabled := false;
3157 Altidprintepakkelabel1.Enabled := false;
3158 Altidprintepakkelabel1.Checked := false;
3159 Sprgefterboghandlernummer1.Checked := false;
3160 chkSporgEfterKunde.Checked := false;
3161 Sprgefterboghandlernummer1.Enabled := false;
3162 menuSmaaPakker.Enabled := true;
3163 menuStorePakker.Enabled := true;
3164 radioStorPakke.Enabled := true;
3165 radioLillePakke.Enabled := true;
3166 ListBox1.Visible := true;
3167 ListBox1.Items.Clear;
3168 ListBox2.Items.Clear;
3169 BtnEKLoverforsel.Enabled := false;
3170
3171 chkForstorTilDirekte.Checked := false;
3172 chkForstorTilDirekte.Enabled := false;
3173
3174 InitLillePakke();
3175 end;
3176
3177 procedure TMainForm.InitDirektelevering();
3178 begin
3179 menuAutomatiskTjekkodeStyring.Enabled := false;
3180 menuDaoDirekte1.Checked := true;
3181 btnNulstil.Visible := false;
3182 InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3183 PanelValg4.Color := clGreen;
3184 PanelValg4.Font.Color := clWhite;
3185
3186 chkAltidPrintLabel.Enabled := false;
3187 Altidprintepakkelabel1.Enabled := false;
3188
3189 Altidprintepakkelabel1.Checked := false;
3190 Sprgefterboghandlernummer1.Checked := false;
3191 chkSporgEfterKunde.Checked := false;
3192 Sprgefterboghandlernummer1.Enabled := false;
3193 menuSmaaPakker.Enabled := true;
3194 menuStorePakker.Enabled := true;
3195 radioStorPakke.Enabled := true;
3196 radioLillePakke.Enabled := true;
3197 ListBox1.Visible := true;
3198 ListBox1.Items.Clear;
3199 BtnDownloadKontrolfil.Enabled := false;
3200 BtnOpdaterListen.Enabled := true;
3201 BtnDownloadRuteskiftFil.Visible := false;
3202 BtnEKLoverforsel.Enabled := false;
3203 IdFTP1.Passive := true;
3204 IdFTP1.PassiveUseControlHost := true;
3205
3206 chkForstorTilDirekte.Checked := false;
3207 chkForstorTilDirekte.Enabled := true;
3208
3209 if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3210 begin
3211 IndlesScanningLogFil();
3212 IndlesManglendeScanninger();
3213 end;
3214
3215 end;
3216
3217 procedure TMainForm.InitPakkeshoplevering();
3218 begin
3219 menuAutomatiskTjekkodeStyring.Enabled := true;
3220 menuPakkeshop1.Checked := true;
3221 btnNulstil.Visible := false;
3222 InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3223 PanelValg5.Color := clGreen;
3224 PanelValg5.Font.Color := clWhite;
3225
3226 chkAltidPrintLabel.Enabled := false;
3227 Altidprintepakkelabel1.Enabled := false;
3228
3229 Altidprintepakkelabel1.Checked := false;
3230 Sprgefterboghandlernummer1.Checked := false;
3231 chkSporgEfterKunde.Checked := false;
3232 Sprgefterboghandlernummer1.Enabled := false;
3233 menuSmaaPakker.Enabled := false;
3234 menuStorePakker.Enabled := false;
3235 radioStorPakke.Enabled := false;
3236 radioLillePakke.Enabled := false;
3237 ListBox1.Visible := true;
3238 ListBox1.Items.Clear;
3239 BtnDownloadKontrolfil.Enabled := false;
3240 BtnOpdaterListen.Enabled := true;
3241
3242 BtnEKLoverforsel.Enabled := true;
3243
3244 chkForstorTilDirekte.Checked := false;
3245 chkForstorTilDirekte.Enabled := true;
3246
3247 InitLillePakke();
3248 IndlesScanningLogFil();
3249 if BladhusSted = 0 then
3250 begin
3251 IndlesManglendeScanninger();
3252 end;
3253 IdFTP1.Passive := true;
3254 IdFTP1.PassiveUseControlHost := true;
3255 end;
3256
3257 procedure TMainForm.InitReturFraPakkeshop();
3258 begin
3259 menuAutomatiskTjekkodeStyring.Enabled := false;
3260 menuPakkeshopRetur1.Checked := true;
3261 btnNulstil.Visible := false;
3262 InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3263 PanelValg6.Color := clGreen;
3264 PanelValg6.Font.Color := clWhite;
3265
3266 chkAltidPrintLabel.Enabled := false;
3267 Altidprintepakkelabel1.Enabled := false;
3268
3269 Altidprintepakkelabel1.Checked := false;
3270 Sprgefterboghandlernummer1.Checked := false;
3271 chkSporgEfterKunde.Checked := false;
3272 Sprgefterboghandlernummer1.Enabled := false;
3273 menuSmaaPakker.Enabled := false;
3274 menuStorePakker.Enabled := false;
3275 radioStorPakke.Enabled := false;
3276 radioLillePakke.Enabled := false;
3277 ListBox1.Visible := true;
3278 ListBox1.Items.Clear;
3279 BtnDownloadKontrolfil.Enabled := false;
3280 BtnOpdaterListen.Enabled := true;
3281 BtnEKLoverforsel.Enabled := false;
3282
3283 chkForstorTilDirekte.Checked := false;
3284 chkForstorTilDirekte.Enabled := false;
3285
3286
3287 InitLillePakke();
3288 IndlesScanningLogFil();
3289 if BladhusSted = 0 then
3290 begin
3291 IndlesManglendeScanninger();
3292 end;
3293 IdFTP1.Passive := true;
3294 IdFTP1.PassiveUseControlHost := true;
3295 end;
3296
3297 procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3298 begin
3299 Scanningtype := '3';
3300 NulstilAutomatiskValg();
3301 InitReturFraKunde();
3302 end;
3303
3304 procedure TMainForm.InitIndleveringskode();
3305 begin
3306 menuIndlevering.Checked := true;
3307 menuAutomatiskTjekkodeStyring.Enabled := false;
3308
3309 btnNulstil.Visible := false;
3310 InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3311 PanelValg7.Color := clGreen;
3312 PanelValg7.Font.Color := clWhite;
3313
3314 chkAltidPrintLabel.Enabled := false;
3315 Altidprintepakkelabel1.Enabled := false;
3316
3317 Altidprintepakkelabel1.Checked := false;
3318 Sprgefterboghandlernummer1.Checked := false;
3319 Sprgefterboghandlernummer1.Enabled := false;
3320 chkSporgEfterKunde.Checked := false;
3321
3322
3323
3324 menuSmaaPakker.Enabled := false;
3325 menuStorePakker.Enabled := false;
3326 radioStorPakke.Enabled := false;
3327 radioLillePakke.Enabled := false;
3328 ListBox1.Visible := true;
3329 ListBox1.Items.Clear();
3330
3331 BtnDownloadKontrolfil.Enabled := false;
3332 BtnOpdaterListen.Enabled := true;
3333 BtnEKLoverforsel.Enabled := false;
3334
3335 chkForstorTilDirekte.Checked := false;
3336 chkForstorTilDirekte.Enabled := false;
3337
3338
3339 InitLillePakke();
3340 IndlesScanningLogFil();
3341 if BladhusSted = 0 then
3342 begin
3343 IndlesManglendeScanninger();
3344 end;
3345 IdFTP1.Passive := true;
3346 IdFTP1.PassiveUseControlHost := true;
3347 end;
3348
3349
3350 procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3351 begin
3352 InitStorPakke();
3353 end;
3354
3355 procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3356 begin
3357 InitLillePakke();
3358 end;
3359
3360 procedure TMainForm.InitLillePakke();
3361 begin
3362 radioLillePakke.Checked := true;
3363 menuSmaaPakker.Checked := true;
3364 // Stregkode := '';
3365 end;
3366
3367 procedure TMainForm.InitStorPakke();
3368 begin
3369 radioStorPakke.Checked := true;
3370 menuStorePakker.Checked := true;
3371 // 20150310: start
3372 // Stregkode := '';
3373 // 20150310: slut
3374 end;
3375
3376
3377
3378 procedure TMainForm.PlaySound(filename : PWideChar);
3379 begin
3380 if (filename <> '') then
3381 begin
3382 sndPlaySound(filename,
3383 SND_NODEFAULT Or SND_ASYNC);
3384 end;
3385 end;
3386
3387 procedure TMainForm.Testlyd1Click(Sender: TObject);
3388 begin
3389 if Config.AlarmLyd <> '' then
3390 begin
3391 PlaySound(PWideChar(Config.AlarmLyd));
3392 end
3393 else
3394 begin
3395 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3396 end;
3397 end;
3398
3399 procedure TMainForm.Testlyd2Click(Sender: TObject);
3400 begin
3401 if (PakkeshopText1.Caption = 'Tjekkode') then
3402 begin
3403 if Config.ScannetOkTilTjekkodeLyd <> '' then
3404 begin
3405 PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3406 end
3407 else
3408 begin
3409 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3410 end;
3411 exit;
3412 end;
3413
3414 if menuSmaaPakker.Checked then
3415 if Config.ScannetOkLyd <> '' then
3416 begin
3417 PlaySound(PWideChar(Config.ScannetOkLyd));
3418 end
3419 else
3420 begin
3421 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3422 end;
3423 if menuStorePakker.Checked then
3424 if Config.ScannetOkStorLyd <> '' then
3425 begin
3426 PlaySound(PWideChar(Config.ScannetOkStorLyd));
3427 end
3428 else
3429 begin
3430 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3431 end;
3432 end;
3433
3434
3435 procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3436 begin
3437 Scanningtype := '4';
3438 NulstilAutomatiskValg();
3439 InitDirektelevering();
3440 end;
3441
3442 procedure TMainForm.Button1Click(Sender: TObject);
3443 begin;
3444 CheckCode();
3445 end;
3446
3447 procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3448 var
3449 WebSvar : String;
3450 URLStr : String;
3451 StedKode : String;
3452 Node: IXMLNode;
3453 I: Integer;
3454 status, kommentar : String;
3455
3456 begin
3457 BtnEKLoverforsel.Enabled := false;
3458
3459 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3460 logTekst := 'Overfører de scannede pakker til EKL';
3461 SkrivScanningLogFil(logTekst);
3462 StedKode := Sted;
3463 URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3464
3465 if PanelValg5.Color = clGreen then
3466 begin
3467 URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3468 end;
3469
3470
3471 try
3472 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3473 WebSvar := IdHTTP1.Get(URLStr);
3474 except
3475 on e:EIdConnClosedGracefully do
3476 begin
3477 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3478 WebSvar := IdHTTP1.Get(URLStr);
3479 end;
3480 on e:exception do
3481 begin
3482 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
3483 logTekst := 'Fejl i web forespørgsel: '+e.Message;
3484 SkrivScanningLogFil(logTekst);
3485 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
3486 end;
3487 end;
3488 try
3489 XMLDocument1.LoadFromXML(WebSvar);
3490 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
3491 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
3492 if Node.NodeType = ntElement then begin
3493 if Node.NodeName = 'Status' then begin
3494 if not VarIsNull(Node.NodeValue) then
3495 status := Node.NodeValue;
3496 end;
3497 if Node.NodeName = 'Kommentar' then begin
3498 if not VarIsNull(Node.NodeValue) then
3499 kommentar := Node.NodeValue;
3500 end;
3501 end;
3502 end;
3503
3504 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
3505 logTekst := 'Overførsel til EKL: ' + status;
3506 SkrivScanningLogFil(logTekst);
3507
3508 except on e:exception do
3509 begin
3510 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
3511 logTekst := 'Overførsel til EKL: ' + status;
3512 SkrivScanningLogFil(logTekst);
3513 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
3514 logTekst := 'Fejl i XML-format: '+e.Message;
3515 SkrivScanningLogFil(logTekst);
3516 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
3517 end;
3518 end;
3519
3520 BtnEKLoverforsel.Enabled := true;
3521
3522 ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3523
3524 // Hvis der var fejl i overførslen skal dette fejlmeldes her
3525 if status = 'Fejl' then
3526 begin // Her skal komme en alarm og rød skærm
3527 PlaySound(PWideChar(Config.AlarmLyd));
3528 MainForm.Color := clRed;
3529 RutenummerST.Caption := 'EKL overførsel';
3530 BoghandlerNavnST.Caption := 'Fejl:';
3531 if (pos('Deadlock', Kommentar) > 0) then
3532 begin
3533 RutenummerST.Caption := 'EKL overførsel fejlet';
3534 BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3535 end;
3536 KommentarST.Caption := Kommentar;
3537 btnNulstil.Visible := true;
3538 end;
3539
3540 end;
3541
3542 procedure TMainForm.CheckCode();
3543 var
3544 Barcode, Svar : String;
3545 ClickedOK : Boolean;
3546 begin
3547 ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
3548 if ClickedOk then
3549 begin
3550 { if (BarCodeValid(Barcode)) then
3551 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3552 else
3553 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3554 }
3555 // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
3556 { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
3557 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3558 else
3559 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3560 }
3561 Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3562
3563 MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3564 CheckCode();
3565 end;
3566
3567 end;
3568
3569
3570 //
3571 // Bladhus ***
3572 //
3573 procedure TMainForm.DownloadBladhusRuteskiftfil();
3574 const
3575 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3576
3577 var
3578 filnavn_input : string;
3579 filnavn_output : string;
3580 buttonSelected : Integer;
3581
3582 begin
3583 filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
3584 filnavn_output := BladhusRuteskiftfil_lokal;
3585
3586 case BladhusSted of
3587 00 : begin;
3588 end;
3589 01 : begin;
3590 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3591 if buttonSelected = mrOK then
3592 begin
3593 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3594 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3595 SkrivScanningLogFil(logTekst);
3596 try
3597 try
3598
3599 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3600 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3601 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3602 IdFTP1.Connect;
3603
3604 //IdFTP1.TransferType := ftASCII;
3605 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3606 try
3607 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3608 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3609 except on e:EIdConnClosedGracefully do
3610 begin
3611 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3612 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3613 end;
3614 end;
3615 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3616
3617 ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3618 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3619 SkrivScanningLogFil(logTekst);
3620
3621 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3622 logTekst := 'Ruteskift fil tjekkes.';
3623 SkrivScanningLogFil(logTekst);
3624
3625 finally
3626 IdFTP1.Disconnect;
3627 end;
3628
3629 except on e:exception do
3630 begin
3631 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3632 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3633 SkrivScanningLogFil(logTekst);
3634 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3635 [e.Message
3636 + CrLf + 'Host: '+IdFTP1.host
3637 + CrLf + 'Username: '+IdFTP1.Username
3638 ]
3639 );
3640 end;
3641 end;
3642 end
3643 else
3644 begin
3645 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3646 logTekst := 'Download af ruteskiftfil annulleret';
3647 SkrivScanningLogFil(logTekst);
3648 end;
3649 IndlesRuteskiftFil(filnavn_output);
3650 end;
3651 02 : begin;
3652 end;
3653 03 : begin;
3654 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3655 if buttonSelected = mrOK then
3656 begin
3657 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3658 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3659 SkrivScanningLogFil(logTekst);
3660 try
3661 try
3662
3663 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3664 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3665 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3666 IdFTP1.Connect;
3667
3668 //IdFTP1.TransferType := ftASCII;
3669 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3670 try
3671 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3672 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3673 except on e:EIdConnClosedGracefully do
3674 begin
3675 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3676 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3677 end;
3678 end;
3679 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3680
3681 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3682 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3683 SkrivScanningLogFil(logTekst);
3684
3685 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3686 logTekst := 'Ruteskift fil tjekkes.';
3687 SkrivScanningLogFil(logTekst);
3688
3689 finally
3690 IdFTP1.Disconnect;
3691 end;
3692
3693 except on e:exception do
3694 begin
3695 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3696 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3697 SkrivScanningLogFil(logTekst);
3698 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3699 [e.Message
3700 + CrLf + 'Host: '+IdFTP1.host
3701 + CrLf + 'Username: '+IdFTP1.Username
3702 ]
3703 );
3704 end;
3705 end;
3706 end
3707 else
3708 begin
3709 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3710 logTekst := 'Download af ruteskiftfil annulleret';
3711 SkrivScanningLogFil(logTekst);
3712 end;
3713 IndlesRuteskiftFil(filnavn_output);
3714 end;
3715 04 : begin;
3716 end;
3717 else
3718 ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
3719 end;
3720
3721 end;
3722
3723 procedure TMainForm.DownloadBladhusKontrolfil();
3724 const
3725 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3726
3727 var
3728 filnavn_input : string;
3729 filnavn_output : string;
3730 buttonSelected : Integer;
3731
3732 begin
3733 filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
3734 filnavn_output := BladhusKontrolfil_lokal;
3735
3736 case BladhusSted of
3737 01 :
3738 begin;
3739 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3740 if buttonSelected = mrOK then
3741 begin
3742 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3743 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3744 SkrivScanningLogFil(logTekst);
3745 try
3746 try
3747
3748 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3749 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3750 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3751 IdFTP1.Connect;
3752
3753 //IdFTP1.TransferType := ftASCII;
3754 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3755 try
3756 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3757 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3758 except on e:EIdConnClosedGracefully do
3759 begin
3760 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3761 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3762 end;
3763 end;
3764 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3765
3766 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3767 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3768 SkrivScanningLogFil(logTekst);
3769
3770 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3771 logTekst := 'Rute kontrol fil tjekkes.';
3772 SkrivScanningLogFil(logTekst);
3773
3774 finally
3775 IdFTP1.Disconnect;
3776 end;
3777
3778 except on e:exception do
3779 begin
3780 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3781 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3782 SkrivScanningLogFil(logTekst);
3783 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3784 [e.Message
3785 + CrLf + 'Host: '+IdFTP1.host
3786 + CrLf + 'Username: '+IdFTP1.Username
3787 ]
3788 );
3789 end;
3790 end;
3791 end
3792 else
3793 begin
3794 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3795 logTekst := 'Download af kontrolfil annulleret';
3796 SkrivScanningLogFil(logTekst);
3797 end;
3798 IndlesKontrolFil(filnavn_output);
3799 end;
3800 02 : begin;
3801 end;
3802 03 : begin;
3803 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3804 if buttonSelected = mrOK then
3805 begin
3806 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3807 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3808 SkrivScanningLogFil(logTekst);
3809 try
3810 try
3811
3812 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3813 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3814 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3815 IdFTP1.Connect;
3816
3817 //IdFTP1.TransferType := ftASCII;
3818 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3819 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3820
3821 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3822 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3823 SkrivScanningLogFil(logTekst);
3824
3825 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3826 logTekst := 'Rute kontrol fil tjekkes.';
3827 SkrivScanningLogFil(logTekst);
3828
3829 finally
3830 IdFTP1.Disconnect;
3831 end;
3832
3833 except on e:exception do
3834 begin
3835 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3836 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3837 SkrivScanningLogFil(logTekst);
3838 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3839 [e.Message
3840 + CrLf + 'Host: '+IdFTP1.host
3841 + CrLf + 'Username: '+IdFTP1.Username
3842 ]
3843 );
3844 end;
3845 end;
3846 end
3847 else
3848 begin
3849 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3850 logTekst := 'Download af kontrolfil annulleret';
3851 SkrivScanningLogFil(logTekst);
3852 end;
3853 IndlesKontrolFil(filnavn_output);
3854 end;
3855 04 : begin;
3856 end;
3857 else
3858 ShowMessage('Ukendt Bladhus sted ???') ;
3859 end;
3860
3861 end;
3862
3863 procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
3864 const
3865 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3866
3867 var
3868 testsystem : String;
3869
3870 begin
3871 testsystem := '';
3872 if (Pos('omdeling.info',Url) = 0) then
3873 begin
3874 testsystem := 'TEST_';
3875 end;
3876 filnavn_output := testsystem + filnavn_output;
3877
3878 ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
3879 logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
3880 SkrivScanningLogFil(logTekst);
3881 try
3882 try
3883
3884 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3885 IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
3886 IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
3887 IdFTP1.Connect;
3888
3889 //IdFTP1.TransferType := ftASCII;
3890 try
3891 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3892 IdFTP1.ChangeDir('fraScannerprogram');
3893 IdFTP1.Put(filnavn_input, filnavn_output, True);
3894 except on e:EIdConnClosedGracefully do
3895 begin
3896 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3897 IdFTP1.Put(filnavn_input, filnavn_output, True);
3898 end;
3899 end;
3900 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3901
3902 logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
3903 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3904 SkrivScanningLogFil(logTekst);
3905
3906 finally
3907 IdFTP1.Disconnect;
3908 end;
3909
3910 except on e:exception do
3911 begin
3912 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3913 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3914 SkrivScanningLogFil(logTekst);
3915 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3916 [e.Message
3917 + CrLf + 'Host: '+IdFTP1.host
3918 + CrLf + 'Username: '+IdFTP1.Username
3919 ]
3920 );
3921 end;
3922 end;
3923 end;
3924
3925 procedure TMainForm.UploadLogfilTilDAO();
3926 const
3927 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3928
3929 var
3930 idag, imorgen : TDateTime;
3931 imorgenYmd : string;
3932 logFilnavn : string;
3933 filnavn_input : string;
3934 filnavn_output : string;
3935 buttonSelected : Integer;
3936 openDialog : TOpenDialog;
3937
3938 begin
3939 idag := Now;
3940 imorgen := IncDay(idag, 1); //adds 1 day(s)
3941 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
3942 if (FormatDateTime('hh:nn',idag) < '12:00') then
3943 begin
3944 imorgen := idag;
3945 end;
3946 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
3947 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
3948 filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
3949 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
3950
3951 buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
3952 if buttonSelected = mrOK then
3953 begin
3954 SendFilTilDao('Log', filnavn_input, filnavn_output);
3955 end
3956 else
3957 begin
3958 buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
3959 if buttonSelected = mrOK then
3960 begin
3961 // Create the open dialog object - assign to our open dialog variable
3962 openDialog := TOpenDialog.Create(self);
3963
3964 // Set up the starting directory to be the current one
3965 openDialog.InitialDir := GetCurrentDir + '\Logs';
3966
3967 // Only allow existing files to be selected
3968 openDialog.Options := [ofFileMustExist];
3969
3970 // Allow only .log files to be selected
3971 openDialog.Filter := 'Log filer|*.log';
3972
3973 // Display the open file dialog
3974 if openDialog.Execute then
3975 begin
3976 filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
3977 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
3978 SendFilTilDao('Log', filnavn_input, filnavn_output);
3979 end
3980 else
3981 begin
3982 logTekst := 'Upload af log fil annulleret';
3983 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3984 SkrivScanningLogFil(logTekst);
3985 end;
3986
3987 // Free up the dialog
3988 openDialog.Free;
3989 end
3990 else
3991 begin
3992 logTekst := 'Upload af log fil annulleret';
3993 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3994 SkrivScanningLogFil(logTekst);
3995 end;
3996 end;
3997
3998 end;
3999
4000 procedure TMainForm.UploadInifilTilDAO();
4001 const
4002 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4003
4004 var
4005 idag, imorgen : TDateTime;
4006 imorgenYmd : string;
4007 iniFilnavn : string;
4008 filnavn_input : string;
4009 filnavn_output : string;
4010 buttonSelected : Integer;
4011
4012 begin
4013 idag := Now;
4014 imorgen := IncDay(idag, 1); //adds 1 day(s)
4015 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4016 if (FormatDateTime('hh:nn',idag) < '12:00') then
4017 begin
4018 imorgen := idag;
4019 end;
4020 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4021 iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4022 filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4023 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4024
4025 buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4026 if buttonSelected = mrOK then
4027 begin
4028 SendFilTilDao('Ini', filnavn_input, filnavn_output);
4029 end
4030 else
4031 begin
4032 logTekst := 'Upload af ini fil annulleret';
4033 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4034 SkrivScanningLogFil(logTekst);
4035 end;
4036
4037 end;
4038
4039 procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4040 begin
4041 UploadLogfilTilDAO();
4042 UploadInifilTilDAO();
4043 ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4044 end;
4045
4046 procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4047 begin
4048 DownloadBladhusKontrolfil();
4049 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4050 end;
4051
4052 procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4053 const
4054 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4055
4056 begin
4057 IndlesManglendeScanninger();
4058 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4059 end;
4060
4061 procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4062 begin
4063 if (getProddag() = 'lørdag') then
4064 begin
4065 DownloadBladhusRuteskiftfil();
4066 end;
4067 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4068 end;
4069
4070
4071
4072 procedure TMainForm.IndlesManglendeScanninger();
4073 var
4074 WebSvar : String;
4075 URLStr : String;
4076 StedKode : String;
4077 Node: IXMLNode;
4078 I: Integer;
4079 stregkode, modtagernavn, modtageradresse, kommentar : string;
4080 pakketype, tjekkodestatus : String;
4081 antalLiniefelter, antalFelterFundet, linienr : Integer;
4082 //pakketyper : TStrings;
4083 pakketyper : TDictionary<String, Integer>;
4084 tmpAntal : Integer;
4085
4086 time, timeSamlet : TTimingHelper;
4087
4088
4089 antlin : Integer;
4090
4091 antlinIdag, antlinSenere : Integer;
4092
4093 //XmlFelter : TStrings;
4094 XmlFelter : TDictionary<String, Integer>;
4095
4096 begin
4097
4098
4099 XmlFelter := TDictionary<String, Integer>.Create;
4100 pakketyper := TDictionary<String, Integer>.Create;
4101
4102 linienr := 0;
4103 ListBox2.Clear;
4104 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4105 logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4106 SkrivScanningLogFil(logTekst);
4107 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4108 begin
4109 StedKode := BladhusStedKode[BladhusSted];
4110 end
4111 else
4112 begin
4113 StedKode := Sted;
4114 end;
4115
4116 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4117
4118
4119
4120 if (Scanningtype = '7') then
4121 begin
4122 URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4123 end
4124 else if (Scanningtype = '6') then
4125 begin
4126 URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4127 end
4128 else if (Scanningtype = '5') then
4129 begin
4130 URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4131 end
4132 else if (Scanningtype = '1') then
4133 begin
4134 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4135 end
4136 else if (Scanningtype = '4') then
4137 begin
4138 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4139 end
4140 else
4141 begin
4142 exit;
4143 end;
4144 // 20150310: slut
4145
4146 time := TTimingHelper.create(); //DEBUG
4147 timeSamlet := TTimingHelper.create(); //DEBUG
4148
4149 try
4150 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4151 // URLStr := string(Utf8Encode(URLStr));
4152 WebSvar := IdHTTP1.Get(URLStr);
4153 except
4154 on e:EIdConnClosedGracefully do
4155 begin
4156 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4157 WebSvar := IdHTTP1.Get(URLStr);
4158
4159
4160
4161 end;
4162 on e:exception do
4163 begin
4164 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4165 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4166 SkrivScanningLogFil(logTekst);
4167 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4168 end;
4169 end;
4170 try
4171 time.stop('HTTP Load'); //DEBUG
4172
4173 XMLDocument1.LoadFromXML(WebSvar);
4174
4175 time.stop('XML Load'); //DEBUG
4176
4177
4178
4179
4180
4181
4182 antlin := 0;
4183 antlinIdag := 0;
4184 antlinSenere := 0;
4185
4186 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4187 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4188 if Node.NodeType = ntElement then begin
4189 if Node.NodeName = 'Stregkode' then
4190 begin
4191 Inc(antlin);
4192 // 20150306: start
4193 if not VarIsNull(Node.NodeValue) then
4194 begin
4195 if (pos('(', Node.NodeValue) = 0) then
4196 begin
4197 Inc(antlinIdag);
4198 end
4199 else
4200 begin
4201 Inc(antlinSenere);
4202 end;
4203 end;
4204 // 20150306: slut
4205 end;
4206 end;
4207 if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4208 begin
4209 XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4210 XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4211 end
4212 else
4213 begin
4214 XmlFelter.Add(Node.NodeName, 1);
4215 end;
4216
4217 end;
4218 antalLiniefelter := XmlFelter.Count;
4219 antalFelterFundet := 0;
4220 SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4221 SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4222
4223 time.stop('Antal Linier');//DEBUG
4224
4225 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4226
4227 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4228 if (antlinSenere > 0) then
4229 begin
4230 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4231 end;
4232 logTekst := logTekst + '.';
4233
4234 SkrivScanningLogFil(logTekst);
4235
4236
4237 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4238 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4239 if Node.NodeType = ntElement then begin
4240 if Node.NodeName = 'Stregkode' then begin
4241 if not VarIsNull(Node.NodeValue) then
4242 stregkode := Node.NodeValue;
4243 antalFelterFundet := antalFelterFundet + 1;
4244 end
4245 else if Node.NodeName = 'ModtagerNavn' then begin
4246 if not VarIsNull(Node.NodeValue) then
4247 modtagernavn := Node.NodeValue;
4248 antalFelterFundet := antalFelterFundet + 1;
4249 end
4250 else if Node.NodeName = 'ModtagerAdresse' then begin
4251 if not VarIsNull(Node.NodeValue) then
4252 modtageradresse := Node.NodeValue;
4253 antalFelterFundet := antalFelterFundet + 1;
4254 end
4255 else if Node.NodeName = 'Kommentar' then begin
4256 if not VarIsNull(Node.NodeValue) then
4257 kommentar := Node.NodeValue;
4258 antalFelterFundet := antalFelterFundet + 1;
4259 end
4260 else if Node.NodeName = 'PakkeType' then begin
4261 if not VarIsNull(Node.NodeValue) then
4262 pakketype := Node.NodeValue;
4263 antalFelterFundet := antalFelterFundet + 1;
4264 if ( pakketyper.ContainsKey(pakketype) ) then
4265 begin
4266 pakketyper.TryGetValue(pakketype, tmpAntal);
4267 pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4268 end
4269 else
4270 pakketyper.Add(pakketype, 1);
4271 end
4272 else if Node.NodeName = 'TjekkodeStatus' then begin
4273 if not VarIsNull(Node.NodeValue) then
4274 tjekkodestatus := Node.NodeValue;
4275 antalFelterFundet := antalFelterFundet + 1;
4276 if (tjekkodestatus = '-1') then
4277 begin
4278
4279 if (pos(' ', stregkode) > 0) then
4280 begin
4281 stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4282 end
4283 else
4284 begin
4285 stregkoderMedTjekkodeArray[linienr] := stregkode;
4286 end;
4287 linienr := linienr + 1;
4288 end;
4289 end;
4290
4291
4292 if antalFelterFundet = antalLiniefelter then
4293 begin
4294 if (ScanningType = '1') then
4295 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4296 else if (ScanningType = '4') then
4297 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4298 else if (ScanningType = '5') then
4299 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4300 else
4301 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4302 antalFelterFundet := 0;
4303 tjekkodestatus := '';
4304 end;
4305 end;
4306 end;
4307
4308
4309 time.stop('Fyld Listbox2');//DEBUG
4310
4311
4312 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4313
4314
4315 for pakketype in pakketyper.Keys do
4316 begin
4317 pakketyper.TryGetValue(pakketype, tmpAntal);
4318 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4319 end;
4320
4321 // Free up the dictionary object
4322 pakketyper.Free;
4323
4324
4325
4326 // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4327 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4328 if (antlinSenere > 0) then
4329 begin
4330 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4331 end;
4332 logTekst := logTekst + '.';
4333 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4334 if (antlinSenere > 0) then
4335 begin
4336 StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4337 end
4338 else
4339 begin
4340 StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4341 end;
4342
4343 if (Scanningtype = '1') then
4344 begin
4345 //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4346 PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4347 if (antlinIdag + antlinSenere > 0) then
4348 begin
4349 PanelManglendePakker1.Visible := true;
4350 end
4351 else
4352 begin
4353 PanelManglendePakker1.Visible := false;
4354 end;
4355 end;
4356
4357 if (Scanningtype = '2') then
4358 begin
4359 PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4360 if (antlinIdag + antlinSenere > 0) then
4361 begin
4362 PanelManglendePakker2.Visible := true;
4363 end
4364 else
4365 begin
4366 PanelManglendePakker2.Visible := false;
4367 end;
4368 end;
4369
4370 if (Scanningtype = '3') then
4371 begin
4372 PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4373 if (antlinIdag + antlinSenere > 0) then
4374 begin
4375 PanelManglendePakker3.Visible := true;
4376 end
4377 else
4378 begin
4379 PanelManglendePakker3.Visible := false;
4380 end;
4381 end;
4382
4383 if (Scanningtype = '4') then
4384 begin
4385 PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4386 if (antlinIdag + antlinSenere > 0) then
4387 begin
4388 PanelManglendePakker4.Visible := true;
4389 end
4390 else
4391 begin
4392 PanelManglendePakker4.Visible := false;
4393 end;
4394 end;
4395
4396 if (Scanningtype = '5') then
4397 begin
4398 PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4399 if (antlinIdag + antlinSenere > 0) then
4400 begin
4401 PanelManglendePakker5.Visible := true;
4402 end
4403 else
4404 begin
4405 PanelManglendePakker5.Visible := false;
4406 end;
4407 end;
4408
4409 if (Scanningtype = '6') then
4410 begin
4411 PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4412 if (antlinIdag + antlinSenere > 0) then
4413 begin
4414 PanelManglendePakker6.Visible := true;
4415 end
4416 else
4417 begin
4418 PanelManglendePakker6.Visible := false;
4419 end;
4420 end;
4421
4422 except on e:exception do
4423 begin
4424 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4425 logTekst := 'Fejl i XML-format: '+e.Message;
4426 SkrivScanningLogFil(logTekst);
4427 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4428 end;
4429 end;
4430
4431 time.stop('Done');//DEBUG
4432 timeSamlet.stop('SamletTid');//DEBUG
4433
4434
4435 end;
4436
4437 procedure TMainForm.IndlesScanningLogFil();
4438 var
4439 SomeTxtFile : TextFile;
4440 buffer : string;
4441 S: string;
4442 idag, imorgen : TDateTime;
4443 imorgenYmd : string;
4444 logFilnavn : string;
4445
4446 begin
4447 idag := Now;
4448 imorgen := IncDay(idag, 1); //adds 1 day(s)
4449 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4450 if (FormatDateTime('hh:nn',idag) < '12:00') then
4451 begin
4452 imorgen := idag;
4453 end;
4454 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4455 logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
4456 if FileExists(logFilnavn) then
4457 begin
4458 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
4459 logTekst := logFilnavn+' indlæses.';
4460 SkrivScanningLogFil(logTekst);
4461 AssignFile(SomeTxtFile, logFilnavn);
4462 try
4463 Reset(SomeTxtFile);
4464 while not EOF(SomeTxtFile) do
4465 begin
4466 ReadLn(SomeTxtFile, buffer) ;
4467 S := buffer;
4468 ListBox1.Items.Insert(0, S);
4469 end;
4470 finally
4471 CloseFile(SomeTxtFile);
4472 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
4473 ListBox1.Items.Insert(0,'');
4474 ListBox1.Items.Insert(0,'');
4475 ListBox1.Items.Insert(0,'');
4476 ListBox1.Items.Insert(0,'');
4477 ListBox1.Items.Insert(0,'');
4478 ListBox1.Items.Insert(0,'');
4479 end;
4480 end;
4481 end;
4482
4483 procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4484 var
4485 SomeTxtFile : TextFile;
4486 idag, imorgen : TDateTime;
4487 imorgenYmd : string;
4488 logFilnavn : string;
4489 //error : Integer;
4490
4491 begin
4492 if (SkrivLog = '1') then
4493 begin
4494 idag := Now;
4495 imorgen := IncDay(idag, 1); //adds 1 day(s)
4496 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4497 if (FormatDateTime('hh:nn',idag) < '12:00') then
4498 begin
4499 imorgen := idag;
4500 end;
4501 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4502 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4503 // Get the current directory
4504 // dir := GetCurrentDir;
4505 // ShowMessage('Current directory = '+dir);
4506 // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
4507 // ShowMessage('logFilnavn = '+logFilnavn);
4508
4509 if not DirectoryExists('Logs') then
4510 begin
4511 CreateDir('Logs');
4512 end;
4513
4514 AssignFile(SomeTxtFile, logFilnavn);
4515 if FileExists(logFilnavn) then
4516 begin
4517 try
4518 try
4519 Append(SomeTxtFile);
4520 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4521 except on e:exception do
4522 //ShowMessageFmt('File create failed with error %d',[error]);
4523 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
4524 end;
4525 finally
4526 CloseFile(SomeTxtFile);
4527 end;
4528 end
4529 else
4530 begin
4531 try
4532 try
4533 ReWrite(SomeTxtFile);
4534 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4535 except on e:exception do
4536 // ShowMessageFmt('File create failed with error %d',[error]);
4537 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
4538 end;
4539 finally
4540 CloseFile(SomeTxtFile);
4541 end;
4542 end;
4543 end;
4544 end;
4545
4546 procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
4547 var
4548 SomeTxtFile : TextFile;
4549 buffer : string;
4550 linnr : integer;
4551 S: string;
4552 A: TStrArray;
4553 idag, imorgen : TDateTime;
4554 imorgenYmd : string;
4555
4556 begin
4557 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4558 logTekst := filnavn+' indlæses.';
4559 SkrivScanningLogFil(logTekst);
4560 SetLength(ruteHverdagArray, 1);
4561 SetLength(ruteLordagArray, 1);
4562 idag := Now;
4563 imorgen := IncDay(idag, 1); //adds 1 day(s)
4564 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4565 if (FormatDateTime('hh:nn',idag) < '12:00') then
4566 begin
4567 imorgen := idag;
4568 end;
4569 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4570 if FileExists(filnavn) then
4571 begin
4572 AssignFile(SomeTxtFile, filnavn);
4573 linnr := 0;
4574 try
4575 Reset(SomeTxtFile);
4576 while not EOF(SomeTxtFile) do
4577 begin
4578 ReadLn(SomeTxtFile, buffer) ;
4579 S := buffer;
4580 SetLength(A,0);
4581 TUtils.Explode(A, ';', S);
4582 if (length(A) < 2) then
4583 begin
4584 TUtils.Explode(A, ',', S);
4585 end;
4586 if (length(A) > 1) then
4587 begin
4588 SetLength(ruteHverdagArray, linnr+1);
4589 SetLength(ruteLordagArray, linnr+1);
4590 ruteHverdagArray[linnr] := A[0];
4591 ruteLordagArray[linnr] := A[1];
4592 linnr := linnr+1;
4593 end;
4594 end;
4595 finally
4596 //ShowMessage(IntToStr(length(A)));
4597 CloseFile(SomeTxtFile);
4598 //ShowMessage(IntToStr(length(ruteHverdagArray)));
4599 if (linnr > 0) then
4600 begin
4601 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4602 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4603 SkrivScanningLogFil(logTekst);
4604 end
4605 else
4606 begin
4607 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4608 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4609 SkrivScanningLogFil(logTekst);
4610 PlaySound(PWideChar(Config.AlarmLyd));
4611 end;
4612 end;
4613 end
4614 else
4615 begin
4616 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4617 logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4618 SkrivScanningLogFil(logTekst);
4619 PlaySound(PWideChar(Config.AlarmLyd));
4620 end;
4621 end;
4622
4623 procedure TMainForm.IndlesKontrolFil(var filnavn : string);
4624 var
4625 SomeTxtFile : TextFile;
4626 buffer : string;
4627 linnr : integer;
4628 S: string;
4629 A: TStrArray;
4630 idag, imorgen : TDateTime;
4631 imorgenYmd : string;
4632
4633 begin
4634 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4635 logTekst := filnavn+' indlæses.';
4636 SkrivScanningLogFil(logTekst);
4637 SetLength(ruteArray, 1);
4638 SetLength(korelisteArray, 1);
4639 idag := Now;
4640 imorgen := IncDay(idag, 1); //adds 1 day(s)
4641 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4642 if (FormatDateTime('hh:nn',idag) < '12:00') then
4643 begin
4644 imorgen := idag;
4645 end;
4646 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4647 if FileExists(filnavn) then
4648 begin
4649 AssignFile(SomeTxtFile, filnavn);
4650 linnr := 0;
4651 try
4652 Reset(SomeTxtFile);
4653 while not EOF(SomeTxtFile) do
4654 begin
4655 ReadLn(SomeTxtFile, buffer) ;
4656 S := buffer;
4657 SetLength(A,0);
4658 TUtils.Explode(A, ';', S);
4659 if (length(A) < 3) then
4660 begin
4661 TUtils.Explode(A, ',', S);
4662 end;
4663 if (A[0]=imorgenYmd) then
4664 begin
4665 if (length(A) > 2) then
4666 begin
4667 SetLength(ruteArray, linnr+1);
4668 SetLength(korelisteArray, linnr+1);
4669 ruteArray[linnr] := A[1];
4670 korelisteArray[linnr] := A[2];
4671 linnr := linnr+1;
4672 end;
4673 end;
4674 end;
4675 finally
4676 //ShowMessage(IntToStr(length(A)));
4677 CloseFile(SomeTxtFile);
4678 //ShowMessage(IntToStr(length(ruteArray)));
4679 if (linnr > 0) then
4680 begin
4681 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4682 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4683 SkrivScanningLogFil(logTekst);
4684 end
4685 else
4686 begin
4687 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4688 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4689 SkrivScanningLogFil(logTekst);
4690 PlaySound(PWideChar(Config.AlarmLyd));
4691 end;
4692 end;
4693 end
4694 else
4695 begin
4696 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4697 logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4698 SkrivScanningLogFil(logTekst);
4699 PlaySound(PWideChar(Config.AlarmLyd));
4700 end;
4701 end;
4702
4703 //
4704 // Bladhus ***
4705 //
4706 function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
4707 var
4708 i : Integer;
4709 svar : String;
4710
4711 begin
4712 //ShowMessage('Køreliste 1: '+korelisteArray[0]);
4713 // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
4714 // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
4715 //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
4716
4717 svar := 'Køreliste ikke i kontrolfil';
4718 case BladhusSted of
4719 01 :
4720 begin;
4721 for i := 0 to length(ruteArray)-1 do
4722 begin
4723 if (Koreliste=ruteArray[i]) then
4724 begin
4725 svar := korelisteArray[i]; // returnerer den forventede køreliste
4726 end;
4727 end;
4728 end;
4729 // 02 : begin;
4730 //ShowMessage('02') ;
4731 // end;
4732 03 : begin;
4733 for i := 0 to length(ruteArray)-1 do
4734 begin
4735 if (Koreliste=ruteArray[i]) then
4736 begin
4737 svar := korelisteArray[i]; // returnerer den forventede køreliste
4738 end;
4739 end;
4740 end;
4741 // 04 : begin;
4742 //ShowMessage('04') ;
4743 // end;
4744 else
4745 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4746 end;
4747 if (RuteNummer = 'Rutenr') then // fra printertest funktionen
4748 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4749
4750 result := svar;
4751 end;
4752
4753 procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4754 begin
4755 //ShowMessage('Ændring ikke tilladt');
4756 // Her skal komme en 'rød skærm' alarm
4757 PlaySound(PWideChar(Config.AlarmLyd));
4758 MainForm.Color := clRed;
4759
4760
4761 RuteNummerST.Caption := '';
4762 BoghandlerNavnST.Caption := '';
4763 btnNulstil.Visible := true;
4764
4765 if (strMessage <> '') then
4766 begin
4767 ListBox1.Items.Insert(0, strMessage);
4768 KommentarST.Caption := strMessage;
4769 end;
4770
4771 Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4772
4773 end;
4774
4775 function TMainForm.getProddato() : TDate;
4776 var
4777 idag, imorgen : TDateTime;
4778 imorgenYmd : string;
4779
4780 begin
4781 idag := Now;
4782 imorgen := IncDay(idag, 1); //adds 1 day(s)
4783 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4784 if (FormatDateTime('hh:nn',idag) < '12:00') then
4785 begin
4786 imorgen := idag;
4787 end;
4788 imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
4789 result := StrToDateTime(imorgenYmd);
4790 end;
4791
4792 function TMainForm.getProddag() : String;
4793 begin
4794 // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4795 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4796 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
4797 end;
4798
4799 function TMainForm.retRutenummer(rutenummer : String) : String;
4800 var
4801 i : Integer;
4802 svar : String;
4803
4804 begin
4805 svar := rutenummer;
4806 case BladhusSted of
4807 01 :
4808 begin;
4809 //ShowMessage('01') ;
4810 end;
4811 // 02 : begin;
4812 //ShowMessage('02') ;
4813 // end;
4814 03 : begin;
4815 for i := 0 to length(ruteHverdagArray)-1 do
4816 begin
4817 if (rutenummer=ruteHverdagArray[i]) then
4818 begin
4819 svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
4820 end;
4821 end;
4822 end;
4823 // 04 : begin;
4824 //ShowMessage('04') ;
4825 // end;
4826 else
4827 svar := rutenummer; // Dette svarer til at rute ikke skal ændres
4828 end;
4829 result := svar;
4830 end;
4831
4832
4833 procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4834 begin
4835 if Scanogstjekkoden1.Checked then
4836 begin
4837 chkScanTjekkode.Checked := true;
4838 end
4839 else
4840 begin
4841 chkScanTjekkode.Checked := false;
4842 end;
4843 end;
4844
4845
4846 //Nedarvet fra IParentForm
4847 procedure TMainForm.Msg( msg : string);
4848 begin
4849 ShowMessage(msg);
4850 end;
4851
4852 //Nedarvet fra IParentForm
4853 procedure TMainForm.LogMessage( msg : string);
4854 begin
4855 ListBox1.Items.Insert(0, msg);
4856 SkrivScanningLogFil(msg);
4857 end;
4858
4859
4860 //Nedarvet fra IParentForm
4861 procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4862 begin
4863
4864 PrinterstatusStaticText1.Caption := txt;
4865 if (alert) then
4866 begin
4867 PrinterstatusStaticText1.Font.Color := clBlack;
4868 PrinterstatusStaticText1.Color := MainForm.Color;
4869 PrinterstatusStaticText1.Transparent := True;
4870 end
4871 else
4872 begin
4873 PrinterstatusStaticText1.Font.Color := clRed;
4874 PrinterstatusStaticText1.Color := clWhite;
4875 PrinterstatusStaticText1.Transparent := true;
4876 end;
4877 end;
4878
4879 //Nedarvet fra IParentForm
4880 function TMainForm.GetFormObject() : TForm;
4881 begin
4882 Result := self;
4883 end;
4884
4885 //Nedarvet fra IParentForm
4886 function TMainForm.GetXMLDocument() : TXMLDocument;
4887 begin
4888 Result := XMLDocument1
4889 end;
4890
4891
4892 end.
4893

  ViewVC Help
Powered by ViewVC 1.1.20