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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20