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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20