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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2800 - (show annotations) (download)
Wed Jan 6 12:53:51 2016 UTC (8 years, 4 months ago) by torben
File size: 165586 byte(s)
Tilføj TK (BK/Trykkompagniet) som sted
Dokumnentation af "For stor til DAODIrekte"

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

  ViewVC Help
Powered by ViewVC 1.1.20