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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20