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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3056 - (show annotations) (download)
Mon Jun 27 12:21:43 2016 UTC (7 years, 10 months ago) by torben
File size: 169386 byte(s)
minor cleanup
1 unit Main;
2
3 // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4 // ToDo: flyt flere parametre til TConfiguration
5
6 // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7 // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8 // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9 // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10 // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11
12
13 interface
14
15 uses
16 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17 Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18 IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19 Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20 IdExplicitTLSClientServerBase, IdFTP, IdException,
21 ShellApi, ClipBrd, Buttons, wininet,
22 UITypes,
23 PakkeshopLabels,
24 Utils,
25 ParentForm,
26 LabelPrint,
27 Configuration,
28 Vcl.Imaging.pngimage,
29 Generics.Collections
30
31 ;
32
33 type
34 TMainForm = class(TForm, IParentForm)
35 StregkodeST: TStaticText;
36 RuteNummerST: TStaticText;
37 BoghandlerNavnST: TStaticText;
38 IdHTTP1: TIdHTTP;
39 XMLDocument1: TXMLDocument;
40 ApplicationEvents1: TApplicationEvents;
41 chkSporgEfterKunde: TCheckBox;
42 MainMenu1: TMainMenu;
43 N1: TMenuItem;
44 menuNatXpress1: TMenuItem;
45 menuNatxpressReturDAO1: TMenuItem;
46 menuNatxpressReturfraKunde1: TMenuItem;
47 Hjlp1: TMenuItem;
48 Om1: TMenuItem;
49 Testforbindelsen1: TMenuItem;
50 Testprinter1: TMenuItem;
51 Afslut1: TMenuItem;
52 Sprgefterboghandlernummer1: TMenuItem;
53 Lukprogrammet1: TMenuItem;
54 N2: TMenuItem;
55 N3: TMenuItem;
56 radioStorPakke: TRadioButton;
57 radioLillePakke: TRadioButton;
58 N4: TMenuItem;
59 menuStorePakker: TMenuItem;
60 menuSmaaPakker: TMenuItem;
61 Panel1: TPanel;
62 Testlyd2: TMenuItem;
63 Button1: TButton;
64 Testlyd1: TMenuItem;
65 ListBox1: TListBox;
66 menuDaoDirekte1: TMenuItem;
67 BtnDownloadKontrolfil: TButton;
68 IdFTP1: TIdFTP;
69 Image1: TImage;
70 ListBox2: TListBox;
71 BtnOpdaterListen: TButton;
72 BtnUploadLogfil: TButton;
73 BtnDownloadRuteskiftFil: TButton;
74 menuPakkeshop1: TMenuItem;
75 PakkeshopText1: TStaticText;
76 btnNulstil: TButton;
77 menuPakkeshopRetur1: TMenuItem;
78 Altidprintepakkelabel1: TMenuItem;
79 chkAltidPrintLabel: TCheckBox;
80 BtnEKLoverforsel: TButton;
81 N5: TMenuItem;
82 Uploadlogfil1: TMenuItem;
83 Manual1: TMenuItem;
84 PrinterstatusStaticText1: TStaticText;
85 Timer1: TTimer;
86 chkScanTjekkode: TCheckBox;
87 Scanogstjekkoden1: TMenuItem;
88 menuAutomatiskTjekkodeStyring: TMenuItem;
89 menuAutomatiskvalg1: TMenuItem;
90 PanelValgA: TPanel;
91 PanelValg1: TPanel;
92 PanelValg2: TPanel;
93 PanelValg3: TPanel;
94 PanelValg4: TPanel;
95 PanelValg5: TPanel;
96 PanelValg6: TPanel;
97 PanelValg7: TPanel;
98 Manualgenerel1: TMenuItem;
99 StaticTextManglendePakker: TStaticText;
100 PanelManglendePakker1: TPanel;
101 PanelManglendePakker2: TPanel;
102 PanelManglendePakker3: TPanel;
103 PanelManglendePakker4: TPanel;
104 PanelManglendePakker5: TPanel;
105 PanelManglendePakker6: TPanel;
106 menuIndlevering: TMenuItem;
107 chkForstorTilDirekte: TCheckBox;
108 chkEmballageRepareret: TCheckBox;
109 KommentarST: TLabel;
110
111
112
113 function getProddato() : TDate;
114 function getProddag() : String;
115 function retRutenummer(rutenummer : String) : String;
116
117 procedure PlaySound(filename : PWideChar);
118 procedure StartScreen();
119 procedure InitScreen();
120 procedure InitBladhus();
121 procedure UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, Boghnr : String);
122 procedure InitLillePakke();
123 procedure InitStorPakke();
124 procedure InitForm(Farve,Titel,Url: String);
125 procedure FormKeyPress(Sender: TObject; var Key: Char);
126 procedure FormCreate(Sender: TObject);
127 procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
128 procedure radioStorPakkeClick(Sender: TObject);
129 procedure radioLillePakkeClick(Sender: TObject);
130 procedure chkSporgEfterKundeClick(Sender: TObject);
131 procedure menuNatXpress1Click(Sender: TObject);
132 procedure Testforbindelsen1Click(Sender: TObject);
133 procedure Testprinter1Click(Sender: TObject);
134 procedure Om1Click(Sender: TObject);
135 procedure Lukprogrammet1Click(Sender: TObject);
136 procedure Sprgefterboghandlernummer1Click(Sender: TObject);
137 procedure menuNatxpressReturDAO1Click(Sender: TObject);
138 procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
139 procedure menuStorePakkerClick(Sender: TObject);
140 procedure menuSmaaPakkerClick(Sender: TObject);
141 procedure Testlyd1Click(Sender: TObject);
142 procedure Testlyd2Click(Sender: TObject);
143 procedure Button1Click(Sender: TObject);
144 procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
145 procedure menuDaoDirekte1Click(Sender: TObject);
146 procedure BtnDownloadKontrolfilClick(Sender: TObject);
147 procedure BtnOpdaterListenClick(Sender: TObject);
148 procedure DownloadBladhusRuteskiftfil();
149 procedure DownloadBladhusKontrolfil();
150 procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
151 procedure UploadLogfilTilDAO();
152 procedure UploadInifilTilDAO();
153 procedure SletStregkodelinieFraListboks2(StregKode : String);
154 procedure FormDestroy(Sender: TObject);
155 procedure BtnUploadLogfilClick(Sender: TObject);
156 procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
157 procedure menuPakkeshop1Click(Sender: TObject);
158 procedure btnNulstilClick(Sender: TObject);
159 procedure menuPakkeshopRetur1Click(Sender: TObject);
160 procedure InitNatxpresslevering();
161 procedure InitReturFraDao();
162 procedure InitReturFraKunde();
163 procedure InitDirektelevering();
164 procedure InitPakkeshoplevering();
165 procedure InitReturFraPakkeshop();
166 procedure InitIndleveringskode();
167
168 procedure Altidprintepakkelabel1Click(Sender: TObject);
169 procedure chkAltidPrintLabelClick(Sender: TObject);
170 procedure BtnEKLoverforselClick(Sender: TObject);
171 procedure Uploadlogfil1Click(Sender: TObject);
172 procedure Manual1Click(Sender: TObject);
173 procedure Timer1Timer(Sender: TObject);
174 procedure Scanogstjekkoden1Click(Sender: TObject);
175 procedure chkScanTjekkodeClick(Sender: TObject);
176 procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
177 procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
178 procedure menuAutomatiskvalg1Click(Sender: TObject);
179 procedure PanelValgAClick(Sender: TObject);
180 procedure PanelValg1Click(Sender: TObject);
181 procedure PanelValg2Click(Sender: TObject);
182 procedure PanelValg3Click(Sender: TObject);
183 procedure PanelValg4Click(Sender: TObject);
184 procedure PanelValg5Click(Sender: TObject);
185 procedure PanelValg6Click(Sender: TObject);
186 procedure PanelValg7Click(Sender: TObject);
187
188 procedure NulstilAutomatiskValg();
189 procedure SletLogfiler(Path: string; FileList: TStrings);
190 procedure Manualgenerel1Click(Sender: TObject);
191 procedure TjekkerUrls();
192 procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
193
194 procedure menuIndleveringClick(Sender: TObject);
195
196
197
198 //Nedarvet fra IParentForm
199 procedure Msg( msg : string);
200 procedure LogMessage( msg : string);
201 procedure SetPrinterstatusText( txt: string; alert: boolean);
202 function GetFormObject() : TForm;
203
204
205
206 private
207 SpecialVersionSted, SpecialVersionScanningtype: String; // Bruges når programmet skal bruges udenfor DAO scanningssteder
208 Stregkode : String;
209 SkrivLog : String;
210 Sted : String;
211 StedNavn : String;
212 Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
213 UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
214 UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
215
216 UrlEKLoverforselPakkeshop : String;
217
218 UrlFindPakketype, UrlSendPrograminfo: String;
219 Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
220 ScanTjekkode : String;
221 ScanTjekkodeAutomatik : string;
222
223 Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
224 FarveIndlevering : String;
225
226 Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
227 TitelIndlevering : String;
228
229 AlarmLyd : String;
230 ScannetOkLyd : String;
231 ScannetOkStorLyd : String;
232
233 ScannetOkTilTjekkodeLyd : String;
234
235 PrinterNavn : String;
236 TjekPrinter : String;
237
238 Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
239 BladhusSted : Integer;
240 BladhusStedKode : Array of string;
241 BladhusStedNavn : Array of string;
242 BladhusRuteskiftfil_server : String;
243 BladhusRuteskiftfil_lokal : String;
244 BladhusKontrolfil_server : String;
245 BladhusKontrolfil_lokal : String;
246 logTekst : string;
247 PakkeshopStregkode, PakkeshopTjekkode : String;
248 BoghandlerStregkode, BoghandlerTjekkode : String;
249 TjekUrls : String;
250 Config : TConfiguration;
251
252
253 LabelPrint: TLabelPrint;
254
255 procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
256
257 procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
258 procedure CheckCode();
259 procedure IndlesManglendeScanninger();
260 procedure IndlesRuteskiftFil(var filnavn : string);
261 procedure IndlesKontrolFil(var filnavn : string);
262 procedure IndlesScanningLogFil();
263 procedure SkrivScanningLogFil(var tekst : string);
264 function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
265 procedure VisAlarmSkaerm(strMessage: string);
266 function InjectURL(Url : String) : String;
267
268 public
269 { Public declarations }
270 end;
271
272
273 var
274 MainForm: TMainForm;
275
276 // Globale variabler
277 ruteHverdagArray : Array of String;
278 ruteLordagArray : Array of String;
279 ruteArray : Array of String;
280 korelisteArray : Array of String;
281 stregkoderMedTjekkodeArray : Array of String;
282
283 implementation
284 {$R *.dfm}
285
286
287 //FormCreate kaldes før InitForm
288
289 procedure TMainForm.InitForm(Farve,Titel,Url : String);
290 begin
291
292 IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
293 IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
294
295
296
297
298 StaticTextManglendePakker.Caption := '';
299
300
301 PanelValg1.Color := clBtnFace;
302 if PanelValg1.Enabled = true then
303 begin
304 PanelValg1.Font.Color := clWindowText;
305 end;
306
307 PanelValg2.Color := clBtnFace;
308 if PanelValg2.Enabled = true then
309 begin
310 PanelValg2.Font.Color := clWindowText;
311 end;
312
313 PanelValg3.Color := clBtnFace;
314 if PanelValg3.Enabled = true then
315 begin
316 PanelValg3.Font.Color := clWindowText;
317 end;
318
319 PanelValg4.Color := clBtnFace;
320 if PanelValg4.Enabled = true then
321 begin
322 PanelValg4.Font.Color := clWindowText;
323 end;
324
325 PanelValg5.Color := clBtnFace;
326 if PanelValg5.Enabled = true then
327 begin
328 PanelValg5.Font.Color := clWindowText;
329 end;
330
331 PanelValg6.Color := clBtnFace;
332 if PanelValg6.Enabled = true then
333 begin
334 PanelValg6.Font.Color := clWindowText;
335 end;
336
337 PanelValg7.Color := clBtnFace;
338 if PanelValg7.Enabled = true then
339 begin
340 PanelValg7.Font.Color := clWindowText;
341 end;
342
343 BtnOpdaterListen.Enabled := false;
344
345 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
346 begin
347 if (StedNavn = '') then
348 begin
349 Titel := BladhusStedNavn[BladhusSted]+': '+Titel;
350 end
351 else
352 begin
353 Titel := StedNavn+': '+Titel;
354 end;
355 //Farve := 'D8D8D8'; // her kan vi evt. overrule ini fil
356 end
357 else
358 begin
359 //ShowMessage(Sted);
360 if (StedNavn = '') then
361 begin
362 if (Sted = 'B') then
363 begin StedNavn := 'Brabrand: '; end
364 else if (Sted = 'E') then
365 begin StedNavn := 'Erritsø: '; end
366 else if (Sted = 'AAL') then
367 begin StedNavn := 'Aalborg: '; end
368 else if (Sted = 'BR') then
369 begin StedNavn := 'Brøndby: '; end
370 else if (Sted = 'BK') then
371 begin StedNavn := 'Bladkompagniet/ISV: '; end
372 else if (Sted = 'TK') then
373 begin StedNavn := 'BK/Trykkompagniet: '; end
374 else if (Sted = 'DBK') then
375 begin StedNavn := 'DBK/Køge: '; end
376 else if (Sted = '1') then
377 begin StedNavn := 'Ålborg: '; end
378 else if (Sted = '2') then
379 begin StedNavn := 'Herning: '; end
380 else if (Sted = '3') then
381 begin StedNavn := 'Hinnerup: '; end
382 else if (Sted = '4') then
383 begin StedNavn := 'Vejle: '; end
384 else
385 begin StedNavn := Sted+': '; end
386 end
387 else
388 begin
389 if (RightStr(StedNavn,2) <> ': ') then
390 begin
391 StedNavn := StedNavn + ': ';
392 end;
393 end;
394 Titel := Stednavn + Titel;
395 end;
396
397 StartScreen();
398 MainForm.Caption := Titel;
399 MainForm.Color := TUtils.HexToTColor(Farve);
400 MainForm.Farve := Farve;
401 MainForm.Titel := Titel;
402 MainForm.Url := Url;
403
404 if PrinterstatusStaticText1.Color <> clWhite then // Hvis der IKKE er en alarm skal vi tilpasse baggrundsfarven her
405 begin
406 PrinterstatusStaticText1.Color := MainForm.Color;
407 end;
408
409 if menuPakkeshop1.Checked or menuNatXpress1.Checked then
410 PakkeshopText1.Visible := true
411 else
412 PakkeshopText1.Visible := false;
413
414 chkScanTjekkode.Checked := false;
415 chkScanTjekkode.Enabled := false;
416 Scanogstjekkoden1.Enabled := false;
417
418 if (Scanningtype = '1') or (Scanningtype = '5') then
419 begin
420 if (ScanTjekkode = '1') then
421 begin
422 chkScanTjekkode.Checked := true;
423 chkScanTjekkode.Enabled := true;
424 Scanogstjekkoden1.Enabled := true;
425 end
426 else
427 begin
428 chkScanTjekkode.Checked := false;
429 chkScanTjekkode.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
430 Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
431 end;
432 end;
433
434 if menuAutomatiskTjekkodeStyring.Checked then
435 begin
436 chkScanTjekkode.Enabled := false;
437 Scanogstjekkoden1.Enabled := false;
438 end;
439
440 logTekst := 'Overskrift: '+Titel;
441 SkrivScanningLogFil(logTekst);
442
443 if SpecialVersionSted = '' then
444 begin
445 logTekst := 'Sted: '+Sted+', Stednavn: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase]);
446 SkrivScanningLogFil(logTekst);
447 end;
448
449 if SpecialVersionSted <> '' then
450 begin
451 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
452 begin
453 if Stednavn = '' then
454 begin
455 logTekst := 'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
456 end
457 else
458 begin
459 logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
460 end;
461 SkrivScanningLogFil(logTekst);
462 end
463 else
464 begin
465 logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
466 SkrivScanningLogFil(logTekst);
467 end;
468 end;
469
470
471 end;
472
473 procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
474 begin
475
476 if Altidprintepakkelabel1.Checked then
477 begin
478 chkAltidPrintLabel.Checked := true;
479 end
480 else
481 begin
482 chkAltidPrintLabel.Checked := false;
483 end;
484
485 end;
486
487 procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
488 begin
489 StregkodeST.Caption := Stregkode;
490 end;
491
492 procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
493 begin
494 if menuAutomatiskTjekkodeStyring.Checked then
495 begin
496 chkScanTjekkode.Enabled := false;
497 Scanogstjekkoden1.Enabled := false;
498 end
499 else
500 begin
501 chkScanTjekkode.Enabled := true;
502 Scanogstjekkoden1.Enabled := true;
503 end;
504
505 end;
506
507 procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
508 begin
509 // Skal ikke toggle men bare sætte funktionen on
510 // Fravælges ved at vælge en scanningstype
511 menuAutomatiskvalg1.Checked := true;
512 PanelValgA.Color := clGreen;
513 PanelValgA.Font.Color := clWhite;
514 end;
515
516 function TMainForm.InjectURL(Url : String) : String;
517 begin
518
519 Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
520 Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
521 Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
522
523 Result := Url;
524 end;
525
526 //InitForm kaldes før FormCreate
527 procedure TMainForm.FormCreate(Sender: TObject);
528 const
529 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
530 var
531 gemScanningtype : String;
532
533 begin
534
535
536 // Initierer nogle variabler
537 BladhusSted := 00;
538 Application.ShowHint := True;
539 PrinterstatusStaticText1.Caption := '';
540 PrinterstatusStaticText1.Color := MainForm.Color;
541
542 btnNulstil.BringToFront;
543
544 TUtils.RoundCornerOf(PanelManglendePakker1);
545 TUtils.RoundCornerOf(PanelManglendePakker2);
546 TUtils.RoundCornerOf(PanelManglendePakker3);
547 TUtils.RoundCornerOf(PanelManglendePakker4);
548 TUtils.RoundCornerOf(PanelManglendePakker5);
549 TUtils.RoundCornerOf(PanelManglendePakker6);
550
551
552 // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
553 if DirectoryExists('Docs') then
554 begin
555 Manualgenerel1.Enabled := true;
556 Manual1.Enabled := true;
557 end;
558
559 // Sætter lige en default panel størrelse
560 MainForm.ClientWidth := 1000;
561 MainForm.ClientHeight := 750;
562
563 Config := TConfiguration.Create();
564 Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ); //ToDo: clean up duplicate ini ref
565 Config.Sted := Sted;
566
567 // Læser parametre fra ini filen
568 with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
569 try
570
571
572 SkrivLog := ReadString('Settings','SkrivLog','0');
573 Sted := ReadString('Settings','Sted','');
574 StedNavn := ReadString('Settings','Stednavn','');
575
576 UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
577 UrlFindPakketype := InjectURL(UrlFindPakketype);
578
579 UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
580 UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
581
582 UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
583 UrlNormal := InjectURL(UrlNormal);
584
585 UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
586 UrlReturDAO := InjectURL(UrlReturDAO);
587
588 UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
589 UrlReturBoghandler := InjectURL(UrlReturBoghandler);
590
591 UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
592 UrlBudlevering := InjectURL(UrlBudlevering);
593
594 UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
595 UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
596
597 UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
598 UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
599
600 UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
601 UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
602
603 UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
604 UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
605
606 UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
607 UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
608
609 UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
610 UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
611
612 UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
613 UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
614
615 UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
616 UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
617
618 UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
619 UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
620
621 URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
622 URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
623
624
625
626 FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
627 TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
628 FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
629 TitelReturDAO := ReadString('Settings','TitelReturDAO','Returforsendelse fra DAO');
630 FarveReturBoghandler := ReadString('Settings','FarveReturBoghandler','F2F5A9');
631 TitelReturBoghandler := ReadString('Settings','TitelReturBoghandler','Returforsendelse fra boghandler');
632 FarveBudlevering := ReadString('Settings','FarveBudlevering','2E9AFE');
633 TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
634 FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
635 TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
636
637 FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
638 TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
639
640 FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
641 TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
642
643
644 SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
645 ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
646 ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
647 Scanningtype := ReadString('Settings','Scanningtype','A');
648 Pakketype := ReadString('Settings','Pakketype','0');
649 TestFunktionen := ReadString('Settings','TestFunktion','0');
650 AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
651 ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
652 ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
653
654 ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
655
656 PrinterNavn := ReadString('Settings','PrinterNavn','');
657 TjekPrinter := ReadString('Settings','TjekPrinter','1');
658 TjekUrls := ReadString('Settings','TjekUrls','2');
659
660 if (SkrivLog = '1') then
661 begin
662 logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
663 try
664 SkrivScanningLogFil(logTekst);
665 Uploadlogfil1.Enabled := true;
666 BtnUploadLogfil.Enabled := true;
667 logTekst := 'Programmet er installeret som: '+ParamStr(0);
668 SkrivScanningLogFil(logTekst);
669 // Oprydning i gamle logfiler
670 SletLogfiler('Logs\', ListBox1.Items);
671 except
672 SkrivLog := '0';
673 end;
674 end;
675
676 if Scanningtype = 'A' then
677 begin
678 menuAutomatiskvalg1.Checked := true;
679 Scanningtype := '1';
680 PanelValgA.Color := clGreen;
681 PanelValgA.Font.Color := clWhite;
682 end;
683
684
685
686 if SporgEfterBoghandler = '1' then
687 begin
688 chkSporgEfterKunde.Checked := true;
689 Sprgefterboghandlernummer1.Checked := true;
690 end
691 else
692 begin
693 chkSporgEfterKunde.Checked := false;
694 Sprgefterboghandlernummer1.Checked := false;
695 end;
696
697 if ScanTjekkode = '1' then
698 begin
699 chkScanTjekkode.Checked := true;
700 Scanogstjekkoden1.Checked := true;
701 end
702 else
703 begin
704 chkScanTjekkode.Checked := false;
705 Scanogstjekkoden1.Checked := false;
706 end;
707
708 if ScanTjekkodeAutomatik = '1' then
709 begin
710 menuAutomatiskTjekkodeStyring.Checked := true;
711 chkScanTjekkode.Enabled := false;
712 Scanogstjekkoden1.Enabled := false;
713 end;
714
715 //
716 // specialversioner
717 //
718 // Hvis programmet skal bruges af andre distributører/scanningssteder end DAO
719 // skal vi ikke bruge hele ini-filen.
720 // Vi laver derfor en speciel opsætning her.
721
722 SpecialVersionSted := ''; // Tom indikerer normal version hvor scanningtype er angivet i ini filen
723 SpecialVersionScanningtype := 'A'; // 'Automatisk valg'
724 // bruges sammen med nedenstående SpecialVersionSted for specialversioner af programmet
725
726 // Ved compilering af en specialversion skal efterfølgende
727 // 2 felter sættes efter behov (SpecialVersionSted og SpecialVersionScanningtype).
728 // Det er p.t. ikke nødvendigt at ændre andre steder...
729
730 // *************************** //
731 //SpecialVersionSted := 'BK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
732 //SpecialVersionSted := 'DBK'; // bruges sammen med ovenstående SpecialVersionScanningtype 'Automatisk valg')
733 //SpecialVersionSted := 'NS'; // NS - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
734 //SpecialVersionSted := 'FD'; // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
735 // *************************** //
736
737 {$IfDef STED_BK}
738 SpecialVersionSted := 'BK';
739 {$EndIf}
740 {$IfDef STED_TK}
741 SpecialVersionSted := 'TK';// BK-Trykkompagniet
742 {$EndIf}
743 {$IfDef STED_DBK}
744 SpecialVersionSted := 'DBK';
745 {$EndIf}
746 {$IfDef STED_FD}
747 SpecialVersionSted := 'FD';
748 {$EndIf}
749 {$IfDef STED_NS}
750 SpecialVersionSted := 'NS';
751 {$EndIf}
752
753 //SpecialVersionSted := '01'; // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
754 //SpecialVersionSted := '02'; // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
755 //SpecialVersionSted := '03'; // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
756 //SpecialVersionSted := '04'; // DBK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted DBK)
757
758 //SpecialVersionScanningtype := '1'; // NAT X-PRESS (BRUGES IKKE)
759 //SpecialVersionScanningtype := '2'; // Retur fra DAO (BRUGES IKKE)
760 //SpecialVersionScanningtype := '3'; // Retur fra Kunde (BRUGES IKKE)
761 //SpecialVersionScanningtype := '4'; // DIREKTE
762 //SpecialVersionScanningtype := '5'; // PAKKESHOP (BRUGES IKKE)
763 //SpecialVersionScanningtype := '6'; // Retur fra pakkeshop (BRUGES IKKE)
764
765 // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
766 // ændrer vi Sted og Scanningtype her:
767
768 if SpecialVersionSted = 'NS' then
769 begin
770 //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
771 //SpecialVersionScanningtype := '4';
772
773 //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
774 Sted := SpecialVersionSted;
775 // her skal vi også disable de knapper BK ikke kan bruge
776 PanelValg2.Enabled := false;
777 PanelValg2.Font.Color := clInactiveCaption;
778 PanelValg3.Enabled := false;
779 PanelValg3.Font.Color := clInactiveCaption;
780 //PanelValg6.Enabled := false;
781 //PanelValg6.Font.Color := clInactiveCaption;
782
783 // her skal vi også disable de menupunkter FD ikke kan bruge
784 menuNatxpressReturDAO1.Enabled := false;
785 menuNatxpressReturfraKunde1.Enabled := false;
786
787 //Returpakkerfrapakkeshop1.Enabled := false;
788 end;
789
790 if SpecialVersionSted = 'FD' then
791 begin
792 //SpecialVersionSted := '03'; //fra før at FD overtog scanning
793 //SpecialVersionScanningtype := '4';
794
795
796 //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
797 Sted := SpecialVersionSted;
798 // her skal vi også disable de knapper BK ikke kan bruge
799 PanelValg2.Enabled := false;
800 PanelValg2.Font.Color := clInactiveCaption;
801 PanelValg3.Enabled := false;
802 PanelValg3.Font.Color := clInactiveCaption;
803 //PanelValg6.Enabled := false;
804 //PanelValg6.Font.Color := clInactiveCaption;
805
806 // her skal vi også disable de menupunkter FD ikke kan bruge
807 menuNatxpressReturDAO1.Enabled := false;
808 menuNatxpressReturfraKunde1.Enabled := false;
809
810 //Returpakkerfrapakkeshop1.Enabled := false;
811
812 end;
813
814 if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
815 begin
816 //FarveNormal := 'A9F5A9'; // her kan vi evt. overrule ini fil
817 Sted := SpecialVersionSted;
818 // her skal vi også disable de knapper BK ikke kan bruge
819 PanelValg2.Enabled := false;
820 PanelValg2.Font.Color := clInactiveCaption;
821 PanelValg3.Enabled := false;
822 PanelValg3.Font.Color := clInactiveCaption;
823 //PanelValg6.Enabled := false;
824 //PanelValg6.Font.Color := clInactiveCaption;
825
826 // her skal vi også disable de menupunkter BK ikke kan bruge
827 menuNatxpressReturDAO1.Enabled := false;
828 menuNatxpressReturfraKunde1.Enabled := false;
829
830 //Returpakkerfrapakkeshop1.Enabled := false;
831
832 if SpecialVersionScanningtype = 'A' then
833 begin
834 Scanningtype := '1';
835 end
836 else
837 begin
838 Scanningtype := SpecialVersionScanningtype;
839 end;
840 end;
841
842 if SpecialVersionSted = 'DBK' then
843 begin
844 //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 menuNatxpressReturDAO1.Enabled := false;
859 menuNatxpressReturfraKunde1.Enabled := false;
860
861 menuPakkeshop1.Enabled := false;
862 menuPakkeshopRetur1.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 menuAutomatiskvalg1.Enabled := false;
898
899 menuNatXpress1.Enabled := false;
900 menuNatxpressReturDAO1.Enabled := false;
901 menuNatxpressReturfraKunde1.Enabled := false;
902 menuDaoDirekte1.Enabled := false;
903 menuPakkeshop1.Enabled := false;
904 menuPakkeshopRetur1.Enabled := false;
905 if SpecialVersionScanningtype = 'A' then
906 begin
907 Scanningtype := '4';
908 menuDaoDirekte1.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 menuAutomatiskvalg1.Checked := false;
918 PanelValgA.Color := clBtnFace;
919 if Scanningtype = '1' then
920 begin
921 menuNatXpress1.Enabled := true;
922 PanelValg1.Enabled := true;
923 PanelValg1.Font.Color := clWindowText;
924 end;
925 if Scanningtype = '2' then
926 begin
927 menuNatxpressReturDAO1.Enabled := true;
928 PanelValg2.Enabled := true;
929 PanelValg2.Font.Color := clWindowText;
930 end;
931 if Scanningtype = '3' then
932 begin
933 menuNatxpressReturfraKunde1.Enabled := true;
934 PanelValg3.Enabled := true;
935 PanelValg3.Font.Color := clWindowText;
936 end;
937 if Scanningtype = '4' then
938 begin
939 menuDaoDirekte1.Enabled := true;
940 PanelValg4.Enabled := true;
941 PanelValg4.Font.Color := clWindowText;
942 end;
943 if Scanningtype = '5' then
944 begin
945 menuPakkeshop1.Enabled := true;
946 PanelValg5.Enabled := true;
947 PanelValg5.Font.Color := clWindowText;
948 end;
949 if Scanningtype = '6' then
950 begin
951 menuPakkeshopRetur1.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 menuStorePakker.Checked := true;
1033 radioStorPakke.Checked := true;
1034 end
1035 else
1036 begin
1037 menuSmaaPakker.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 menuNatxpressReturDAO1.Visible := false;
1098 menuNatxpressReturfraKunde1.Visible := false;
1099 menuDaoDirekte1.Visible := false;
1100 menuStorePakker.Visible := false;
1101 menuSmaaPakker.Visible := false;
1102 Testprinter1.Visible := false;
1103 menuPakkeshop1.Visible := false;
1104 menuPakkeshopRetur1.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 (menuAutomatiskvalg1.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 menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1559 begin
1560 VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1561
1562 exit;
1563 end;
1564
1565 if not menuAutomatiskvalg1.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 menuAutomatiskTjekkodeStyring.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 menuNatXpress1.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 (menuPakkeshop1.Checked or menuNatXpress1.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 menuPakkeshop1.Checked or menuNatXpress1.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 (menuPakkeshop1.Checked) then
1640 MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1641 if (menuNatXpress1.Checked) then
1642 MainForm.Color := TUtils.HexToTColor(FarveNormal);
1643 btnNulstil.Visible := false;
1644 end
1645 else
1646 begin
1647 if (menuPakkeshop1.Checked) then
1648 VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1649 if (menuNatXpress1.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 menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1662 begin
1663
1664 if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1665 StregKode := PakkeshopStregkode;
1666 if menuNatXpress1.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 (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.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 ( menuNatXpress1.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 menuStorePakker.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 (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1715 begin
1716 MainForm.Color := TUtils.HexToTColor(Farve);
1717 if menuStorePakker.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 (menuDaoDirekte1.Checked) then
1743 begin
1744 if menuStorePakker.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 menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.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 wrkAntalSenere := 0;//initial Value
1844
1845 // Ajourføring af tæller for manglende pakker (scanninger)
1846 wrkAntal := StaticTextManglendePakker.Caption;
1847 if (pos('/', wrkAntal) > 0) then // både pakker idag og senere
1848 begin
1849 wrkAntal := wrkAntal + '/'; // tilføjer '/' sidst i feltet af hensyn til split funktionen
1850 wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1851 // ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1852 // ShowMessage(SPLIT('data/another/','/',3));
1853 // ShowMessage(SPLIT('data/another','/',3));
1854 wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1855 end
1856 else // kun idag
1857 begin
1858 wrkAntalIdag := StrToInt(wrkAntal);
1859 end;
1860 if pos(StregKode + ' (',ListBox2.items[i]) <> 0 then // pakke til senere levering
1861 begin
1862 //ShowMessage('Senere ' + IntToStr(wrkAntalIdag) + ' ' + IntToStr(wrkAntalSenere));
1863 wrkAntalSenere := wrkAntalSenere - 1;
1864 // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1865 end
1866 else
1867 begin
1868 // ShowMessage('Idag');
1869 wrkAntalIdag := wrkAntalIdag - 1;
1870 // StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1871 end;
1872 if (wrkAntalSenere > 0) then
1873 begin
1874 StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag) + '/' + IntToStr(wrkAntalSenere);
1875 end
1876 else
1877 begin
1878 StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1879 end;
1880
1881 if (Scanningtype = '1') then
1882 begin
1883 PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1884 if (wrkAntalIdag + wrkAntalSenere > 0) then
1885 begin
1886 PanelManglendePakker1.Visible := true;
1887 end
1888 else
1889 begin
1890 PanelManglendePakker1.Visible := false;
1891 end;
1892 end;
1893
1894 if (Scanningtype = '2') then
1895 begin
1896 PanelManglendePakker2.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1897 if (wrkAntalIdag + wrkAntalSenere > 0) then
1898 begin
1899 PanelManglendePakker2.Visible := true;
1900 end
1901 else
1902 begin
1903 PanelManglendePakker2.Visible := false;
1904 end;
1905 end;
1906
1907 if (Scanningtype = '3') then
1908 begin
1909 PanelManglendePakker3.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1910 if (wrkAntalIdag + wrkAntalSenere > 0) then
1911 begin
1912 PanelManglendePakker3.Visible := true;
1913 end
1914 else
1915 begin
1916 PanelManglendePakker3.Visible := false;
1917 end;
1918 end;
1919
1920 if (Scanningtype = '4') then
1921 begin
1922 PanelManglendePakker4.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1923 if (wrkAntalIdag + wrkAntalSenere > 0) then
1924 begin
1925 PanelManglendePakker4.Visible := true;
1926 end
1927 else
1928 begin
1929 PanelManglendePakker4.Visible := false;
1930 end;
1931 end;
1932
1933 if (Scanningtype = '5') then
1934 begin
1935 PanelManglendePakker5.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1936 if (wrkAntalIdag + wrkAntalSenere > 0) then
1937 begin
1938 PanelManglendePakker5.Visible := true;
1939 end
1940 else
1941 begin
1942 PanelManglendePakker5.Visible := false;
1943 end;
1944 end;
1945
1946 if (Scanningtype = '6') then
1947 begin
1948 PanelManglendePakker6.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
1949 if (wrkAntalIdag + wrkAntalSenere > 0) then
1950 begin
1951 PanelManglendePakker6.Visible := true;
1952 end
1953 else
1954 begin
1955 PanelManglendePakker6.Visible := false;
1956 end;
1957 end;
1958
1959 ListBox2.items.delete(i);
1960 end;
1961 end;
1962 end;
1963
1964 procedure TMainForm.StartScreen();
1965 begin
1966 if Org_RuteNummerST = '' then
1967 Org_RuteNummerST := RuteNummerST.Caption;
1968 if Org_BoghandlerNavnST = '' then
1969 Org_BoghandlerNavnST := BoghandlerNavnST.Caption;
1970 if Org_KommentarST = '' then
1971 Org_KommentarST := KommentarST.Caption;
1972 RuteNummerST.Caption := Org_RuteNummerST;
1973 BoghandlerNavnST.Caption := Org_BoghandlerNavnST;
1974 KommentarST.Caption := Org_KommentarST;
1975 end;
1976
1977 procedure TMainForm.InitScreen();
1978 begin
1979 RuteNummerST.Caption := '';
1980 KommentarST.Caption := '';
1981 BoghandlerNavnST.Caption := '';
1982 end;
1983
1984 procedure TMainForm.InitBladhus();
1985
1986 begin
1987 Altidprintepakkelabel1.Enabled := false;
1988 menuNatXpress1.Visible := false;
1989 menuNatxpressReturDAO1.Visible := false;
1990 menuNatxpressReturfraKunde1.Visible := false;
1991 Sprgefterboghandlernummer1.Enabled := false;
1992 ListBox1.Visible := true;
1993 // TestFunktionen := '1';
1994
1995 if menuDaoDirekte1.Checked then
1996 begin
1997 IndlesScanningLogFil();
1998 end;
1999
2000 //
2001 // Bladhus ***
2002 //
2003 case BladhusSted of
2004 01 :
2005 begin; // NS
2006 Testprinter1.Visible := true;
2007 BtnDownloadKontrolfil.Enabled := true;
2008 BtnOpdaterListen.Enabled := true;
2009 IdFTP1.Passive := true;
2010 IdFTP1.PassiveUseControlHost := true;
2011 BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
2012 BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2013 DownloadBladhusKontrolfil();
2014 IndlesManglendeScanninger();
2015 end;
2016 02 :
2017 begin; // BK
2018 Testprinter1.Visible := true;
2019 menuSmaaPakker.Enabled := true;
2020 menuStorePakker.Enabled := true;
2021 radioStorPakke.Enabled := true;
2022 radioLillePakke.Enabled := true;
2023 BtnDownloadKontrolfil.Enabled := false; // kontrolfil bruges ikke her
2024 BtnOpdaterListen.Enabled := true;
2025 IdFTP1.Passive := true;
2026 IdFTP1.PassiveUseControlHost := true;
2027 IndlesManglendeScanninger();
2028 end;
2029 03 :
2030 begin; // FD
2031 Testprinter1.Visible := true;
2032 if (getProddag() = 'lørdag') then
2033 begin
2034 BtnDownloadRuteskiftFil.Visible := false;
2035 end
2036 else
2037 begin
2038 BtnDownloadRuteskiftFil.Visible := false;
2039 end;
2040 BtnDownloadKontrolfil.Enabled := true;
2041 BtnOpdaterListen.Enabled := true;
2042 IdFTP1.Passive := true;
2043 IdFTP1.PassiveUseControlHost := true;
2044 BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
2045 BladhusRuteskiftfil_lokal := 'RuteSkift.txt';
2046 if (getProddag() = 'lørdag') then
2047 begin
2048 //DownloadBladhusRuteskiftfil(); // Skal ikke bruges endnu
2049 end;
2050 BladhusKontrolfil_server := 'frafd/RuteKontrol.txt';
2051 BladhusKontrolfil_lokal := 'RuteKontrol.txt';
2052 DownloadBladhusKontrolfil();
2053 IndlesManglendeScanninger();
2054 end;
2055 04 : begin; // DBK
2056 Testprinter1.Visible := true;
2057 menuSmaaPakker.Enabled := true;
2058 menuStorePakker.Enabled := true;
2059 radioStorPakke.Enabled := true;
2060 radioLillePakke.Enabled := true;
2061 BtnDownloadKontrolfil.Enabled := false; // kontrolfil bruges ikke her
2062 BtnOpdaterListen.Enabled := true;
2063 IdFTP1.Passive := true;
2064 IdFTP1.PassiveUseControlHost := true;
2065 end;
2066 else
2067 //ShowMessage('Ukendt Bladhus sted ???') ;
2068 end;
2069
2070 end;
2071
2072 procedure TMainForm.HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
2073 var
2074 WebSvar : String;
2075 URLStr : String;
2076 pakkestorrelse : String;
2077 PrintNyLabelInteger : Integer;
2078
2079 PakkeshopLabel: TPakkeshopLabel;
2080 begin
2081 if radioStorPakke.Checked then
2082 begin
2083 pakkestorrelse := 'Stor';
2084 end;
2085 if radioLillePakke.Checked then
2086 begin
2087 pakkestorrelse := 'Lille';
2088 end;
2089
2090
2091 if menuNatXpress1.Checked then
2092 begin
2093 if (BoghandlerTjekkode = '') then
2094 begin
2095 BoghandlerTjekkode := '-1';
2096 end;
2097 URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2098 end
2099 else if menuNatxpressReturDAO1.Checked then
2100 begin
2101 URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2102 end
2103 else if menuNatxpressReturfraKunde1.Checked then
2104 begin
2105 URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2106 end
2107 else if menuDaoDirekte1.Checked then
2108 begin
2109 URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2110 end
2111 else if menuPakkeshop1.Checked then
2112 begin
2113 URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2114 end
2115 else if menuPakkeshopRetur1.Checked then
2116 begin
2117 URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2118 end
2119 else if menuIndlevering.Checked then
2120 begin
2121 URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2122 end
2123 else
2124 begin
2125 exit;
2126 end;
2127
2128 if chkForstorTilDirekte.Checked then // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2129 begin
2130 URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2131 end;
2132
2133 try
2134 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2135 WebSvar := IdHTTP1.Get(URLStr);
2136 //IdHTTP1.Disconnect();
2137 except on e:EIdConnClosedGracefully do
2138 begin
2139 // Her skal vi ikke gøre noget - men vi skal forespørge igen
2140 logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer';
2141 SkrivScanningLogFil(logTekst);
2142 try
2143 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
2144 WebSvar := IdHTTP1.Get(URLStr);
2145 except on e:EIdConnClosedGracefully do
2146 begin
2147 logTekst := 'EIdConnClosedGracefully i HentPakkeInfoFraServer igen';
2148 SkrivScanningLogFil(logTekst);
2149 WebSvar := IdHTTP1.Get(URLStr);
2150 end;
2151 end;
2152 end;
2153 end;
2154
2155 XMLDocument1.LoadFromXML(WebSvar);
2156 try
2157 if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2158 begin
2159 RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2160 Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2161 BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2162 BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2163 PrintNyLabel := False;
2164
2165 if menuPakkeshop1.Checked then
2166 begin
2167 try
2168 PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2169 except on e:exception do
2170 PrintNyLabelInteger := 0;
2171 end;
2172 if (PrintNyLabelInteger = 1) then
2173 begin
2174 PrintNyLabel := True;
2175 end;
2176 end;
2177 end
2178 else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2179 begin
2180
2181
2182
2183
2184 Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2185 if (Kommentar = 'Ok') then
2186 begin
2187 PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2188 PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2189 RuteNummer := PakkeshopLabel.Koreliste + ' -> ' + PakkeshopLabel.PakkeshopTurid;
2190 Stregkode := PakkeshopLabel.Stregkode;
2191
2192 LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2193 chkForstorTilDirekte.Checked := false;
2194
2195 end;
2196
2197
2198 end
2199 else
2200 begin
2201 RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
2202 Koreliste := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Koreliste').Text;
2203 Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2204 BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2205 Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2206 if menuDaoDirekte1.Checked then
2207 begin
2208 try
2209 SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
2210 except on e:exception do
2211 SmsKode := '';
2212 end;
2213 try
2214 DBKbane := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('DBKbane').Text;
2215 except on e:exception do
2216 DBKbane := '';
2217 end;
2218 end;
2219 PrintNyLabel := False;
2220 try
2221 PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('PrintPakkeLabel').Text);
2222 except on e:exception do
2223 PrintNyLabelInteger := 0;
2224 end;
2225 PrintNyLabel := False;
2226 if (PrintNyLabelInteger = 1) then
2227 begin
2228 PrintNyLabel := True;
2229 end;
2230 end;
2231
2232
2233 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2234 begin
2235 if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2236 begin
2237 Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2238 PrintNyLabel := False;
2239 end;
2240 end
2241 else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) then
2242 begin
2243 if (Leveringssted = 'E') and (Sted = 'DBK') then
2244 begin
2245 // Det er ok at DBK scanner pakker til E (Schenker)
2246 end
2247 else
2248 begin
2249 Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';
2250 PrintNyLabel := False;
2251 end;
2252 end;
2253 except on e:exception do
2254 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
2255 end;
2256 end;
2257
2258
2259 procedure TMainForm.UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghNr : String);
2260 var
2261 List1Msg, List1Pakkestorrelse : String;
2262 begin
2263 RuteNummerST.Caption := RuteNummer;
2264 KommentarST.Caption := Kommentar;
2265 KommentarST.Caption := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);
2266 KommentarST.Caption := StringReplace(KommentarST.Caption, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2267 //Label1.Caption := Kommentar; // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2268 BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2269 List1msg := TimeToStr(now) + '; ';
2270 if menuPakkeshop1.Checked then
2271 List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2272 List1Pakkestorrelse := '';
2273 if radioStorPakke.Checked then
2274 begin
2275 List1Pakkestorrelse := 'Stor pakke';
2276 end;
2277 if radioLillePakke.Checked then
2278 begin
2279 List1Pakkestorrelse := 'Lille pakke';
2280 end;
2281 List1msg := List1msg + BoghandlerNavn + '; ';
2282 if menuNatxpressReturDAO1.Checked then
2283 begin
2284 List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2285 end;
2286 if menuNatxpressReturfraKunde1.Checked then
2287 begin
2288 List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2289 end;
2290 if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2291 List1msg := List1msg + '; ' + List1Pakkestorrelse;
2292 if length(BoghNr) > 0 then
2293 begin
2294 List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2295 end;
2296 if menuDaoDirekte1.Checked then
2297 begin
2298 List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2299 if (radioStorPakke.Checked) then
2300 begin
2301 List1msg := List1msg + '; Stor pakke';
2302 end;
2303 if (radioLillePakke.Checked) then
2304 begin
2305 List1msg := List1msg + '; Lille pakke';
2306 end;
2307 end;
2308 if menuPakkeshopRetur1.Checked then
2309 begin
2310 List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2311 end;
2312 if menuNatXpress1.Checked then
2313 begin
2314 if (Kommentar = '***** Kommentar *****') // fra test printer funktionen
2315 or (BoghandlerNavn = 'Forbindelse ok') // fra test forbindelse funktionen
2316 or (BoghandlerNavn = 'Fejl i forbindelse til server') then // fra test forbindelse funktionen
2317 begin
2318 List1msg := List1msg + '; ' + Stregkode + '; ' + Kommentar;
2319 end
2320 else
2321 begin
2322 List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2323 end;
2324 end;
2325 if menuIndlevering.Checked then
2326 begin
2327 List1Msg := Stregkode;
2328 end;
2329
2330
2331 ListBox1.Items.Insert(0,List1Msg);
2332 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2333 SkrivScanningLogFil(logTekst);
2334 end;
2335
2336 procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2337 begin
2338 UploadLogfilTilDAO();
2339 UploadInifilTilDAO();
2340 ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
2341 end;
2342
2343 procedure TMainForm.PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
2344 var
2345 ClickedOK: Boolean;
2346 pakkeErScannet : Integer;
2347 pakkeForkertSted : Integer;
2348 List1Msg : String;
2349 kontrolKoreliste : string;
2350 nytRuteNummer, nyFarve : String;
2351 begin
2352 if menuDaoDirekte1.Checked then
2353 RuteNummerST.Color := TUtils.HexToTColor(Farve);
2354
2355 pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2356 if pakkeErScannet = 0 then
2357 begin
2358 pakkeErScannet := pos('PAKKE ER SCANNET', Kommentar);
2359 end;
2360 if pakkeErScannet = 0 then
2361 begin
2362 pakkeErScannet := pos('PAKKE ER SCANNET', BoghandlerNavn);
2363 end;
2364 pakkeForkertSted := pos('burde være hos', Kommentar);
2365
2366
2367 if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2368
2369 begin
2370 if (RuteNummer = 'Ukendt') then
2371 begin
2372 repeat
2373 begin
2374 ClickedOK := InputQuery('Ukendt pakke', 'Indtast kundenummer', BoghandlerNummer);
2375 end
2376 until (ClickedOK and (Length(BoghandlerNummer) > 2) and (Length(BoghandlerNummer) < 9)) or not ClickedOK;
2377 if not ClickedOK then
2378 begin
2379 exit;
2380 end;
2381 if (Length(BoghandlerNummer) > 2) then
2382 begin
2383 InitScreen();
2384 HentPakkeInfoFraServer(Sted, StregKode, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2385 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, BoghandlerNummer);
2386 end;
2387 end;
2388 end
2389 else
2390 if menuDaoDirekte1.Checked then
2391 begin
2392 if (BoghandlerNavn = 'Ukendt pakke') then
2393 begin
2394 PrintNyLabel := false;
2395
2396 PlaySound(PWideChar(AlarmLyd));
2397 MainForm.Color := clRed;
2398 btnNulstil.Visible := true;
2399
2400 end
2401 else
2402 begin
2403 nytRuteNummer := retRutenummer(RuteNummer);
2404 if (nytRuteNummer <> RuteNummer) then
2405 begin
2406 PrintNyLabel := true;
2407 RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2408 nyFarve := Farve;
2409 RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2410 List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2411 RuteNummer := nytRuteNummer;
2412 ListBox1.Items.Insert(0,List1Msg);
2413 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2414 SkrivScanningLogFil(logTekst);
2415
2416 if (PrinterNavn = 'Ingen') then
2417 begin
2418 PrintNyLabel := false;
2419 end;
2420
2421 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2422 begin
2423 PlaySound(PWideChar(AlarmLyd));
2424 MainForm.Color := clRed;
2425 btnNulstil.Visible := true;
2426 end;
2427
2428 end;
2429 kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2430 if (kontrolKoreliste <> RuteNummer) then
2431 begin
2432 PrintNyLabel := true;
2433 List1msg := TimeToStr(now) + '; ' + BoghandlerNavn + '; ' + 'Forkert køreliste ' + '; ' + Koreliste + ' -> ' + kontrolKoreliste;
2434 if (length(kontrolKoreliste) > 20) then // Skal ikke printe label når 'Køreliste ikke i kontrolfil'
2435 begin
2436 PrintNyLabel := false;
2437 RuteNummerST.Caption := RuteNummerST.Caption + ' -> ' + kontrolKoreliste;
2438 end
2439 else
2440 begin
2441 RuteNummerST.Caption := RuteNummerST.Caption + ' -> Ny køreliste: ' + kontrolKoreliste;
2442 end;
2443 ListBox1.Items.Insert(0,List1Msg);
2444 logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2445 SkrivScanningLogFil(logTekst);
2446
2447 if (PrintNyLabel = false) then // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2448 begin
2449 PlaySound(PWideChar(AlarmLyd));
2450 MainForm.Color := clRed;
2451 btnNulstil.Visible := true;
2452 end;
2453
2454 end;
2455 end;
2456
2457 end;
2458
2459 if menuDaoDirekte1.Checked then
2460 begin
2461 case BladhusSted of
2462 00 : begin;
2463 // 20150304: start
2464 // if PrintNyLabel and (kontrolKoreliste <> '') or (RuteNummer = 'Rutenr') then
2465 // // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2466 // // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2467 // // Det holder dog ikke for DAO DIREKTE fordi Schenker altid skal printes, da deres label mangler DAO ruteoplysninger553915076624451294
2468 if PrintNyLabel or (RuteNummer = 'Rutenr') then
2469 // 20150304: slut
2470 begin
2471 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2472 end;
2473 end;
2474 01 : begin;
2475 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2476 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2477 // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2478 begin
2479 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2480 end;
2481 end;
2482 02 : begin;
2483 if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2484 begin
2485 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2486 end;
2487 end;
2488 03 : begin;
2489 if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2490 // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2491 // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2492 begin
2493 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2494 end;
2495 end;
2496 04 : begin;
2497 if PrintNyLabel or (RuteNummer = 'Rutenr') then // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2498 begin
2499 LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2500 end;
2501 end;
2502 else
2503 ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
2504 end;
2505 end;
2506
2507 // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2508 if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2509 begin
2510 exit;
2511 end;
2512
2513 if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2514 begin
2515 end
2516 else
2517 begin
2518 if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2519 begin
2520 logTekst := 'Printer label type ';
2521 if (chkAltidPrintLabel.Checked) then
2522 begin
2523 logTekst := logTekst + 'Alle ';
2524 end
2525 else if (PrintNyLabel) then
2526 begin
2527 logTekst := logTekst + 'Rute ';
2528 end
2529 else
2530 begin
2531 logTekst := logTekst + 'Ukendt ';
2532 end;
2533 logTekst := logTekst + ' for '+BoghandlerNavn;
2534 SkrivScanningLogFil(logTekst);
2535
2536 LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2537
2538 end;
2539 end;
2540
2541 end;
2542
2543
2544
2545 procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2546 begin
2547 menuStorePakker.Checked := true;
2548 radioStorPakke.Checked := true;
2549 end;
2550
2551 procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2552 begin
2553 menuSmaaPakker.Checked := true;
2554 radioLillePakke.Checked := true;
2555 end;
2556
2557
2558 procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2559 begin
2560 if chkSporgEfterKunde.Checked then
2561 begin
2562 Sprgefterboghandlernummer1.Checked := true;
2563 end
2564 else
2565 begin
2566 Sprgefterboghandlernummer1.Checked := false;
2567 end;
2568 end;
2569
2570
2571 procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2572 begin
2573 if chkAltidPrintLabel.Checked then
2574 begin
2575 Altidprintepakkelabel1.Checked := true;
2576 end
2577 else
2578 begin
2579 Altidprintepakkelabel1.Checked := false;
2580 end;
2581
2582 end;
2583
2584 procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2585 begin
2586 if chkScanTjekkode.Checked then
2587 begin
2588 Scanogstjekkoden1.Checked := true;
2589 end
2590 else
2591 begin
2592 Scanogstjekkoden1.Checked := false;
2593 end;
2594 end;
2595
2596 procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2597 begin
2598 Scanningtype := '5';
2599 InitPakkeshoplevering();
2600 NulstilAutomatiskValg();
2601 end;
2602
2603 procedure TMainForm.NulstilAutomatiskValg();
2604 begin
2605 menuAutomatiskvalg1.Checked := false;
2606 PanelValgA.Color := clBtnFace;
2607 PanelValgA.Font.Color := clWindowText;
2608
2609 if (SpecialVersionSted = '01')
2610 or (SpecialVersionSted = '02')
2611 or (SpecialVersionSted = '03')
2612 or (SpecialVersionSted = '04') then
2613 begin
2614 // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2615 PanelValgA.Enabled := false;
2616 PanelValgA.Font.Color := clInactiveCaption;
2617 menuAutomatiskvalg1.Enabled := false;
2618 end;
2619 // 20150317: slut
2620 end;
2621
2622 procedure TMainForm.TjekkerUrls();
2623 const
2624 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2625 var
2626 urlFejl : Integer;
2627 begin
2628 urlFejl := 0;
2629 //UpdateScreen('', '', 'Tjekker forbindelsen...', '', ''); // virker ikke
2630 ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2631
2632 try
2633 // Tjekker urls
2634 logTekst := 'Tjekker urls.';
2635 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2636 SkrivScanningLogFil(logTekst);
2637
2638
2639
2640 // Tjekker UrlNormal
2641 if PanelValg1.Enabled = true then
2642 begin
2643 TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2644 end;
2645
2646 // Tjekker UrlReturDAO
2647 if PanelValg2.Enabled = true then
2648 begin
2649 TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2650 end;
2651
2652 // Tjekker UrlReturBoghandler
2653 if PanelValg3.Enabled = true then
2654 begin
2655 TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2656 end;
2657
2658 // Tjekker UrlBudlevering
2659 if PanelValg4.Enabled = true then
2660 begin
2661 TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2662 end;
2663
2664 // Tjekker UrlPakkeshoplevering
2665 if PanelValg5.Enabled = true then
2666 begin
2667 TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2668 end;
2669
2670 // Tjekker UrlReturPakkeshop
2671 if PanelValg6.Enabled = true then
2672 begin
2673 TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2674 end;
2675
2676 // Tjekker UrlManglendeScanninger
2677 if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2678 begin
2679 TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2680 end;
2681
2682 // Tjekker UrlPakkeshopManglendeScanninger
2683 if PanelValg5.Enabled = true then
2684 begin
2685 TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2686 end;
2687
2688 // Tjekker UrlPakkeshopManglendeReturScanninger
2689 if PanelValg6.Enabled = true then
2690 begin
2691 TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2692 end;
2693
2694 // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2695 if PanelValg7.Enabled = true then
2696 begin
2697 TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2698 TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2699 end;
2700
2701 // Tjekker UrlEKLoverforsel
2702 if PanelValg1.Enabled = true then
2703 begin
2704 TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2705 end;
2706
2707
2708 // Tjekker UrlEKLoverforselPakkeshop
2709 if PanelValg5.Enabled = true then
2710 begin
2711 TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2712 end;
2713
2714
2715 // Tjekker UrlFindPakketype
2716 TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2717
2718 // Tjekker UrlSendPrograminfo
2719 TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2720
2721
2722
2723 logTekst := 'urls er ok';
2724 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2725 SkrivScanningLogFil(logTekst);
2726
2727 Except
2728 TjekUrls := '-'; // markerer at der var fejl
2729
2730 end;
2731 end;
2732
2733 procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2734 const
2735 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2736 begin
2737 if TUtils.CheckUrl(Url) then
2738
2739 begin
2740 logTekst := UrlNavn + ' accepteret: ' + Url;
2741 SkrivScanningLogFil(logTekst);
2742 end
2743 else
2744 begin
2745 inc(urlFejl); // Optæller antal fejl
2746 logTekst := UrlNavn + ' svarer ikke: ' + Url;
2747 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2748 if TjekUrls = '1' then
2749 begin
2750 logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2751 end;
2752
2753 SkrivScanningLogFil(logTekst);
2754
2755 if TjekUrls = '1' then
2756 begin
2757 ShowMessage(logTekst);
2758 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2759 Application.Terminate;
2760
2761 raise Exception.Create('UrlFejl');
2762
2763 end;
2764 end;
2765
2766 end;
2767
2768
2769
2770 procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2771 var
2772 SR: TSearchRec;
2773 dt: TDateTime;
2774 CreationTime: TFileTime;
2775 dtCreation: TDateTime;
2776 BemTxt : String;
2777 begin
2778 logTekst := 'Logfiler tjekkes for sletning.';
2779 SkrivScanningLogFil(logTekst);
2780 FileList.Insert(0,logTekst);
2781 if FindFirst(Path + '*.log', faAnyFile, SR) = 0 then // finder log filer
2782 begin
2783 repeat
2784 if (SR.Attr <> faDirectory) then
2785 begin
2786
2787 dt := fileDateToDateTime(SR.Time); // finder filens timestamp for seneste ændring
2788 CreationTime := SR.FindData.ftCreationTime; // finder filens timestamp for oprettelse
2789 dtCreation := TUtils.FileTime2DateTime(CreationTime); // finder filens timestamp for oprettelse
2790 // Selvom creation date godt kan være forskellig fra modified date,
2791 // skal vi alligevel altid tjekke filens alder ud fra modified date
2792 // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
2793 BemTxt := '';
2794 if (DaysBetween(now, dt) > 14) then // så er filen kandidat til at blive slettet
2795 begin
2796 BemTxt := ' (skal slettes)';
2797 end;
2798 logTekst := SR.Name + ' Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dt) + ' ' + BemTxt + ' ' + IntToStr(DaysBetween(now, dt)) + ' dage gammel';
2799 if DaysBetween(dtCreation, dt) > 1 then
2800 begin
2801 logTekst := logTekst + ' (Oprettet ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',dtCreation) + ')';
2802 end;
2803 FileList.Insert(0,logTekst);
2804 SkrivScanningLogFil(logTekst);
2805 if BemTxt = ' (skal slettes)' then
2806 begin
2807 if DeleteFile(Path + SR.Name) then
2808 begin
2809 logTekst := 'Logfil er slettet.';
2810 FileList.Insert(0,logTekst);
2811 SkrivScanningLogFil(logTekst);
2812 end
2813 else
2814 begin
2815 logTekst := 'Logfil kunne IKKE slettes.';
2816 FileList.Insert(0,logTekst);
2817 SkrivScanningLogFil(logTekst);
2818 end;
2819 end;
2820 end;
2821 until FindNext(SR) <> 0;
2822 FindClose(SR);
2823 end;
2824 end;
2825
2826 procedure TMainForm.btnNulstilClick(Sender: TObject);
2827 begin
2828 PakkeshopStregkode := '';
2829 PakkeshopTjekkode := '';
2830 btnNulstil.Visible := false;
2831 PakkeshopText1.Caption := 'Stregkode';
2832 BoghandlerStregkode := '';
2833 BoghandlerTjekkode := '';
2834 Stregkode := '';
2835 // 20150312: start
2836 if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2837 begin
2838 ShowMessage('Programmet afbrydes...');
2839 UrlSendPrograminfo := ''; // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2840 Application.Terminate;
2841 exit;
2842 end;
2843 // 20150312: slut
2844 InitScreen();
2845 // MainForm.Color := HexToTColor(Farve);
2846 if Farve <> '' then
2847 begin
2848 MainForm.Color := TUtils.HexToTColor(Farve);
2849 end;
2850 if (menuDaoDirekte1.Checked) then
2851 begin
2852 InitLillePakke();
2853 end;
2854 PrinterstatusStaticText1.Caption := '';
2855 PrinterstatusStaticText1.Color := MainForm.Color;
2856 end;
2857
2858
2859 procedure TMainForm.PanelValg1Click(Sender: TObject);
2860 begin
2861 Scanningtype := '1';
2862 InitNatxpresslevering();
2863 NulstilAutomatiskValg();
2864 end;
2865
2866 procedure TMainForm.PanelValg2Click(Sender: TObject);
2867 begin
2868 Scanningtype := '2';
2869 InitReturFraDao();
2870 NulstilAutomatiskValg();
2871 end;
2872
2873 procedure TMainForm.PanelValg3Click(Sender: TObject);
2874 begin
2875 Scanningtype := '3';
2876 InitReturFraKunde();
2877 NulstilAutomatiskValg();
2878 end;
2879
2880 procedure TMainForm.PanelValg4Click(Sender: TObject);
2881 begin
2882 Scanningtype := '4';
2883 InitDirektelevering();
2884 NulstilAutomatiskValg();
2885 end;
2886
2887 procedure TMainForm.PanelValg5Click(Sender: TObject);
2888 begin
2889 Scanningtype := '5';
2890 InitPakkeshoplevering();
2891 NulstilAutomatiskValg();
2892 end;
2893
2894 procedure TMainForm.PanelValg6Click(Sender: TObject);
2895 begin
2896 Scanningtype := '6';
2897 InitReturFraPakkeshop();
2898 NulstilAutomatiskValg();
2899 end;
2900
2901
2902 procedure TMainForm.PanelValg7Click(Sender: TObject);
2903 begin
2904 Scanningtype := '7';
2905 InitIndleveringskode();
2906 NulstilAutomatiskValg();
2907
2908 end;
2909
2910 procedure TMainForm.PanelValgAClick(Sender: TObject);
2911 begin
2912 // Skal ikke toggle men bare sætte funktionen on
2913 // Fravælges ved at vælge en scanningstype
2914 menuAutomatiskvalg1.Checked := true;
2915 PanelValgA.Color := clGreen;
2916 PanelValgA.Font.Color := clWhite;
2917
2918
2919
2920 end;
2921
2922 procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2923 begin
2924 Scanningtype := '1';
2925 NulstilAutomatiskValg();
2926 InitNatxpresslevering();
2927 end;
2928
2929 procedure TMainForm.Testforbindelsen1Click(Sender: TObject);
2930 var
2931 RuteNummer : String;
2932 Kommentar : String;
2933 BoghandlerNavn : String;
2934 Koreliste : String;
2935 Falsk : Boolean;
2936 SmsKode : String;
2937 DBKbane : String;
2938 Leveringssted : String;
2939 orgTjekUrls : String;
2940 begin
2941 orgTjekUrls := TjekUrls;
2942 if (TjekUrls = '1') or (TjekUrls = '2') then
2943 begin
2944 TjekkerUrls();
2945 end;
2946 if TjekUrls = '-' then
2947 begin
2948 //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2949 RuteNummer := '';
2950 Kommentar := 'Se log vinduet';
2951 BoghandlerNavn := 'Fejl i forbindelse til server';
2952 Koreliste := '';
2953 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2954 // Her kommer en alarm og rød skærm
2955 PlaySound(PWideChar(AlarmLyd));
2956 MainForm.Color := clRed;
2957 btnNulstil.Visible := true;
2958 end
2959 else
2960 begin
2961 Falsk := False;
2962
2963 HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2964 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2965 SmsKode := '999999';
2966 DBKbane := '999';
2967 Leveringssted := 'XXX';
2968 PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2969 FocusControl(StregkodeST);
2970 end;
2971 TjekUrls := orgTjekUrls;
2972
2973 end;
2974
2975 procedure TMainForm.Testprinter1Click(Sender: TObject);
2976 var
2977 RuteNummer : String;
2978 Kommentar : String;
2979 BoghandlerNavn : String;
2980 Koreliste : String;
2981 Falsk : Boolean;
2982 SmsKode : String;
2983 DBKbane : String;
2984 Leveringssted : String;
2985 begin
2986 RuteNummer := 'Rutenr';
2987 Kommentar := '***** Kommentar *****';
2988 BoghandlerNavn := 'Modtagernavn';
2989 Falsk := False;
2990
2991
2992 if (LabelPrint.GetPrinterCount() = 0) then
2993 begin
2994 ShowMessage('Der er ikke installeret en printer på denne PC.');
2995 end
2996 else if PrinterNavn = 'Ingen' then
2997 begin
2998 ShowMessage('Der er fravalgt printer i dette program.');
2999 end
3000 else
3001 begin
3002 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
3003 SmsKode := '999999';
3004 DBKbane := '999';
3005 Leveringssted := 'XXX';
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.menuNatxpressReturDAO1Click(Sender: TObject);
3193 begin
3194 Scanningtype := '2';
3195 NulstilAutomatiskValg();
3196 InitReturFraDao();
3197 end;
3198
3199 procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3200 begin
3201 Scanningtype := '6';
3202 InitReturFraPakkeshop();
3203 NulstilAutomatiskValg();
3204 end;
3205
3206 procedure TMainForm.InitNatxpresslevering();
3207 begin
3208 menuAutomatiskTjekkodeStyring.Enabled := true;
3209 btnNulstil.Visible := false;
3210 menuNatXpress1.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 menuSmaaPakker.Enabled := false;
3223 menuStorePakker.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 menuAutomatiskTjekkodeStyring.Enabled := false;
3245 menuNatxpressReturDAO1.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 menuSmaaPakker.Enabled := true;
3259 menuStorePakker.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 menuAutomatiskTjekkodeStyring.Enabled := false;
3276 menuNatxpressReturfraKunde1.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 menuSmaaPakker.Enabled := true;
3289 menuStorePakker.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 menuAutomatiskTjekkodeStyring.Enabled := false;
3306 menuDaoDirekte1.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 menuSmaaPakker.Enabled := true;
3320 menuStorePakker.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 menuAutomatiskTjekkodeStyring.Enabled := true;
3346 menuPakkeshop1.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 menuSmaaPakker.Enabled := false;
3360 menuStorePakker.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 menuAutomatiskTjekkodeStyring.Enabled := false;
3386 menuPakkeshopRetur1.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 menuSmaaPakker.Enabled := false;
3400 menuStorePakker.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.menuNatxpressReturfraKunde1Click(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 menuAutomatiskTjekkodeStyring.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 menuSmaaPakker.Enabled := false;
3451 menuStorePakker.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.menuStorePakkerClick(Sender: TObject);
3477 begin
3478 InitStorPakke();
3479 end;
3480
3481 procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3482 begin
3483 InitLillePakke();
3484 end;
3485
3486 procedure TMainForm.InitLillePakke();
3487 begin
3488 radioLillePakke.Checked := true;
3489 menuSmaaPakker.Checked := true;
3490 // Stregkode := '';
3491 end;
3492
3493 procedure TMainForm.InitStorPakke();
3494 begin
3495 radioStorPakke.Checked := true;
3496 menuStorePakker.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 menuSmaaPakker.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 menuStorePakker.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.menuDaoDirekte1Click(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 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