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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20