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

Contents of /dao/DelphiScanner/Main.pas

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.20