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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20