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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20