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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20