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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3048 - (show annotations) (download)
Mon Jun 13 09:12:26 2016 UTC (7 years, 11 months ago) by torben
File size: 169109 byte(s)
Set connect and read timeout on Http client.

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

  ViewVC Help
Powered by ViewVC 1.1.20