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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20