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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20