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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20