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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3049 - (show annotations) (download)
Tue Jun 14 09:50:04 2016 UTC (7 years, 11 months ago) by torben
File size: 169080 byte(s)
Disable ZPL test print og bump version til 6.2.4

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

  ViewVC Help
Powered by ViewVC 1.1.20