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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20