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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20