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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20