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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20