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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20