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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20