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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3125 - (show annotations) (download)
Wed Oct 19 08:39:31 2016 UTC (7 years, 6 months ago) by torben
File size: 167105 byte(s)
More printer encapsulation
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 begin
2911 RuteNummer := 'Rutenr';
2912 Kommentar := '***** Kommentar *****';
2913 BoghandlerNavn := 'Modtagernavn';
2914 // Falsk := False;
2915
2916
2917 if (LabelPrint.GetPrinterCount() = 0) then
2918 begin
2919 ShowMessage('Der er ikke installeret en printer på denne PC.');
2920 end
2921 // else if Config.PrinterNavn = 'Ingen' then //Det giver ikke længere mening at kunne fravælge printer
2922 // begin
2923 // ShowMessage('Der er fravalgt printer i dette program.');
2924 // end
2925 else
2926 begin
2927 UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2928 // SmsKode := '999999';
2929 // DBKbane := '999';
2930 // Leveringssted := 'XXX';
2931 // PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2932
2933
2934
2935 LabelPrint.PrintTestLabel('999999', '999', 'xxx');
2936
2937 LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2938
2939 end;
2940 FocusControl(StregkodeST);
2941 end;
2942
2943 procedure TMainForm.Timer1Timer(Sender: TObject);
2944 begin
2945 if (Config.TjekPrinter = '1') then
2946 begin
2947 LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2948 end
2949 else
2950 begin
2951 PrinterstatusStaticText1.Caption := '';
2952 PrinterstatusStaticText1.Color := MainForm.Color;
2953 end;
2954 end;
2955
2956
2957
2958 procedure TMainForm.Om1Click(Sender: TObject);
2959 const
2960 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
2961 var
2962 tekst, filversion : String;
2963 begin
2964
2965 filversion := TUtils.Sto_GetFmtFileVersion('');
2966 tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
2967
2968 tekst := tekst+crlf+crlf;
2969 tekst := tekst+'Programmet er installeret som:'+crlf+ParamStr(0);
2970 tekst := tekst+crlf;
2971
2972 if SpecialVersionSted = '' then
2973 begin
2974 tekst := tekst+crlf+crlf+'Scanningssted: '+StringReplace(Stednavn, ':', '', [rfReplaceAll, rfIgnoreCase])+' ('+Sted+')';
2975 end;
2976
2977 if SpecialVersionSted <> '' then
2978 begin
2979 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2980 begin
2981 if Stednavn = '' then
2982 begin
2983 tekst := tekst+crlf+crlf+'Speciel version til: '+BladhusStedNavn[BladhusSted]+' ('+BladhusStedKode[BladhusSted]+')';
2984 end
2985 else
2986 begin
2987 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2988 end;
2989 end
2990 else
2991 begin
2992 tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2993 end;
2994 end;
2995
2996 if (Pos('omdeling.info',Url) = 0) then
2997 begin
2998 tekst := tekst+crlf+crlf;
2999 tekst := tekst+crlf+crlf+' ********** DETTE ER KUN EN TEST VERSION **********';
3000 tekst := tekst+crlf+crlf;
3001 tekst := tekst+crlf+crlf+'Url: ' + Url;
3002 end;
3003
3004 MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
3005
3006 end;
3007
3008
3009 procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3010 Rect: TRect; State: TOwnerDrawState);
3011 var
3012 ListBox1MaxLinLgd,i : Integer;
3013 myColor: TColor;
3014 myBrush: TBrush;
3015 begin
3016 ListBox1MaxLinLgd := 0;
3017 myBrush := TBrush.Create;
3018 with (Control as TListBox).Canvas do
3019 begin
3020 if not Odd(Index) then
3021 myColor := clWhite
3022 else
3023 myColor := clSilver;
3024
3025 if odSelected in State then
3026 begin
3027 myColor := MainForm.Color;
3028 font.Color := clBlack;
3029 end;
3030
3031 myBrush.Style := bsSolid;
3032 myBrush.Color := myColor;
3033 Windows.FillRect(handle, Rect, myBrush.Handle) ;
3034 Brush.Style := bsClear;
3035 TextOut(Rect.Left, Rect.Top,
3036 (Control as TListBox).Items[Index]) ;
3037 MyBrush.Free;
3038 end;
3039
3040 for i := 0 to (ListBox1.Items.Count - 1) do
3041 if (ListBox1.Canvas.TextWidth(ListBox1.Items[i]) > ListBox1MaxLinLgd) then
3042 ListBox1MaxLinLgd := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
3043 ListBox1.ScrollWidth := ListBox1MaxLinLgd;
3044 end;
3045
3046 procedure TMainForm.Lukprogrammet1Click(Sender: TObject);
3047 begin
3048
3049 Application.Terminate;
3050
3051 end;
3052
3053 procedure TMainForm.Manual1Click(Sender: TObject);
3054 var
3055 fileName : string;
3056 begin
3057 fileName := 'Docs\Manual_' + Scanningtype + '.pdf';
3058
3059 if FileExists(fileName) then
3060 begin
3061 if TUtils.AdobeReaderExists then
3062 begin
3063 //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3064 ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3065 end
3066 else
3067 begin
3068 ShowMessage('Acrobat Reader er ikke installeret!');
3069 end;
3070 end
3071 else
3072 begin
3073 ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3074 end;
3075 end;
3076
3077 procedure TMainForm.Manualgenerel1Click(Sender: TObject);
3078 var
3079 fileName : string;
3080 begin
3081 fileName := 'Docs\Manual_0.pdf';
3082
3083 if FileExists(fileName) then
3084 begin
3085 if TUtils.AdobeReaderExists then
3086 begin
3087 //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3088 ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3089 end
3090 else
3091 begin
3092 ShowMessage('Adobe Reader er ikke installeret!');
3093 end;
3094 end
3095 else
3096 begin
3097 ShowMessage('Manualen : ' + #10#13 + fileName + #10#13 + 'blev ikke fundet!');
3098 end;
3099 end;
3100
3101 procedure TMainForm.menuIndleveringClick(Sender: TObject);
3102 begin
3103 Scanningtype := '7';
3104 NulstilAutomatiskValg();
3105 InitIndleveringskode();
3106 end;
3107
3108 procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3109 begin
3110
3111 if Sprgefterboghandlernummer1.Checked then
3112 begin
3113 chkSporgEfterKunde.Checked := true;
3114 end
3115 else
3116 begin
3117 chkSporgEfterKunde.Checked := false;
3118 end;
3119
3120
3121 end;
3122
3123 procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3124 begin
3125 Scanningtype := '2';
3126 NulstilAutomatiskValg();
3127 InitReturFraDao();
3128 end;
3129
3130 procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3131 begin
3132 Scanningtype := '6';
3133 InitReturFraPakkeshop();
3134 NulstilAutomatiskValg();
3135 end;
3136
3137 procedure TMainForm.InitNatxpresslevering();
3138 begin
3139 menuAutomatiskTjekkodeStyring.Enabled := true;
3140 btnNulstil.Visible := false;
3141 menuNatXpress1.Checked := true;
3142 InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3143 PanelValg1.Color := clGreen;
3144 PanelValg1.Font.Color := clWhite;
3145
3146 chkAltidPrintLabel.Enabled := true;
3147 Altidprintepakkelabel1.Enabled := true;
3148 Altidprintepakkelabel1.Checked := false;
3149 chkAltidPrintLabel.Checked := false;
3150 Sprgefterboghandlernummer1.Checked := false;
3151 chkSporgEfterKunde.Checked := false;
3152 Sprgefterboghandlernummer1.Enabled := true;
3153 menuSmaaPakker.Enabled := false;
3154 menuStorePakker.Enabled := false;
3155 radioStorPakke.Enabled := false;
3156 radioLillePakke.Enabled := false;
3157 ListBox1.Visible := true;
3158 BtnOpdaterListen.Enabled := true;
3159 BtnEKLoverforsel.Enabled := true;
3160 InitLillePakke();
3161 ListBox1.Items.Clear;
3162
3163 chkForstorTilDirekte.Checked := false;
3164 chkForstorTilDirekte.Enabled := false;
3165
3166 if BladhusSted = 0 then
3167 begin
3168 IndlesScanningLogFil();
3169 IndlesManglendeScanningerAntal();
3170 end;
3171 end;
3172
3173 procedure TMainForm.InitReturFraDao();
3174 begin
3175 menuAutomatiskTjekkodeStyring.Enabled := false;
3176 menuNatxpressReturDAO1.Checked := true;
3177 btnNulstil.Visible := false;
3178 InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3179 PanelValg2.Color := clGreen;
3180 PanelValg2.Font.Color := clWhite;
3181
3182 chkAltidPrintLabel.Enabled := false;
3183 Altidprintepakkelabel1.Enabled := false;
3184
3185 Altidprintepakkelabel1.Checked := false;
3186 Sprgefterboghandlernummer1.Checked := false;
3187 chkSporgEfterKunde.Checked := false;
3188 Sprgefterboghandlernummer1.Enabled := false;
3189 menuSmaaPakker.Enabled := true;
3190 menuStorePakker.Enabled := true;
3191 radioStorPakke.Enabled := true;
3192 radioLillePakke.Enabled := true;
3193 ListBox1.Visible := true;
3194 ListBox1.Items.Clear;
3195 ListBox2.Items.Clear;
3196 BtnEKLoverforsel.Enabled := false;
3197
3198 chkForstorTilDirekte.Checked := false;
3199 chkForstorTilDirekte.Enabled := false;
3200
3201 InitLillePakke();
3202 end;
3203
3204 procedure TMainForm.InitReturFraKunde();
3205 begin
3206 menuAutomatiskTjekkodeStyring.Enabled := false;
3207 menuNatxpressReturfraKunde1.Checked := true;
3208 btnNulstil.Visible := false;
3209 InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3210 PanelValg3.Color := clGreen;
3211 PanelValg3.Font.Color := clWhite;
3212
3213 chkAltidPrintLabel.Enabled := false;
3214 Altidprintepakkelabel1.Enabled := false;
3215 Altidprintepakkelabel1.Checked := false;
3216 Sprgefterboghandlernummer1.Checked := false;
3217 chkSporgEfterKunde.Checked := false;
3218 Sprgefterboghandlernummer1.Enabled := false;
3219 menuSmaaPakker.Enabled := true;
3220 menuStorePakker.Enabled := true;
3221 radioStorPakke.Enabled := true;
3222 radioLillePakke.Enabled := true;
3223 ListBox1.Visible := true;
3224 ListBox1.Items.Clear;
3225 ListBox2.Items.Clear;
3226 BtnEKLoverforsel.Enabled := false;
3227
3228 chkForstorTilDirekte.Checked := false;
3229 chkForstorTilDirekte.Enabled := false;
3230
3231 InitLillePakke();
3232 end;
3233
3234 procedure TMainForm.InitDirektelevering();
3235 begin
3236 menuAutomatiskTjekkodeStyring.Enabled := false;
3237 menuDaoDirekte1.Checked := true;
3238 btnNulstil.Visible := false;
3239 InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3240 PanelValg4.Color := clGreen;
3241 PanelValg4.Font.Color := clWhite;
3242
3243 chkAltidPrintLabel.Enabled := false;
3244 Altidprintepakkelabel1.Enabled := false;
3245
3246 Altidprintepakkelabel1.Checked := false;
3247 Sprgefterboghandlernummer1.Checked := false;
3248 chkSporgEfterKunde.Checked := false;
3249 Sprgefterboghandlernummer1.Enabled := false;
3250 menuSmaaPakker.Enabled := true;
3251 menuStorePakker.Enabled := true;
3252 radioStorPakke.Enabled := true;
3253 radioLillePakke.Enabled := true;
3254 ListBox1.Visible := true;
3255 ListBox1.Items.Clear;
3256 BtnDownloadKontrolfil.Enabled := false;
3257 BtnOpdaterListen.Enabled := true;
3258 BtnDownloadRuteskiftFil.Visible := false;
3259 BtnEKLoverforsel.Enabled := false;
3260 IdFTP1.Passive := true;
3261 IdFTP1.PassiveUseControlHost := true;
3262
3263 chkForstorTilDirekte.Checked := false;
3264 chkForstorTilDirekte.Enabled := true;
3265
3266 if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3267 begin
3268 IndlesScanningLogFil();
3269 IndlesManglendeScanningerAntal();
3270 end;
3271
3272 end;
3273
3274 procedure TMainForm.InitPakkeshoplevering();
3275 begin
3276 menuAutomatiskTjekkodeStyring.Enabled := true;
3277 menuPakkeshop1.Checked := true;
3278 btnNulstil.Visible := false;
3279 InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3280 PanelValg5.Color := clGreen;
3281 PanelValg5.Font.Color := clWhite;
3282
3283 chkAltidPrintLabel.Enabled := false;
3284 Altidprintepakkelabel1.Enabled := false;
3285
3286 Altidprintepakkelabel1.Checked := false;
3287 Sprgefterboghandlernummer1.Checked := false;
3288 chkSporgEfterKunde.Checked := false;
3289 Sprgefterboghandlernummer1.Enabled := false;
3290 menuSmaaPakker.Enabled := false;
3291 menuStorePakker.Enabled := false;
3292 radioStorPakke.Enabled := false;
3293 radioLillePakke.Enabled := false;
3294 ListBox1.Visible := true;
3295 ListBox1.Items.Clear;
3296 BtnDownloadKontrolfil.Enabled := false;
3297 BtnOpdaterListen.Enabled := true;
3298
3299 BtnEKLoverforsel.Enabled := true;
3300
3301 chkForstorTilDirekte.Checked := false;
3302 chkForstorTilDirekte.Enabled := true;
3303
3304 InitLillePakke();
3305 IndlesScanningLogFil();
3306 if BladhusSted = 0 then
3307 begin
3308 IndlesManglendeScanningerAntal();
3309 end;
3310 IdFTP1.Passive := true;
3311 IdFTP1.PassiveUseControlHost := true;
3312 end;
3313
3314 procedure TMainForm.InitReturFraPakkeshop();
3315 begin
3316 menuAutomatiskTjekkodeStyring.Enabled := false;
3317 menuPakkeshopRetur1.Checked := true;
3318 btnNulstil.Visible := false;
3319 InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3320 PanelValg6.Color := clGreen;
3321 PanelValg6.Font.Color := clWhite;
3322
3323 chkAltidPrintLabel.Enabled := false;
3324 Altidprintepakkelabel1.Enabled := false;
3325
3326 Altidprintepakkelabel1.Checked := false;
3327 Sprgefterboghandlernummer1.Checked := false;
3328 chkSporgEfterKunde.Checked := false;
3329 Sprgefterboghandlernummer1.Enabled := false;
3330 menuSmaaPakker.Enabled := false;
3331 menuStorePakker.Enabled := false;
3332 radioStorPakke.Enabled := false;
3333 radioLillePakke.Enabled := false;
3334 ListBox1.Visible := true;
3335 ListBox1.Items.Clear;
3336 BtnDownloadKontrolfil.Enabled := false;
3337 BtnOpdaterListen.Enabled := true;
3338 BtnEKLoverforsel.Enabled := false;
3339
3340 chkForstorTilDirekte.Checked := false;
3341 chkForstorTilDirekte.Enabled := false;
3342
3343
3344 InitLillePakke();
3345 IndlesScanningLogFil();
3346 if BladhusSted = 0 then
3347 begin
3348 IndlesManglendeScanningerAntal();
3349 end;
3350 IdFTP1.Passive := true;
3351 IdFTP1.PassiveUseControlHost := true;
3352 end;
3353
3354 procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3355 begin
3356 Scanningtype := '3';
3357 NulstilAutomatiskValg();
3358 InitReturFraKunde();
3359 end;
3360
3361 procedure TMainForm.InitIndleveringskode();
3362 begin
3363 menuIndlevering.Checked := true;
3364 menuAutomatiskTjekkodeStyring.Enabled := false;
3365
3366 btnNulstil.Visible := false;
3367 InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3368 PanelValg7.Color := clGreen;
3369 PanelValg7.Font.Color := clWhite;
3370
3371 chkAltidPrintLabel.Enabled := false;
3372 Altidprintepakkelabel1.Enabled := false;
3373
3374 Altidprintepakkelabel1.Checked := false;
3375 Sprgefterboghandlernummer1.Checked := false;
3376 Sprgefterboghandlernummer1.Enabled := false;
3377 chkSporgEfterKunde.Checked := false;
3378
3379
3380
3381 menuSmaaPakker.Enabled := false;
3382 menuStorePakker.Enabled := false;
3383 radioStorPakke.Enabled := false;
3384 radioLillePakke.Enabled := false;
3385 ListBox1.Visible := true;
3386 ListBox1.Items.Clear();
3387
3388 BtnDownloadKontrolfil.Enabled := false;
3389 BtnOpdaterListen.Enabled := true;
3390 BtnEKLoverforsel.Enabled := false;
3391
3392 chkForstorTilDirekte.Checked := false;
3393 chkForstorTilDirekte.Enabled := false;
3394
3395
3396 InitLillePakke();
3397 IndlesScanningLogFil();
3398 if BladhusSted = 0 then
3399 begin
3400 IndlesManglendeScanningerAntal();
3401 end;
3402 IdFTP1.Passive := true;
3403 IdFTP1.PassiveUseControlHost := true;
3404 end;
3405
3406
3407 procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3408 begin
3409 InitStorPakke();
3410 end;
3411
3412 procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3413 begin
3414 InitLillePakke();
3415 end;
3416
3417 procedure TMainForm.InitLillePakke();
3418 begin
3419 radioLillePakke.Checked := true;
3420 menuSmaaPakker.Checked := true;
3421 // Stregkode := '';
3422 end;
3423
3424 procedure TMainForm.InitStorPakke();
3425 begin
3426 radioStorPakke.Checked := true;
3427 menuStorePakker.Checked := true;
3428 // 20150310: start
3429 // Stregkode := '';
3430 // 20150310: slut
3431 end;
3432
3433
3434
3435 procedure TMainForm.PlaySound(filename : PWideChar);
3436 begin
3437 if (filename <> '') then
3438 begin
3439 sndPlaySound(filename,
3440 SND_NODEFAULT Or SND_ASYNC);
3441 end;
3442 end;
3443
3444 procedure TMainForm.Testlyd1Click(Sender: TObject);
3445 begin
3446 if Config.AlarmLyd <> '' then
3447 begin
3448 PlaySound(PWideChar(Config.AlarmLyd));
3449 end
3450 else
3451 begin
3452 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (alarm)'), 'Information', MB_OK);
3453 end;
3454 end;
3455
3456 procedure TMainForm.Testlyd2Click(Sender: TObject);
3457 begin
3458 if (PakkeshopText1.Caption = 'Tjekkode') then
3459 begin
3460 if Config.ScannetOkTilTjekkodeLyd <> '' then
3461 begin
3462 PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3463 end
3464 else
3465 begin
3466 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkTilTjekkodeLyd)'), 'Information', MB_OK);
3467 end;
3468 exit;
3469 end;
3470
3471 if menuSmaaPakker.Checked then
3472 if Config.ScannetOkLyd <> '' then
3473 begin
3474 PlaySound(PWideChar(Config.ScannetOkLyd));
3475 end
3476 else
3477 begin
3478 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3479 end;
3480 if menuStorePakker.Checked then
3481 if Config.ScannetOkStorLyd <> '' then
3482 begin
3483 PlaySound(PWideChar(Config.ScannetOkStorLyd));
3484 end
3485 else
3486 begin
3487 MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
3488 end;
3489 end;
3490
3491
3492 procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3493 begin
3494 Scanningtype := '4';
3495 NulstilAutomatiskValg();
3496 InitDirektelevering();
3497 end;
3498
3499 procedure TMainForm.Button1Click(Sender: TObject);
3500 begin;
3501 CheckCode();
3502 end;
3503
3504 procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3505 var
3506 WebSvar : String;
3507 URLStr : String;
3508 StedKode : String;
3509 Node: IXMLNode;
3510 I: Integer;
3511 status, kommentar : String;
3512
3513 begin
3514 BtnEKLoverforsel.Enabled := false;
3515
3516 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3517 logTekst := 'Overfører de scannede pakker til EKL';
3518 SkrivScanningLogFil(logTekst);
3519 StedKode := Sted;
3520 URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3521
3522 if PanelValg5.Color = clGreen then
3523 begin
3524 URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3525 end;
3526
3527
3528 try
3529 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3530 WebSvar := IdHTTP1.Get(URLStr);
3531 except
3532 on e:EIdConnClosedGracefully do
3533 begin
3534 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3535 WebSvar := IdHTTP1.Get(URLStr);
3536 end;
3537 on e:exception do
3538 begin
3539 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
3540 logTekst := 'Fejl i web forespørgsel: '+e.Message;
3541 SkrivScanningLogFil(logTekst);
3542 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
3543 end;
3544 end;
3545 try
3546 XMLDocument1.LoadFromXML(WebSvar);
3547 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
3548 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
3549 if Node.NodeType = ntElement then begin
3550 if Node.NodeName = 'Status' then begin
3551 if not VarIsNull(Node.NodeValue) then
3552 status := Node.NodeValue;
3553 end;
3554 if Node.NodeName = 'Kommentar' then begin
3555 if not VarIsNull(Node.NodeValue) then
3556 kommentar := Node.NodeValue;
3557 end;
3558 end;
3559 end;
3560
3561 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status+' '+kommentar);
3562 logTekst := 'Overførsel til EKL: ' + status;
3563 SkrivScanningLogFil(logTekst);
3564
3565 except on e:exception do
3566 begin
3567 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overførsel til EKL: ' + status);
3568 logTekst := 'Overførsel til EKL: ' + status;
3569 SkrivScanningLogFil(logTekst);
3570 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
3571 logTekst := 'Fejl i XML-format: '+e.Message;
3572 SkrivScanningLogFil(logTekst);
3573 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
3574 end;
3575 end;
3576
3577 BtnEKLoverforsel.Enabled := true;
3578
3579 ListBox1.SetFocus; // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3580
3581 // Hvis der var fejl i overførslen skal dette fejlmeldes her
3582 if status = 'Fejl' then
3583 begin // Her skal komme en alarm og rød skærm
3584 PlaySound(PWideChar(Config.AlarmLyd));
3585 MainForm.Color := clRed;
3586 RutenummerST.Caption := 'EKL overførsel';
3587 BoghandlerNavnST.Caption := 'Fejl:';
3588 if (pos('Deadlock', Kommentar) > 0) then
3589 begin
3590 RutenummerST.Caption := 'EKL overførsel fejlet';
3591 BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3592 end;
3593 KommentarST.Caption := Kommentar;
3594 btnNulstil.Visible := true;
3595 end;
3596
3597 end;
3598
3599 procedure TMainForm.CheckCode();
3600 var
3601 Barcode, Svar : String;
3602 ClickedOK : Boolean;
3603 begin
3604 ClickedOK := InputQuery('Barcode check', 'Indtast stregkode', Barcode);
3605 if ClickedOk then
3606 begin
3607 { if (BarCodeValid(Barcode)) then
3608 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3609 else
3610 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3611 }
3612 // MessageBox(Handle, PAnsiChar(CheckSumModulo10(Barcode)), 'Stregkode', MB_OK);
3613 { if (CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1)) = Barcode) then
3614 MessageBox(Handle, 'ok', 'Stregkode', MB_OK)
3615 else
3616 MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3617 }
3618 Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3619
3620 MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3621 CheckCode();
3622 end;
3623
3624 end;
3625
3626
3627 //
3628 // Bladhus ***
3629 //
3630 procedure TMainForm.DownloadBladhusRuteskiftfil();
3631 const
3632 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3633
3634 var
3635 filnavn_input : string;
3636 filnavn_output : string;
3637 buttonSelected : Integer;
3638
3639 begin
3640 filnavn_input := BladhusRuteskiftfil_server; // hvis filen ikke findes vises 'no such file or directory'
3641 filnavn_output := BladhusRuteskiftfil_lokal;
3642
3643 case BladhusSted of
3644 00 : begin;
3645 end;
3646 01 : begin;
3647 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3648 if buttonSelected = mrOK then
3649 begin
3650 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3651 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3652 SkrivScanningLogFil(logTekst);
3653 try
3654 try
3655
3656 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3657 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3658 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3659 IdFTP1.Connect;
3660
3661 //IdFTP1.TransferType := ftASCII;
3662 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3663 try
3664 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3665 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3666 except on e:EIdConnClosedGracefully do
3667 begin
3668 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3669 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3670 end;
3671 end;
3672 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3673
3674 ListBox1.Items.Insert(0,TimeToStr(now) + ': Ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3675 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3676 SkrivScanningLogFil(logTekst);
3677
3678 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3679 logTekst := 'Ruteskift fil tjekkes.';
3680 SkrivScanningLogFil(logTekst);
3681
3682 finally
3683 IdFTP1.Disconnect;
3684 end;
3685
3686 except on e:exception do
3687 begin
3688 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3689 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3690 SkrivScanningLogFil(logTekst);
3691 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3692 [e.Message
3693 + CrLf + 'Host: '+IdFTP1.host
3694 + CrLf + 'Username: '+IdFTP1.Username
3695 ]
3696 );
3697 end;
3698 end;
3699 end
3700 else
3701 begin
3702 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3703 logTekst := 'Download af ruteskiftfil annulleret';
3704 SkrivScanningLogFil(logTekst);
3705 end;
3706 IndlesRuteskiftFil(filnavn_output);
3707 end;
3708 02 : begin;
3709 end;
3710 03 : begin;
3711 buttonSelected := MessageDlg('Henter ruteskift filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3712 if buttonSelected = mrOK then
3713 begin
3714 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3715 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3716 SkrivScanningLogFil(logTekst);
3717 try
3718 try
3719
3720 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3721 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3722 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3723 IdFTP1.Connect;
3724
3725 //IdFTP1.TransferType := ftASCII;
3726 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3727 try
3728 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3729 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3730 except on e:EIdConnClosedGracefully do
3731 begin
3732 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3733 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3734 end;
3735 end;
3736 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3737
3738 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute ruteskift fil gemt lokalt som ' + filnavn_output + '.');
3739 logTekst := 'Ruteskift fil gemt lokalt som ' + filnavn_output + '.';
3740 SkrivScanningLogFil(logTekst);
3741
3742 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil tjekkes.');
3743 logTekst := 'Ruteskift fil tjekkes.';
3744 SkrivScanningLogFil(logTekst);
3745
3746 finally
3747 IdFTP1.Disconnect;
3748 end;
3749
3750 except on e:exception do
3751 begin
3752 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3753 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3754 SkrivScanningLogFil(logTekst);
3755 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3756 [e.Message
3757 + CrLf + 'Host: '+IdFTP1.host
3758 + CrLf + 'Username: '+IdFTP1.Username
3759 ]
3760 );
3761 end;
3762 end;
3763 end
3764 else
3765 begin
3766 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af ruteskiftfil annulleret.');
3767 logTekst := 'Download af ruteskiftfil annulleret';
3768 SkrivScanningLogFil(logTekst);
3769 end;
3770 IndlesRuteskiftFil(filnavn_output);
3771 end;
3772 04 : begin;
3773 end;
3774 else
3775 ShowMessage('Ukendt Bladhus sted: ' + IntToStr(BladhusSted));
3776 end;
3777
3778 end;
3779
3780 procedure TMainForm.DownloadBladhusKontrolfil();
3781 const
3782 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3783
3784 var
3785 filnavn_input : string;
3786 filnavn_output : string;
3787 buttonSelected : Integer;
3788
3789 begin
3790 filnavn_input := BladhusKontrolfil_server; // hvis filen ikke findes vises 'no such file or directory'
3791 filnavn_output := BladhusKontrolfil_lokal;
3792
3793 case BladhusSted of
3794 01 :
3795 begin;
3796 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3797 if buttonSelected = mrOK then
3798 begin
3799 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3800 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3801 SkrivScanningLogFil(logTekst);
3802 try
3803 try
3804
3805 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3806 IdFTP1.Username:='nordjyske'; // hvis forkert vises 'login incorrect'
3807 IdFTP1.Password:='kew3ma9u'; // hvis forkert vises 'login incorrect'
3808 IdFTP1.Connect;
3809
3810 //IdFTP1.TransferType := ftASCII;
3811 // IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3812 try
3813 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3814 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3815 except on e:EIdConnClosedGracefully do
3816 begin
3817 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3818 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3819 end;
3820 end;
3821 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3822
3823 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3824 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3825 SkrivScanningLogFil(logTekst);
3826
3827 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3828 logTekst := 'Rute kontrol fil tjekkes.';
3829 SkrivScanningLogFil(logTekst);
3830
3831 finally
3832 IdFTP1.Disconnect;
3833 end;
3834
3835 except on e:exception do
3836 begin
3837 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3838 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3839 SkrivScanningLogFil(logTekst);
3840 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3841 [e.Message
3842 + CrLf + 'Host: '+IdFTP1.host
3843 + CrLf + 'Username: '+IdFTP1.Username
3844 ]
3845 );
3846 end;
3847 end;
3848 end
3849 else
3850 begin
3851 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3852 logTekst := 'Download af kontrolfil annulleret';
3853 SkrivScanningLogFil(logTekst);
3854 end;
3855 IndlesKontrolFil(filnavn_output);
3856 end;
3857 02 : begin;
3858 end;
3859 03 : begin;
3860 buttonSelected := MessageDlg('Henter rute kontrol filen ' + filnavn_input + ' fra DAO ftp server',mtConfirmation, mbOKCancel, 0);
3861 if buttonSelected = mrOK then
3862 begin
3863 ListBox1.Items.Insert(0,TimeToStr(now) + ': Henter ' + filnavn_input + ' fra DAO ftp serveren.');
3864 logTekst := 'Henter ' + filnavn_input + ' fra DAO ftp serveren.';
3865 SkrivScanningLogFil(logTekst);
3866 try
3867 try
3868
3869 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3870 IdFTP1.Username:='fd'; // hvis forkert vises 'login incorrect'
3871 IdFTP1.Password:='pu4aphedre'; // hvis forkert vises 'login incorrect'
3872 IdFTP1.Connect;
3873
3874 //IdFTP1.TransferType := ftASCII;
3875 IdFTP1.Get(filnavn_input, filnavn_output, True, False);
3876 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3877
3878 ListBox1.Items.Insert(0,TimeToStr(now) + ': Rute kontrol fil gemt lokalt som ' + filnavn_output + '.');
3879 logTekst := 'Rute kontrol fil gemt lokalt som ' + filnavn_output + '.';
3880 SkrivScanningLogFil(logTekst);
3881
3882 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Rute kontrol fil tjekkes.');
3883 logTekst := 'Rute kontrol fil tjekkes.';
3884 SkrivScanningLogFil(logTekst);
3885
3886 finally
3887 IdFTP1.Disconnect;
3888 end;
3889
3890 except on e:exception do
3891 begin
3892 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3893 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3894 SkrivScanningLogFil(logTekst);
3895 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3896 [e.Message
3897 + CrLf + 'Host: '+IdFTP1.host
3898 + CrLf + 'Username: '+IdFTP1.Username
3899 ]
3900 );
3901 end;
3902 end;
3903 end
3904 else
3905 begin
3906 ListBox1.Items.Insert(0,TimeToStr(now) + ': Download af kontrolfil annulleret.');
3907 logTekst := 'Download af kontrolfil annulleret';
3908 SkrivScanningLogFil(logTekst);
3909 end;
3910 IndlesKontrolFil(filnavn_output);
3911 end;
3912 04 : begin;
3913 end;
3914 else
3915 ShowMessage('Ukendt Bladhus sted ???') ;
3916 end;
3917
3918 end;
3919
3920 procedure TMainForm.SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
3921 const
3922 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3923
3924 var
3925 testsystem : String;
3926
3927 begin
3928 testsystem := '';
3929 if (Pos('omdeling.info',Url) = 0) then
3930 begin
3931 testsystem := 'TEST_';
3932 end;
3933 filnavn_output := testsystem + filnavn_output;
3934
3935 ListBox1.Items.Insert(0,TimeToStr(now) + ': Sender ' + filnavn_input + ' til DAO ftp serveren.');
3936 logTekst := 'Sender ' + filnavn_input + ' til DAO ftp serveren.';
3937 SkrivScanningLogFil(logTekst);
3938 try
3939 try
3940
3941 IdFTP1.host:='ftp.daoas.dk'; // hvis forkert vises 'socket error # 11001 host not found'
3942 IdFTP1.Username:='scannerprogram'; // hvis forkert vises 'login incorrect'
3943 IdFTP1.Password:='DaoScan2015'; // hvis forkert vises 'login incorrect'
3944 IdFTP1.Connect;
3945
3946 //IdFTP1.TransferType := ftASCII;
3947 try
3948 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
3949 IdFTP1.ChangeDir('fraScannerprogram');
3950 IdFTP1.Put(filnavn_input, filnavn_output, True);
3951 except on e:EIdConnClosedGracefully do
3952 begin
3953 // Her skal vi ikke gøre noget - men vi skal forespørge igen
3954 IdFTP1.Put(filnavn_input, filnavn_output, True);
3955 end;
3956 end;
3957 // hvis 3. parameter er false (filen må ikke overskrives) vises 'Destination file already exists' hvis filen findes på disken
3958
3959 logTekst := fil_type + ' fil sendt til DAO som ' + filnavn_output + '.';
3960 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
3961 SkrivScanningLogFil(logTekst);
3962
3963 finally
3964 IdFTP1.Disconnect;
3965 end;
3966
3967 except on e:exception do
3968 begin
3969 ListBox1.Items.Insert(0,TimeToStr(now) + ': Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username);
3970 logTekst := 'Fejl i FTP handling: ' + e.Message + ' Host: '+IdFTP1.host + ' Username: '+IdFTP1.Username;
3971 SkrivScanningLogFil(logTekst);
3972 raise exception.CreateFmt('Fejl i FTP handling:'+ CrLf + '%s',
3973 [e.Message
3974 + CrLf + 'Host: '+IdFTP1.host
3975 + CrLf + 'Username: '+IdFTP1.Username
3976 ]
3977 );
3978 end;
3979 end;
3980 end;
3981
3982 procedure TMainForm.UploadLogfilTilDAO();
3983 const
3984 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
3985
3986 var
3987 idag, imorgen : TDateTime;
3988 imorgenYmd : string;
3989 logFilnavn : string;
3990 filnavn_input : string;
3991 filnavn_output : string;
3992 buttonSelected : Integer;
3993 openDialog : TOpenDialog;
3994
3995 begin
3996 idag := Now;
3997 imorgen := IncDay(idag, 1); //adds 1 day(s)
3998 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
3999 if (FormatDateTime('hh:nn',idag) < '12:00') then
4000 begin
4001 imorgen := idag;
4002 end;
4003 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4004 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4005 filnavn_input := logFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4006 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4007
4008 buttonSelected := MessageDlg('Sender den aktuelle log fil (' + filnavn_input + ') til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4009 if buttonSelected = mrOK then
4010 begin
4011 SendFilTilDao('Log', filnavn_input, filnavn_output);
4012 end
4013 else
4014 begin
4015 buttonSelected := MessageDlg('Vil du sende en anden logfil til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4016 if buttonSelected = mrOK then
4017 begin
4018 // Create the open dialog object - assign to our open dialog variable
4019 openDialog := TOpenDialog.Create(self);
4020
4021 // Set up the starting directory to be the current one
4022 openDialog.InitialDir := GetCurrentDir + '\Logs';
4023
4024 // Only allow existing files to be selected
4025 openDialog.Options := [ofFileMustExist];
4026
4027 // Allow only .log files to be selected
4028 openDialog.Filter := 'Log filer|*.log';
4029
4030 // Display the open file dialog
4031 if openDialog.Execute then
4032 begin
4033 filnavn_input := openDialog.FileName; // hvis filen ikke findes vises 'no such file or directory'
4034 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.log';
4035 SendFilTilDao('Log', filnavn_input, filnavn_output);
4036 end
4037 else
4038 begin
4039 logTekst := 'Upload af log fil annulleret';
4040 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4041 SkrivScanningLogFil(logTekst);
4042 end;
4043
4044 // Free up the dialog
4045 openDialog.Free;
4046 end
4047 else
4048 begin
4049 logTekst := 'Upload af log fil annulleret';
4050 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4051 SkrivScanningLogFil(logTekst);
4052 end;
4053 end;
4054
4055 end;
4056
4057 procedure TMainForm.UploadInifilTilDAO();
4058 const
4059 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4060
4061 var
4062 idag, imorgen : TDateTime;
4063 imorgenYmd : string;
4064 iniFilnavn : string;
4065 filnavn_input : string;
4066 filnavn_output : string;
4067 buttonSelected : Integer;
4068
4069 begin
4070 idag := Now;
4071 imorgen := IncDay(idag, 1); //adds 1 day(s)
4072 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4073 if (FormatDateTime('hh:nn',idag) < '12:00') then
4074 begin
4075 imorgen := idag;
4076 end;
4077 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4078 iniFilnavn := ChangeFileExt(ExtractFileName(ExtractFileName(ParamStr(0))), '.ini');
4079 filnavn_input := iniFilnavn; // hvis filen ikke findes vises 'no such file or directory'
4080 filnavn_output := Sted + '_Scanning' + imorgenYmd + '_' + FormatDateTime('hhmmss',idag) + '.ini';
4081
4082 buttonSelected := MessageDlg('Sender ini filen ' + filnavn_input + ' til DAO ftp server',mtConfirmation, mbOKCancel, 0);
4083 if buttonSelected = mrOK then
4084 begin
4085 SendFilTilDao('Ini', filnavn_input, filnavn_output);
4086 end
4087 else
4088 begin
4089 logTekst := 'Upload af ini fil annulleret';
4090 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4091 SkrivScanningLogFil(logTekst);
4092 end;
4093
4094 end;
4095
4096 procedure TMainForm.Uploadlogfil1Click(Sender: TObject);
4097 begin
4098 UploadLogfilTilDAO();
4099 UploadInifilTilDAO();
4100 ListBox1.SetFocus; // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4101 end;
4102
4103 procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4104 begin
4105 DownloadBladhusKontrolfil();
4106 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4107 end;
4108
4109 procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4110 const
4111 crlf = Chr(13) + Chr(10) ; // Carriage return & Linefeed
4112
4113 begin
4114 IndlesManglendeScanningerListe();
4115 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4116 end;
4117
4118 procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4119 begin
4120 if (getProddag() = 'lørdag') then
4121 begin
4122 DownloadBladhusRuteskiftfil();
4123 end;
4124 ListBox1.SetFocus; // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4125 end;
4126
4127
4128 procedure TMainForm.IndlesManglendeScanningerAntal();
4129 var
4130 Node: IXMLNode;
4131
4132 URLStr : String;
4133 StedKode : String;
4134 WebSvar : String;
4135
4136 i : Integer;
4137
4138 PakkeType : String;
4139 TotalAntal : String;
4140 AntalProdDato : String;
4141
4142 CurrentPanel : TPanel;
4143
4144 begin
4145 ListBox2.Clear();
4146
4147 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4148 begin
4149 StedKode := BladhusStedKode[BladhusSted];
4150 end
4151 else
4152 begin
4153 StedKode := Sted;
4154 end;
4155
4156 URLStr := Format(Config.UrlHentPakkeAntal, [StedKode]);
4157
4158
4159 try
4160 WebSvar := IdHTTP1.Get(URLStr);
4161 except
4162 on e:EIdConnClosedGracefully do
4163 begin
4164 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4165 WebSvar := IdHTTP1.Get(URLStr);
4166 end;
4167 on e:exception do
4168 begin
4169 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4170 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4171 SkrivScanningLogFil(logTekst);
4172 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4173 end;
4174 end;
4175
4176
4177
4178 try
4179
4180 XMLDocument1.LoadFromXML(WebSvar);
4181
4182 for i:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4183 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4184
4185 PakkeType := Node.ChildValues['PakkeType'];
4186 TotalAntal := Node.ChildValues['TotalAntal'];
4187 AntalProdDato := Node.ChildValues['AntalProdDato'];
4188
4189
4190 CurrentPanel := nil;
4191
4192 if (PakkeType = 'natxpress') then
4193 begin
4194 CurrentPanel := PanelManglendePakker1;
4195 end;
4196
4197 if (PakkeType = 'daodirekte') then
4198 begin
4199 CurrentPanel := PanelManglendePakker4;
4200 end;
4201
4202 if (PakkeType = 'pakkeshop') then
4203 begin
4204 CurrentPanel := PanelManglendePakker5;
4205 end;
4206
4207 if (CurrentPanel <> nil) then
4208 begin
4209 CurrentPanel.Caption := TotalAntal;
4210 if ( StrToInt(TotalAntal) > 0) then
4211 begin
4212 CurrentPanel.Visible := true;
4213 end
4214 else
4215 begin
4216 CurrentPanel.Visible := false;
4217 end;
4218 end;
4219
4220
4221 end;
4222
4223
4224 except on e:exception do
4225 begin
4226 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4227 logTekst := 'Fejl i XML-format: '+e.Message;
4228 SkrivScanningLogFil(logTekst);
4229 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4230 end;
4231 end;
4232
4233
4234
4235 ListBox1.Items.Insert(0,'Pakkeantal indlæst - klar til scanning');
4236
4237 end;
4238
4239 procedure TMainForm.IndlesManglendeScanningerListe();
4240 var
4241 WebSvar : String;
4242 URLStr : String;
4243 StedKode : String;
4244 Node: IXMLNode;
4245 I: Integer;
4246 stregkode, modtagernavn, modtageradresse, kommentar : string;
4247 pakketype, tjekkodestatus : String;
4248 antalLiniefelter, antalFelterFundet, linienr : Integer;
4249 //pakketyper : TStrings;
4250 pakketyper : TDictionary<String, Integer>;
4251 tmpAntal : Integer;
4252
4253 time, timeSamlet : TTimingHelper;
4254
4255
4256 antlin : Integer;
4257
4258 antlinIdag, antlinSenere : Integer;
4259
4260 //XmlFelter : TStrings;
4261 XmlFelter : TDictionary<String, Integer>;
4262
4263 begin
4264
4265
4266 XmlFelter := TDictionary<String, Integer>.Create;
4267 pakketyper := TDictionary<String, Integer>.Create;
4268
4269 linienr := 0;
4270 ListBox2.Clear;
4271 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
4272 logTekst := 'Henter oversigt over pakker der endnu ikke er modtaget';
4273 SkrivScanningLogFil(logTekst);
4274 if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
4275 begin
4276 StedKode := BladhusStedKode[BladhusSted];
4277 end
4278 else
4279 begin
4280 StedKode := Sted;
4281 end;
4282
4283 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4284
4285
4286
4287 if (Scanningtype = '7') then
4288 begin
4289 URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4290 end
4291 else if (Scanningtype = '6') then
4292 begin
4293 URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4294 end
4295 else if (Scanningtype = '5') then
4296 begin
4297 URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4298 end
4299 else if (Scanningtype = '1') then
4300 begin
4301 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4302 end
4303 else if (Scanningtype = '4') then
4304 begin
4305 URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']); // Budleveringer
4306 end
4307 else
4308 begin
4309 exit;
4310 end;
4311 // 20150310: slut
4312
4313 time := TTimingHelper.create(); //DEBUG
4314 timeSamlet := TTimingHelper.create(); //DEBUG
4315
4316 try
4317 //raise EIdConnClosedGracefully.Create('test'); // KUN TIL TEST
4318 // URLStr := string(Utf8Encode(URLStr));
4319 WebSvar := IdHTTP1.Get(URLStr);
4320 except
4321 on e:EIdConnClosedGracefully do
4322 begin
4323 // Her skal vi ikke gøre noget - men vi skal forespørge igen
4324 WebSvar := IdHTTP1.Get(URLStr);
4325
4326
4327
4328 end;
4329 on e:exception do
4330 begin
4331 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i web forespørgsel: '+e.Message);
4332 logTekst := 'Fejl i web forespørgsel: '+e.Message;
4333 SkrivScanningLogFil(logTekst);
4334 raise exception.CreateFmt('Fejl i web forespørgsel: %s',[e.Message]);
4335 end;
4336 end;
4337 try
4338 time.stop('HTTP Load'); //DEBUG
4339
4340 XMLDocument1.LoadFromXML(WebSvar);
4341
4342 time.stop('XML Load'); //DEBUG
4343
4344
4345
4346
4347
4348
4349 antlin := 0;
4350 antlinIdag := 0;
4351 antlinSenere := 0;
4352
4353 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4354 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4355 if Node.NodeType = ntElement then begin
4356 if Node.NodeName = 'Stregkode' then
4357 begin
4358 Inc(antlin);
4359 // 20150306: start
4360 if not VarIsNull(Node.NodeValue) then
4361 begin
4362 if (pos('(', Node.NodeValue) = 0) then
4363 begin
4364 Inc(antlinIdag);
4365 end
4366 else
4367 begin
4368 Inc(antlinSenere);
4369 end;
4370 end;
4371 // 20150306: slut
4372 end;
4373 end;
4374 if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4375 begin
4376 XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4377 XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4378 end
4379 else
4380 begin
4381 XmlFelter.Add(Node.NodeName, 1);
4382 end;
4383
4384 end;
4385 antalLiniefelter := XmlFelter.Count;
4386 antalFelterFundet := 0;
4387 SetLength(stregkoderMedTjekkodeArray, 0); // reset fra tidligere brug
4388 SetLength(stregkoderMedTjekkodeArray, antlin); // sæt antal elementer i array
4389
4390 time.stop('Antal Linier');//DEBUG
4391
4392 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4393
4394 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4395 if (antlinSenere > 0) then
4396 begin
4397 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4398 end;
4399 logTekst := logTekst + '.';
4400
4401 SkrivScanningLogFil(logTekst);
4402 time.stop('Antal Linier2');//DEBUG
4403
4404
4405 for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4406 Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4407 if Node.NodeType = ntElement then begin
4408 if Node.NodeName = 'Stregkode' then begin
4409 if not VarIsNull(Node.NodeValue) then
4410 stregkode := Node.NodeValue;
4411 antalFelterFundet := antalFelterFundet + 1;
4412 end
4413 else if Node.NodeName = 'ModtagerNavn' then begin
4414 if not VarIsNull(Node.NodeValue) then
4415 modtagernavn := Node.NodeValue;
4416 antalFelterFundet := antalFelterFundet + 1;
4417 end
4418 else if Node.NodeName = 'ModtagerAdresse' then begin
4419 if not VarIsNull(Node.NodeValue) then
4420 modtageradresse := Node.NodeValue;
4421 antalFelterFundet := antalFelterFundet + 1;
4422 end
4423 else if Node.NodeName = 'Kommentar' then begin
4424 if not VarIsNull(Node.NodeValue) then
4425 kommentar := Node.NodeValue;
4426 antalFelterFundet := antalFelterFundet + 1;
4427 end
4428 else if Node.NodeName = 'PakkeType' then begin
4429 if not VarIsNull(Node.NodeValue) then
4430 pakketype := Node.NodeValue;
4431 antalFelterFundet := antalFelterFundet + 1;
4432 if ( pakketyper.ContainsKey(pakketype) ) then
4433 begin
4434 pakketyper.TryGetValue(pakketype, tmpAntal);
4435 pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4436 end
4437 else
4438 pakketyper.Add(pakketype, 1);
4439 end
4440 else if Node.NodeName = 'TjekkodeStatus' then begin
4441 if not VarIsNull(Node.NodeValue) then
4442 tjekkodestatus := Node.NodeValue;
4443 antalFelterFundet := antalFelterFundet + 1;
4444 if (tjekkodestatus = '-1') then
4445 begin
4446
4447 if (pos(' ', stregkode) > 0) then
4448 begin
4449 stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2); // Fjerner lige en evt. fremtidig dato fra feltet
4450 end
4451 else
4452 begin
4453 stregkoderMedTjekkodeArray[linienr] := stregkode;
4454 end;
4455 linienr := linienr + 1;
4456 end;
4457 end;
4458
4459
4460 if antalFelterFundet = antalLiniefelter then
4461 begin
4462 if (ScanningType = '1') then
4463 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4464 else if (ScanningType = '4') then
4465 ListBox2.Items.Add(pakketype+'; '+stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar)
4466 else if (ScanningType = '5') then
4467 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar+'; '+tjekkodestatus)
4468 else
4469 ListBox2.Items.Add(stregkode+'; '+modtagernavn+'; '+modtageradresse+'; '+kommentar);
4470 antalFelterFundet := 0;
4471 tjekkodestatus := '';
4472 end;
4473 end;
4474 end;
4475
4476
4477 time.stop('Fyld Listbox2');//DEBUG
4478
4479
4480 Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4481
4482
4483 for pakketype in pakketyper.Keys do
4484 begin
4485 pakketyper.TryGetValue(pakketype, tmpAntal);
4486 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4487 end;
4488
4489 // Free up the dictionary object
4490 pakketyper.Free;
4491
4492
4493
4494 // ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4495 logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4496 if (antlinSenere > 0) then
4497 begin
4498 logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4499 end;
4500 logTekst := logTekst + '.';
4501 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
4502 if (antlinSenere > 0) then
4503 begin
4504 StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
4505 end
4506 else
4507 begin
4508 StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4509 end;
4510
4511 if (Scanningtype = '1') then
4512 begin
4513 //antlinIdag := 9876; // til test af boksens udseende ved stort tal
4514 PanelManglendePakker1.Caption := IntToStr(antlinIdag + antlinSenere);
4515 if (antlinIdag + antlinSenere > 0) then
4516 begin
4517 PanelManglendePakker1.Visible := true;
4518 end
4519 else
4520 begin
4521 PanelManglendePakker1.Visible := false;
4522 end;
4523 end;
4524
4525 if (Scanningtype = '2') then
4526 begin
4527 PanelManglendePakker2.Caption := IntToStr(antlinIdag + antlinSenere);
4528 if (antlinIdag + antlinSenere > 0) then
4529 begin
4530 PanelManglendePakker2.Visible := true;
4531 end
4532 else
4533 begin
4534 PanelManglendePakker2.Visible := false;
4535 end;
4536 end;
4537
4538 if (Scanningtype = '3') then
4539 begin
4540 PanelManglendePakker3.Caption := IntToStr(antlinIdag + antlinSenere);
4541 if (antlinIdag + antlinSenere > 0) then
4542 begin
4543 PanelManglendePakker3.Visible := true;
4544 end
4545 else
4546 begin
4547 PanelManglendePakker3.Visible := false;
4548 end;
4549 end;
4550
4551 if (Scanningtype = '4') then
4552 begin
4553 PanelManglendePakker4.Caption := IntToStr(antlinIdag + antlinSenere);
4554 if (antlinIdag + antlinSenere > 0) then
4555 begin
4556 PanelManglendePakker4.Visible := true;
4557 end
4558 else
4559 begin
4560 PanelManglendePakker4.Visible := false;
4561 end;
4562 end;
4563
4564 if (Scanningtype = '5') then
4565 begin
4566 PanelManglendePakker5.Caption := IntToStr(antlinIdag + antlinSenere);
4567 if (antlinIdag + antlinSenere > 0) then
4568 begin
4569 PanelManglendePakker5.Visible := true;
4570 end
4571 else
4572 begin
4573 PanelManglendePakker5.Visible := false;
4574 end;
4575 end;
4576
4577 if (Scanningtype = '6') then
4578 begin
4579 PanelManglendePakker6.Caption := IntToStr(antlinIdag + antlinSenere);
4580 if (antlinIdag + antlinSenere > 0) then
4581 begin
4582 PanelManglendePakker6.Visible := true;
4583 end
4584 else
4585 begin
4586 PanelManglendePakker6.Visible := false;
4587 end;
4588 end;
4589
4590 except on e:exception do
4591 begin
4592 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Fejl i XML-format: '+e.Message);
4593 logTekst := 'Fejl i XML-format: '+e.Message;
4594 SkrivScanningLogFil(logTekst);
4595 raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
4596 end;
4597 end;
4598
4599 time.stop('Done');//DEBUG
4600 timeSamlet.stop('SamletTid');//DEBUG
4601
4602
4603 end;
4604
4605 procedure TMainForm.IndlesScanningLogFil();
4606 var
4607 SomeTxtFile : TextFile;
4608 buffer : string;
4609 S: string;
4610 idag, imorgen : TDateTime;
4611 imorgenYmd : string;
4612 logFilnavn : string;
4613
4614 begin
4615 idag := Now;
4616 imorgen := IncDay(idag, 1); //adds 1 day(s)
4617 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4618 if (FormatDateTime('hh:nn',idag) < '12:00') then
4619 begin
4620 imorgen := idag;
4621 end;
4622 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4623 logFilnavn := 'Logs/Scanning' + imorgenYmd + '.log';
4624 if FileExists(logFilnavn) then
4625 begin
4626 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæses.');
4627 logTekst := logFilnavn+' indlæses.';
4628 SkrivScanningLogFil(logTekst);
4629 AssignFile(SomeTxtFile, logFilnavn);
4630 try
4631 Reset(SomeTxtFile);
4632 while not EOF(SomeTxtFile) do
4633 begin
4634 ReadLn(SomeTxtFile, buffer) ;
4635 S := buffer;
4636 ListBox1.Items.Insert(0, S);
4637 end;
4638 finally
4639 CloseFile(SomeTxtFile);
4640 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logFilnavn+' indlæst.');
4641 ListBox1.Items.Insert(0,'');
4642 ListBox1.Items.Insert(0,'');
4643 ListBox1.Items.Insert(0,'');
4644 ListBox1.Items.Insert(0,'');
4645 ListBox1.Items.Insert(0,'');
4646 ListBox1.Items.Insert(0,'');
4647 end;
4648 end;
4649 end;
4650
4651 procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4652 var
4653 SomeTxtFile : TextFile;
4654 idag, imorgen : TDateTime;
4655 imorgenYmd : string;
4656 logFilnavn : string;
4657 //error : Integer;
4658
4659 begin
4660 if (SkrivLog = '1') then
4661 begin
4662 idag := Now;
4663 imorgen := IncDay(idag, 1); //adds 1 day(s)
4664 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4665 if (FormatDateTime('hh:nn',idag) < '12:00') then
4666 begin
4667 imorgen := idag;
4668 end;
4669 imorgenYmd := FormatDateTime('_yyyymmdd',imorgen);
4670 logFilnavn := 'Logs/' + 'Scanning' + imorgenYmd + '.log';
4671 // Get the current directory
4672 // dir := GetCurrentDir;
4673 // ShowMessage('Current directory = '+dir);
4674 // logFilnavn := dir + '\Logs\' + 'Scanning' + imorgenYmd + '.log';
4675 // ShowMessage('logFilnavn = '+logFilnavn);
4676
4677 if not DirectoryExists('Logs') then
4678 begin
4679 CreateDir('Logs');
4680 end;
4681
4682 AssignFile(SomeTxtFile, logFilnavn);
4683 if FileExists(logFilnavn) then
4684 begin
4685 try
4686 try
4687 Append(SomeTxtFile);
4688 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4689 except on e:exception do
4690 //ShowMessageFmt('File create failed with error %d',[error]);
4691 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke skrive til log filen...');
4692 end;
4693 finally
4694 CloseFile(SomeTxtFile);
4695 end;
4696 end
4697 else
4698 begin
4699 try
4700 try
4701 ReWrite(SomeTxtFile);
4702 WriteLn(SomeTxtFile, TimeToStr(now) + ': ' + tekst) ;
4703 except on e:exception do
4704 // ShowMessageFmt('File create failed with error %d',[error]);
4705 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' Kan ikke oprette/skrive til log filen...');
4706 end;
4707 finally
4708 CloseFile(SomeTxtFile);
4709 end;
4710 end;
4711 end;
4712 end;
4713
4714 procedure TMainForm.IndlesRuteskiftFil(var filnavn : string);
4715 var
4716 SomeTxtFile : TextFile;
4717 buffer : string;
4718 linnr : integer;
4719 S: string;
4720 A: TStrArray;
4721 idag, imorgen : TDateTime;
4722 imorgenYmd : string;
4723
4724 begin
4725 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4726 logTekst := filnavn+' indlæses.';
4727 SkrivScanningLogFil(logTekst);
4728 SetLength(ruteHverdagArray, 1);
4729 SetLength(ruteLordagArray, 1);
4730 idag := Now;
4731 imorgen := IncDay(idag, 1); //adds 1 day(s)
4732 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4733 if (FormatDateTime('hh:nn',idag) < '12:00') then
4734 begin
4735 imorgen := idag;
4736 end;
4737 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4738 if FileExists(filnavn) then
4739 begin
4740 AssignFile(SomeTxtFile, filnavn);
4741 linnr := 0;
4742 try
4743 Reset(SomeTxtFile);
4744 while not EOF(SomeTxtFile) do
4745 begin
4746 ReadLn(SomeTxtFile, buffer) ;
4747 S := buffer;
4748 SetLength(A,0);
4749 TUtils.Explode(A, ';', S);
4750 if (length(A) < 2) then
4751 begin
4752 TUtils.Explode(A, ',', S);
4753 end;
4754 if (length(A) > 1) then
4755 begin
4756 SetLength(ruteHverdagArray, linnr+1);
4757 SetLength(ruteLordagArray, linnr+1);
4758 ruteHverdagArray[linnr] := A[0];
4759 ruteLordagArray[linnr] := A[1];
4760 linnr := linnr+1;
4761 end;
4762 end;
4763 finally
4764 //ShowMessage(IntToStr(length(A)));
4765 CloseFile(SomeTxtFile);
4766 //ShowMessage(IntToStr(length(ruteHverdagArray)));
4767 if (linnr > 0) then
4768 begin
4769 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4770 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4771 SkrivScanningLogFil(logTekst);
4772 end
4773 else
4774 begin
4775 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4776 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4777 SkrivScanningLogFil(logTekst);
4778 PlaySound(PWideChar(Config.AlarmLyd));
4779 end;
4780 end;
4781 end
4782 else
4783 begin
4784 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4785 logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4786 SkrivScanningLogFil(logTekst);
4787 PlaySound(PWideChar(Config.AlarmLyd));
4788 end;
4789 end;
4790
4791 procedure TMainForm.IndlesKontrolFil(var filnavn : string);
4792 var
4793 SomeTxtFile : TextFile;
4794 buffer : string;
4795 linnr : integer;
4796 S: string;
4797 A: TStrArray;
4798 idag, imorgen : TDateTime;
4799 imorgenYmd : string;
4800
4801 begin
4802 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + filnavn+' indlæses.');
4803 logTekst := filnavn+' indlæses.';
4804 SkrivScanningLogFil(logTekst);
4805 SetLength(ruteArray, 1);
4806 SetLength(korelisteArray, 1);
4807 idag := Now;
4808 imorgen := IncDay(idag, 1); //adds 1 day(s)
4809 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4810 if (FormatDateTime('hh:nn',idag) < '12:00') then
4811 begin
4812 imorgen := idag;
4813 end;
4814 imorgenYmd := FormatDateTime('yyyy-mm-dd',imorgen);
4815 if FileExists(filnavn) then
4816 begin
4817 AssignFile(SomeTxtFile, filnavn);
4818 linnr := 0;
4819 try
4820 Reset(SomeTxtFile);
4821 while not EOF(SomeTxtFile) do
4822 begin
4823 ReadLn(SomeTxtFile, buffer) ;
4824 S := buffer;
4825 SetLength(A,0);
4826 TUtils.Explode(A, ';', S);
4827 if (length(A) < 3) then
4828 begin
4829 TUtils.Explode(A, ',', S);
4830 end;
4831 if (A[0]=imorgenYmd) then
4832 begin
4833 if (length(A) > 2) then
4834 begin
4835 SetLength(ruteArray, linnr+1);
4836 SetLength(korelisteArray, linnr+1);
4837 ruteArray[linnr] := A[1];
4838 korelisteArray[linnr] := A[2];
4839 linnr := linnr+1;
4840 end;
4841 end;
4842 end;
4843 finally
4844 //ShowMessage(IntToStr(length(A)));
4845 CloseFile(SomeTxtFile);
4846 //ShowMessage(IntToStr(length(ruteArray)));
4847 if (linnr > 0) then
4848 begin
4849 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.');
4850 logTekst := IntToStr(linnr)+' linier indlæst til '+imorgenYmd+'.';
4851 SkrivScanningLogFil(logTekst);
4852 end
4853 else
4854 begin
4855 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4856 logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4857 SkrivScanningLogFil(logTekst);
4858 PlaySound(PWideChar(Config.AlarmLyd));
4859 end;
4860 end;
4861 end
4862 else
4863 begin
4864 ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4865 logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4866 SkrivScanningLogFil(logTekst);
4867 PlaySound(PWideChar(Config.AlarmLyd));
4868 end;
4869 end;
4870
4871 //
4872 // Bladhus ***
4873 //
4874 function TMainForm.TjekKoreliste(var RuteNummer, Koreliste : string) : string;
4875 var
4876 i : Integer;
4877 svar : String;
4878
4879 begin
4880 //ShowMessage('Køreliste 1: '+korelisteArray[0]);
4881 // ShowMessage('Kontrollerer rute ' + RuteNummer + ' og køreliste ' + Koreliste + ' i kontrolfilen');
4882 // NB. Der er rod i begreberne RuteNummer og Koreliste - nogle steder er de byttet rundt!
4883 //ShowMessage('Kontrollerer rute ' + Koreliste + ' og køreliste ' + RuteNummer + ' i kontrolfilen');
4884
4885 svar := 'Køreliste ikke i kontrolfil';
4886 case BladhusSted of
4887 01 :
4888 begin;
4889 for i := 0 to length(ruteArray)-1 do
4890 begin
4891 if (Koreliste=ruteArray[i]) then
4892 begin
4893 svar := korelisteArray[i]; // returnerer den forventede køreliste
4894 end;
4895 end;
4896 end;
4897 // 02 : begin;
4898 //ShowMessage('02') ;
4899 // end;
4900 03 : begin;
4901 for i := 0 to length(ruteArray)-1 do
4902 begin
4903 if (Koreliste=ruteArray[i]) then
4904 begin
4905 svar := korelisteArray[i]; // returnerer den forventede køreliste
4906 end;
4907 end;
4908 end;
4909 // 04 : begin;
4910 //ShowMessage('04') ;
4911 // end;
4912 else
4913 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4914 end;
4915 if (RuteNummer = 'Rutenr') then // fra printertest funktionen
4916 svar := RuteNummer; // Dette svarer til at køreliste er godkendt uden kontrol fil
4917
4918 result := svar;
4919 end;
4920
4921 procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4922 begin
4923 //ShowMessage('Ændring ikke tilladt');
4924 // Her skal komme en 'rød skærm' alarm
4925 PlaySound(PWideChar(Config.AlarmLyd));
4926 MainForm.Color := clRed;
4927
4928
4929 RuteNummerST.Caption := '';
4930 BoghandlerNavnST.Caption := '';
4931 btnNulstil.Visible := true;
4932
4933 if (strMessage <> '') then
4934 begin
4935 ListBox1.Items.Insert(0, strMessage);
4936 KommentarST.Caption := strMessage;
4937 end;
4938
4939 Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4940
4941 end;
4942
4943 function TMainForm.getProddato() : TDate;
4944 var
4945 idag, imorgen : TDateTime;
4946 imorgenYmd : string;
4947
4948 begin
4949 idag := Now;
4950 imorgen := IncDay(idag, 1); //adds 1 day(s)
4951 // Hvis vi er efter midnat og inden middag skal vi bruge dagsdato som imorgen
4952 if (FormatDateTime('hh:nn',idag) < '12:00') then
4953 begin
4954 imorgen := idag;
4955 end;
4956 imorgenYmd := FormatDateTime('dd-mm-yyyy',imorgen);
4957 result := StrToDateTime(imorgenYmd);
4958 end;
4959
4960 function TMainForm.getProddag() : String;
4961 begin
4962 // ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4963 result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4964 //result := 'lørdag'; // MENS VI TESTER kan vi fremtvinge lørdag situation her
4965 end;
4966
4967 function TMainForm.retRutenummer(rutenummer : String) : String;
4968 var
4969 i : Integer;
4970 svar : String;
4971
4972 begin
4973 svar := rutenummer;
4974 case BladhusSted of
4975 01 :
4976 begin;
4977 //ShowMessage('01') ;
4978 end;
4979 // 02 : begin;
4980 //ShowMessage('02') ;
4981 // end;
4982 03 : begin;
4983 for i := 0 to length(ruteHverdagArray)-1 do
4984 begin
4985 if (rutenummer=ruteHverdagArray[i]) then
4986 begin
4987 svar := ruteLordagArray[i]; // returnerer den forventede lørdagsrute
4988 end;
4989 end;
4990 end;
4991 // 04 : begin;
4992 //ShowMessage('04') ;
4993 // end;
4994 else
4995 svar := rutenummer; // Dette svarer til at rute ikke skal ændres
4996 end;
4997 result := svar;
4998 end;
4999
5000
5001 procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
5002 begin
5003 if Scanogstjekkoden1.Checked then
5004 begin
5005 chkScanTjekkode.Checked := true;
5006 end
5007 else
5008 begin
5009 chkScanTjekkode.Checked := false;
5010 end;
5011 end;
5012
5013
5014 //Nedarvet fra IParentForm
5015 procedure TMainForm.Msg( msg : string);
5016 begin
5017 ShowMessage(msg);
5018 end;
5019
5020 //Nedarvet fra IParentForm
5021 procedure TMainForm.LogMessage( msg : string);
5022 begin
5023 ListBox1.Items.Insert(0, msg);
5024 SkrivScanningLogFil(msg);
5025 end;
5026
5027
5028 //Nedarvet fra IParentForm
5029 procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
5030 begin
5031
5032 PrinterstatusStaticText1.Caption := txt;
5033 if (alert) then
5034 begin
5035 PrinterstatusStaticText1.Font.Color := clBlack;
5036 PrinterstatusStaticText1.Color := MainForm.Color;
5037 PrinterstatusStaticText1.Transparent := True;
5038 end
5039 else
5040 begin
5041 PrinterstatusStaticText1.Font.Color := clRed;
5042 PrinterstatusStaticText1.Color := clWhite;
5043 PrinterstatusStaticText1.Transparent := true;
5044 end;
5045 end;
5046
5047 //Nedarvet fra IParentForm
5048 function TMainForm.GetFormObject() : TForm;
5049 begin
5050 Result := self;
5051 end;
5052
5053 //Nedarvet fra IParentForm
5054 function TMainForm.GetXMLDocument() : TXMLDocument;
5055 begin
5056 Result := XMLDocument1
5057 end;
5058
5059
5060 end.
5061

  ViewVC Help
Powered by ViewVC 1.1.20